/* * File: points.h * Project: DXF to RIB * (c) SPDsoft Tuesday, June 21, 1994, GTIC */ #ifndef M_PI # define M_PI 3.14159265358979323846 # define M_PI_2 1.57079632679489661923 # define M_PI_4 0.78539816339744830962 # define M_1_PI 0.31830988618379067154 # define M_2_PI 0.63661977236758134308 # define M_2_SQRTPI 1.12837916709551257390 #endif #define _2_M_PI 6.2831853072 #define Float float typedef Float Point3D[3]; typedef Float Matrix[4][4]; #define COS(x) ((Float)cos((double)(x))) #define SIN(x) ((Float)sin((double)(x))) #define RADS(a) ((Float)((a)*M_PI/180.0)) #define DEGS(a) ((Float)((a)*180.0/M_PI)) #define eje_x 1.0,0.0,0.0 #define eje_y 0.0,1.0,0.0 #define eje_z 0.0,0.0,1.0 typedef struct { Float Radio, /* >= 0 */ Lat, /* 0 <= Lat < 2*PI */ Long; /* 0 <= Long < PI */ } PEsf; typedef Float Matrix2D[3][2]; typedef Float Point4D[4]; extern Float ModV(Point3D vect); extern void NormV(Point3D vect_i, Point3D vect_o); extern void CopV(Point3D vect_i, Point3D vect_o); extern void SumV(Point3D vect_1,Point3D vect_2,Point3D vect_o); extern void ResV(Point3D vect_1,Point3D vect_2,Point3D vect_o); extern void ProdvV(Point3D vect_1,Point3D vect_2,Point3D vect_o); extern Float ProdeV(Point3D vect_1,Point3D vect_2); extern void ConsV(Float k,Point3D vect_i,Point3D vect_o); extern Float AngrV(Point3D vect_1,Point3D vect_2); extern Float AnggV(Point3D vect_1,Point3D vect_2); extern Float DistV(Point3D vect_1,Point3D vect_2); extern void printfV(int id,Point3D vect); extern void PEsfAV(PEsf *pesfi,Point3D vecto); extern void VAPEsf( Point3D vecti, PEsf *pesfo ); extern void Identity3D(Matrix M); extern void Translate3D(Float Tx, Float Ty, Float Tz, Matrix M); extern void Rotate3D( char Axis, /* axis about which to rotate */ Float Angle, /* how much to rotate */ Matrix M /* return matrix */ ); extern void ProdM3DV( Matrix M, Point3D V, Float D4th, Point3D Result ); extern void ProdM4DV( Matrix M, Point4D V, Point4D Result ); extern void ProdM3DM( Matrix Mio, Matrix M ); extern void Identity2D(Matrix2D M); extern void Scale2D(Matrix2D M, Float Sx, Float Sy); extern void Translate2D(Matrix2D M, Float Tx, Float Ty); extern void Rotate2D(Matrix2D M, Float Theta); extern void Shear2D(Matrix2D M, Float Sx, Float Sy); extern void Scale3D(Float Sx, Float Sy, Float Sz, Matrix M); /*************************************************************************/ extern Point3D ElEjeDeGiro; #define EJE_GIRO ElEjeDeGiro[0], ElEjeDeGiro[1], ElEjeDeGiro[2]