#27620 - ProblemBaby - Sun Oct 17, 2004 12:56 pm
Hi
Here is a function Ive wrote:
As you probably understand cam_x,cam_y,cam_z,cam_yaw,cam_roll
are the camera position and rotation.
Now my problem...
How do I draw a mode7 world if I for example want it to reach from
(-8, 0, -8) - (8, 0, 8)
And is the zoom computed exactly as Ive done for objects to find the scale?
plz help
Here is a function Ive wrote:
Code: |
void TransformCoordinate(FIXED x, FIXED y, FIXED z) { FIXED rx, ry, rz, tx, ty, tz, nx, ny; rx = x - cam_x; ry = y - cam_y; rz = z - cam_z; tx = rx; tz = rz; rx = FixedMul(tx, COS[cam_yaw]) - FixedMul(tz, SIN[cam_yaw]); rz = FixedMul(tx, SIN[cam_yaw]) ) + FixedMul(tz, COS[cam_yaw]); ty = ry; tz = rz; ry = FixedMul(ty, COS[cam_roll]) - FixedMul(tz, SIN[cam_roll]); rz = FixedMul(ty, SIN[cam_roll]) + FixedMul(tz, COS[cam_roll]); nx = 120 + FixedToInt(FixedDiv((FixedMul(rx, VIEWDISTANCE)), rz)); ny = 80 - FixedToInt(FixedDiv((FixedMul(ry, VIEWDISTANCE)), rz)); if (nx >= 0 && nx < 240 && ny >= 0 && ny < 160) DrawPixel(nx, ny); } |
As you probably understand cam_x,cam_y,cam_z,cam_yaw,cam_roll
are the camera position and rotation.
Now my problem...
How do I draw a mode7 world if I for example want it to reach from
(-8, 0, -8) - (8, 0, 8)
And is the zoom computed exactly as Ive done for objects to find the scale?
Code: |
xscale=FixedMul(srcwidth, FixedDiv(256, FixedDiv((destwidth<<8), rz))); yscale=FixedMul(srcheight, FixedDiv(256, FixedDiv((destheight<<8), rz))); |
plz help