00001 #ifndef GEOMH
00002 #define GEOMH
00003
00004 #include "interval.h"
00005 #include <gsl/gsl_linalg.h>
00006
00034 boolean pointLeftOfLine(double px,double py,
00035 double x1,double y1,double x2,double y2);
00036
00054 boolean pointRightOfLine(double px,double py,
00055 double x1,double y1,double x2,double y2);
00056
00068 void ComputeBoundingBox(unsigned int n,double *x,double *y,
00069 Tinterval *ix,Tinterval *iy);
00070
00084 void ComputeBoundingBox3d(unsigned int n,double *x,double *y,double *z,
00085 Tinterval *ix,Tinterval *iy,Tinterval *iz);
00086
00101 boolean RectangleCircleClipping(double r2,
00102 Tinterval *x,Tinterval *y,
00103 Tinterval *x_new,Tinterval *y_new);
00104
00105
00122 boolean BoxSphereClipping(double r2,
00123 Tinterval *x,Tinterval *y,Tinterval *z,
00124 Tinterval *x_new,Tinterval *y_new,Tinterval *z_new);
00125
00140 boolean RectangleParabolaClipping(Tinterval *x,double alpha,Tinterval *y,
00141 Tinterval *x_new,Tinterval *y_new);
00142
00159 boolean BoxSaddleClipping(Tinterval *x,Tinterval *y,double alpha,Tinterval *z,
00160 Tinterval *x_new,Tinterval *y_new,Tinterval *z_new);
00161
00172 void DefineNormalVector(double *v,double *n);
00173
00183 void CrossProduct(double *v1,double *v2,double *v3);
00184
00195 double DotProduct(double *v1,double *v2);
00196
00213 int tolerant_SV_decomp(int M,int N,gsl_matrix *U,gsl_matrix *V,gsl_vector* S);
00214
00215 #endif