/* Steven Andrews 2/17/06 */ /* See documentation called Geometry_doc.doc */ /* Copyright 2006 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __Geometry_h #define __Geometry_h // Normal double Geo_LineNormal(double *pt1,double *pt2,double *ans); double Geo_LineNormal3D(double *pt1,double *pt2,double *point,double *ans); double Geo_TriNormal(double *pt1,double *pt2,double *pt3,double *ans); // Point in int Geo_PtInTriangle(double *pt1,double *pt2,double *pt3,double *norm,double *test); int Geo_PtInSlab(double *pt1,double *pt2,double *test,int dim); int Geo_PtInSphere(double *test,double *cent,double rad,int dim); // To Rect void Geo_Semic2Rect(double *cent,double rad,double *outvect,double *r1,double *r2,double *r3); void Geo_Hemis2Rect(double *cent,double rad,double *outvect,double *r1,double *r2,double *r3,double *r4); void Geo_Cyl2Rect(double *pt1,double *pt2,double rad,double *r1,double *r2,double *r3,double *r4); // Cross double Geo_LineXLine(double *l1p1,double *l1p2,double *l2p1,double *l2p2,double *crss2ptr); double Geo_LineXSphs(double *pt1,double *pt2,double *cent,double rad,int dim,double *crss2ptr); double Geo_LineXCyl2s(double *pt1,double *pt2,double *cp1,double *cp2,double *norm,double rad,double *crss2ptr); double Geo_LineXCyls(double *pt1,double *pt2,double *cp1,double *cp2,double rad,double *crss2ptr); // Cross aabbb int Geo_LineXaabb2(double *pt1,double *pt2,double *norm,double *bpt1,double *bpt2); int Geo_TriXaabb3(double *pt1,double *pt2,double *pt3,double *norm,double *bpt1,double *bpt2); int Geo_RectXaabb2(double *r1,double *r2,double *r3,double *bpt1,double *bpt2); int Geo_RectXaabb3(double *r1,double *r2,double *r3,double *r4,double *bpt1,double *bpt2); int Geo_CircleXaabb2(double *cent,double rad,double *bpt1,double *bpt2); int Geo_SphsXaabb3(double *cent,double rad,double *bpt1,double *bpt2); int Geo_CylisXaabb3(double *pt1,double *pt2,double rad,double *bpt1,double *bpt2); // Approx. cross aabb int Geo_SemicXaabb2(double *cent,double rad,double *outvect,double *bpt1,double *bpt2); int Geo_HemisXaabb3(double *cent,double rad,double *outvect,double *bpt1,double *bpt2); int Geo_CylsXaabb3(double *pt1,double *pt2,double rad,double *bpt1,double *bpt2); // Volumes double Geo_SphVolume(double rad,int dim); double Geo_SphOLSph(double *cent1,double *cent2,double r1,double r2,int dim); #endif