tjmonk15

08-04-2004, 09:19 AM

i lost where my topic was so here is a new one.

I am trying to render a 3d object on a 2d plane in VB. i dont care about speed, i just want to learn how to do it.

i have a base app running. it will display a cube(was tryin to draw out a large map...but i decided to downsize to a cube for now) however, the cube is in the incorrect perspective.

here is my code to update the camera:

camera.magxy = Sqr((width / 2) ^ 2 + (height / 2) ^ 2)

camera.magxz = Sqr((width / 2) ^ 2 + (getHighestpoint() + 10) ^ 2)

camera.x = camera.magxy * Cos((camera.yaw * (pi / 180)))

camera.y = camera.magxy * Sin((camera.yaw * (pi / 180)))

camera.z = camera.magxz * Sin((camera.pitch * (pi / 180)))camera is a vector i made. my vectors have an x,y,z, a pitch, a yaw, and a magnitude for the xy plane and the xz plane.

width is the width of the object

height is the height of the object

here is my code to diplay the cube

this section is told by the rest of my code to draw a line from paint a, to point b

'second attempt

If cz - z1 = 0 Then z1 = z1 + 1 'prevent division by zero

mx1 = Sqr((cx - x1) ^ 2 + (cz - z1) ^ 2) * Cos(Atn((cx - x1) / (cz - z1)) * (pi / 180))

my1 = Sqr((cy - y1) ^ 2 + (cz - z1) ^ 2) * Cos(Atn((cy - y1) / (cz - z1)) * (pi / 180))

If cz - z2 = 0 Then z2 = z2 + 1 'prevent division by zero

mx2 = Sqr((cx - x2) ^ 2 + (cz - z2) ^ 2) * Cos(Atn((cx - x2) / (cz - z2)) * (pi / 180))

my2 = Sqr((cy - y2) ^ 2 + (cz - z2) ^ 2) * Cos(Atn((cy - y2) / (cz - z2)) * (pi / 180))

'resolution will be (screen width of height)/radius

mx1 = mx1 * (9615 / radius)

my1 = my1 * (9615 / radius)

mx2 = mx2 * (9615 / radius)

my2 = my2 * (9615 / radius)

Line (mx1, my1)-(mx2, my2)as it says this is my second approach to rendering.

the last block of code i use to simply fit the object dynamically in the window.

any help PLEASE!!!! this code will draw the cube, but out of perspective, what am i doing wrong?

I am trying to render a 3d object on a 2d plane in VB. i dont care about speed, i just want to learn how to do it.

i have a base app running. it will display a cube(was tryin to draw out a large map...but i decided to downsize to a cube for now) however, the cube is in the incorrect perspective.

here is my code to update the camera:

camera.magxy = Sqr((width / 2) ^ 2 + (height / 2) ^ 2)

camera.magxz = Sqr((width / 2) ^ 2 + (getHighestpoint() + 10) ^ 2)

camera.x = camera.magxy * Cos((camera.yaw * (pi / 180)))

camera.y = camera.magxy * Sin((camera.yaw * (pi / 180)))

camera.z = camera.magxz * Sin((camera.pitch * (pi / 180)))camera is a vector i made. my vectors have an x,y,z, a pitch, a yaw, and a magnitude for the xy plane and the xz plane.

width is the width of the object

height is the height of the object

here is my code to diplay the cube

this section is told by the rest of my code to draw a line from paint a, to point b

'second attempt

If cz - z1 = 0 Then z1 = z1 + 1 'prevent division by zero

mx1 = Sqr((cx - x1) ^ 2 + (cz - z1) ^ 2) * Cos(Atn((cx - x1) / (cz - z1)) * (pi / 180))

my1 = Sqr((cy - y1) ^ 2 + (cz - z1) ^ 2) * Cos(Atn((cy - y1) / (cz - z1)) * (pi / 180))

If cz - z2 = 0 Then z2 = z2 + 1 'prevent division by zero

mx2 = Sqr((cx - x2) ^ 2 + (cz - z2) ^ 2) * Cos(Atn((cx - x2) / (cz - z2)) * (pi / 180))

my2 = Sqr((cy - y2) ^ 2 + (cz - z2) ^ 2) * Cos(Atn((cy - y2) / (cz - z2)) * (pi / 180))

'resolution will be (screen width of height)/radius

mx1 = mx1 * (9615 / radius)

my1 = my1 * (9615 / radius)

mx2 = mx2 * (9615 / radius)

my2 = my2 * (9615 / radius)

Line (mx1, my1)-(mx2, my2)as it says this is my second approach to rendering.

the last block of code i use to simply fit the object dynamically in the window.

any help PLEASE!!!! this code will draw the cube, but out of perspective, what am i doing wrong?