[comp.graphics] need help

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