Re: A89: 3d programming


[Prev][Next][Index][Thread]

Re: A89: 3d programming




When you say like x.sin(a) do you mean X times the sine of A, or does the 
dot mean something else?


At 01:46 AM 9/8/00, you wrote:
>There are many way to perform 3d programming, some of them being very
>simples but not very efficients. In fact all depend of what exactly you want
>to do. Do you want just a 3d object that is moving in front of you, like
>3dlib does ? Or do you really want to be able to move inside a virtual world
>?
>
>In the first case, it is very easy to display a three dimensionnal scene.
>You just have to apply some basic equations, you don't need to understand
>them for your first try.
>So, let's say that your 3d object is defined by a list of plots, each of one
>having (x,y,z) coordinates. The first thing you have to do is to convert
>each of your 3d plot into 2d-coordinates (x', y'), in order to be able to
>display it on the screen. That is very easy to do, you just have to use the
>following formulas :
>
>x' = (x * d) / (z + d)
>y' = (y * d) / (z + d)
>
>Here, d is a constant that in theory define the distance in pixels between
>your eyes and the screen. 128 is a good value for it.
>After that, it is easy to stroke lines between your plots, for example by
>using graphlib::fline.
>
>The second thing you may want to do is to perform rotations on your object.
>Then again, you can use the following formulas without understanding them.
>Those apply on the 3d-coordinates :
>
>Let's say "a" is the angle.
>
>For a rotation around Z axis :
>x' = x.cos(a) - y.sin(a)
>y' = x.sin(a) + y.cos(a)
>z' = z
>
>(Now, I'm not pretty sure of the following formulas)
>For a rotation aroud Y axis :
>x' = z.sin(a) + x.sin(a)
>y' = y
>z' = z.cos(a) - x.sin(a)
>
>For a rotation around X axis :
>x' = x
>y' = y.cos(a) - z.sin(a)
>z' = y.sin(a) + z.sin(a)
>
>After the rotations, you have to apply the same old formula to convert
>3d-coordinates into 2d.
>
>I'm not sure that is enough to write a 3d game. Anyway, you should first try
>to play with those ones, to be familiar with 3d basis. Then, look around for
>a good 3d tutorial (there are many of them on the web, as well as book about
>3d in libraries).




Follow-Ups: References: