PDA

View Full Version : simple ray cast



01-19-2002, 06:00 AM
Hey people.
I really need your help.

I'm doing a very basic ray casting.The eye is at (0,0,-f)
and the view window is square with center is in (0,0,0),sphere intersect,
without shading or light. I have this effect that bothers me:
The spheres look fine (cycle) when their center located at (0,0,something)
but when the center moves some distance in x or y direction
the sphere starts to look (not at once) more like an allipse (is that effect correct??).

when I add shading (eye = light source) those spheres look ugly so have to correct in
the previous stage.

the simple code:

void RayCast(Scene myscene,Image *result)
{
int x,y;
int w,h;
Point E,P0,L0;
Vector d;
Vector dVx = {1.0,0.0,0.0};
Vector dVy = {0.0,1.0,0.0};
Line ray;
Color col;

w = myscene.width; /* (2*w)*(2*h) image and view window size (one to one pixel) */
h = myscene.height;
E = myscene.eye;

P0.x = -w;
P0.y = -h;
P0.z = 0.0;
L0 = P0;

for(y=-h; y<h; y++) {
P0=L0;
for(x=-w; x<w; x++) {
ray.point = P0;
vminus(P0,E,d); /* d = P0-E */
vnormalize(d);
ray.direction = d;

col = Ray_Trace(ray,myscene);
SetPixel(result,col,x+w,y+h); /* start with (0,0) */

vinc(P0,dVx); /* P0 += dVx */
}

vinc(L0,dVy);
}

}


Thank you.
Best Wishes.

zed
01-19-2002, 11:37 AM
http://www.students.tut.fi/~warp/povVFAQ/misconceptions.html