upl@puff.WISC.EDU (Future Unix Gurus) (06/23/87)
This is my first posting, so please forgive any breaches in net ettiquete In my free time I've been working on a 3-d graphics system for my micro, and along the way I decided to write a *simple* flight simulator. I had little problem with the actual graphics routines, but I ran into problems simulating the physics of the aircraft in flight, so I decided to simulate something bal- listic like a missle or a jet, which would be easier to program. I'm using the standard cartesion coord. space. Consider a pilot flying a jet parallel to the ground -- here are the controls I wish to simulate: If the pilot pushes the stick left or right, this causes the plane to rotate about its Z axis, WITHOUT affecting the planes (jets) direction vector (the translate offsets remain the same). moving the 'stick' forward or backwards causes the nose of the jet to raise or lower (all relative , of course) which does affect the jets vector of motion. What I need is the outline of an algorithim which would be a front end to the actual graphics package. This program would pass the graphics package (which works in cartesian coordinate space) the ROT values for the X,Y,Z axis, as well as the translate values (X,Y,Z). The front-end program would poll the input of some device (say a joystick with four directions) and act on then accordingly. One of my basic problems is simulating rotation about an arbitrary axis (using cartesion coordinates) without using time consuming vector equations (and hence square roots). I thought that since the 'jets' movement would be incremental, I could calculate the rotation axis once, and than figure out how it changes using a digital differece routine. Any help here? I thought this would be a relatively simple problem, but it has given more problems than I warranted . I've tried working with other coordinate systems, such as spherical, as well as a few I created, but this didn't really get me anywhere. This should be easy (shouln't it?) Is there something I'm missing? Am I going about this the wrong way? Help! -Eric Bazan