/* 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
