Nick Slavens Yaroze STUFF

New 

 

Projects 

 

References 

 

Links 

 

Utility 

 

Tutorial 

 

Tips 

 

Spot the Yaroze 

 

Biblio 

 
 

 

Trig Library - download

Since GNU treats inline functions slightly differently to CW the 1st thing to note is that if you are using GNU change the line in trig.h that reads

//#define GNU_C

to

#define GNU_C

the makefile is for the GNU C trigtest program
the trig.mcp file is for the CW trigtest program

The angles are defined as positive integers 0-4095 clockwise from due north
0 degrees = 0 PSX units
90 degrees = 1024 PSX units
180 degrees = 2048 PSX units
270 degrees = 3096 PSX units (same as -90 degrees)
360 degrees = 4096 PSX units

The function values are in 12bit fixed point. so
1.0 = 4096 (this is #defined in libps.h as ONE)
0.5 = 2048
etc.
For more info on fixed point maths go to
Rob Harveys site.

Function Descriptions

Conversion
int Deg2PSX(int DegAngle) - converts from angle in degrees to angle in PSX. Returns angle in PSX units
int PSX2Deg(int PSXAngle) - converts from angle in PSX units to angle in degrees. Returns angle in degrees
 
PSX unit functions
int TanP(int PSXAngle) - returns Tan of PSX angle. Return Value is 12 bit fixed point
int SinP(int PSXAngle) - returns Sin of PSX angle. Return Value is 12 bit fixed point
int CosP(int PSXAngle) - returns Cos of PSX angle. Return Value is 12 bit fixed point
int ATanP(int X) - returns Atan of X (X is in 12 bit fixed point, angle returned in PSX units)
int ASinP(int X) - returns Asin of X (X is in 12 bit fixed point, angle returned in PSX units)
int ACosP(int X) - returns Acos of X (X is in 12 bit fixed point, angle returned in PSX units)
 
Degree functions
int TanD(int DegAngle) - returns Tan of angle. Return Value is 12 bit fixed point
int SinD(int DegAngle) - returns Sin of angle. Return Value is 12 bit fixed point
int CosD(int DegAngle) - returns Cos of angle. Return Value is 12 bit fixed point
int ATanD(int X) - returns Atan of X (X is in 12 bit fixed point, angle returned in degrees)
int ASinD(int X) - returns Asin of X (X is in 12 bit fixed point, angle returned in degrees)
int ACosD(int X) - returns Acos of X (X is in 12 bit fixed point, angle returned in degrees)
 
Misc
u_long ISqrt(u_long X) - returns integer square root of X
void TrigTest(void) - tests all of the above functions


Usage

to find the angle A of the above triangle

val=(dx*4096)/dy;        
val=(dx*ONE)/dy          // alternatively for better readability use ONE
A=ATanP(val);            // A is angle in PSX units
A=ATanD(val);            // A is angle in degrees

Similarly knowing the angle A and length dy find dx

A in degrees

val=TanD(A);
dx=(val*dy)/ONE;

A in PSX units

val=TanP(A);
dx=(val*dy)/ONE;
Feedback & Comments please  NickSlaven@bigfoot.com  Last Update - 06 February 1999 12:38