WTFIT
Geometry.h
Go to the documentation of this file.
1 #ifndef _GEOMETRY_H
10 #define _GEOMETRY_H
11 
12 #include <Debug.h>
13 
14 namespace wtfit{
15 
16  class Geometry : public Debug{
17 
18  public:
19 
20  // 1) constructors, destructors, operators, etc.
21  Geometry();
22 
23  virtual ~Geometry();
24 
30  static double angle(
31  const double *vA0, const double *vA1,
32  const double *vB0, const double *vB1);
33 
42  static bool areVectorsColinear(const double *vA0, const double *vA1,
43  const double *vB0, const double *vB1,
44  vector<double> *coefficients = NULL,
45  const double *tolerance = NULL);
46 
58  const double *p0, const double *p1, const double *p,
59  vector<double> &baryCentrics, const int &dimension = 3);
60 
73  const double &x0, const double &y0,
74  const double &x1, const double &y1,
75  const double &x, const double &y,
76  vector<double> &baryCentrics);
77 
88  const double *p0, const double *p1, const double *p2,
89  const double *p,
90  vector<double> &baryCentrics);
91 
103  const float *p0, const float *p1, const float *p2,
104  const float *p,
105  vector<double> &baryCentrics);
106 
119  static bool computeSegmentIntersection(
120  const double &xA, const double &yA, const double &xB, const double &yB,
121  const double &xC, const double &yC, const double &xD, const double &yD,
122  double &x, double &y);
123 
129  static int computeTriangleAngles(
130  const double *p0, const double *p1, const double *p2,
131  vector<double> &angles);
132 
139  static int computeTriangleArea(
140  const double *p0, const double *p1, const double *p2,
141  double &area);
142 
150  static int crossProduct(
151  const double *vA0, const double *vA1,
152  const double *vB0, const double *vB1,
153  vector<double> &crossProduct);
154 
160  static int crossProduct(const double *vA, const double *vB,
161  double *vC);
162 
168  static double distance(const double *p0, const double *p1,
169  const int &dimension = 3);
170 
176  static double distance(const float *p0, const float *p1,
177  const int &dimension = 3);
178 
185  static double dotProduct(
186  const double *vA0, const double *vA1,
187  const double *vB0, const double *vB1);
188 
193  static double dotProduct(const double *vA,
194  const double *vB);
195 
202  static int getBoundingBox(const vector<vector<double> > &points,
203  vector<pair<double, double>> &bBox);
204 
211  static bool isPointInTriangle(const double *p0, const double *p1,
212  const double *p2, const double *p);
213 
220  static bool isPointInTriangle(const float *p0, const float *p1,
221  const float *p2, const float *p);
222 
232  static bool isPointOnSegment(const double &x, const double &y,
233  const double &xA, const double &yA, const double &xB, const double &yB);
234 
243  static bool isPointOnSegment(const double *p,
244  const double *pA, const double *pB, const int &dimension = 3);
245 
251  static bool isTriangleColinear(
252  const double *p0, const double *p1, const double *p2,
253  const double *tolerance = NULL);
254 
258  static double magnitude(const double *v);
259 
263  static double magnitude(const double *o, const double *d);
264 
265  protected:
266 
267  };
268 }
269 
270 #endif
static bool isPointOnSegment(const double &x, const double &y, const double &xA, const double &yA, const double &xB, const double &yB)
Definition: Geometry.cpp:454
static int computeBarycentricCoordinates(const double *p0, const double *p1, const double *p, vector< double > &baryCentrics, const int &dimension=3)
Definition: Geometry.cpp:121
static int computeTriangleAngles(const double *p0, const double *p1, const double *p2, vector< double > &angles)
Definition: Geometry.cpp:305
static double distance(const double *p0, const double *p1, const int &dimension=3)
Definition: Geometry.cpp:347
virtual ~Geometry()
Definition: Geometry.cpp:10
static int crossProduct(const double *vA0, const double *vA1, const double *vB0, const double *vB1, vector< double > &crossProduct)
Definition: Geometry.cpp:318
static int getBoundingBox(const vector< vector< double > > &points, vector< pair< double, double >> &bBox)
Definition: Geometry.cpp:387
static double dotProduct(const double *vA0, const double *vA1, const double *vB0, const double *vB1)
Definition: Geometry.cpp:371
static bool isTriangleColinear(const double *p0, const double *p1, const double *p2, const double *tolerance=NULL)
Definition: Geometry.cpp:489
Minimalist class that handles simple geometric computations (operations on vectors, barycentric coordinates, etc.).
Definition: Geometry.h:16
Geometry()
Definition: Geometry.cpp:6
Minimalist debugging class.
Definition: Debug.h:39
static bool computeSegmentIntersection(const double &xA, const double &yA, const double &xB, const double &yB, const double &xC, const double &yC, const double &xD, const double &yD, double &x, double &y)
Definition: Geometry.cpp:251
static bool isPointInTriangle(const double *p0, const double *p1, const double *p2, const double *p)
Definition: Geometry.cpp:420
static int computeTriangleArea(const double *p0, const double *p1, const double *p2, double &area)
Definition: Geometry.cpp:292
Definition: CommandLineParser.h:13
static bool areVectorsColinear(const double *vA0, const double *vA1, const double *vB0, const double *vB1, vector< double > *coefficients=NULL, const double *tolerance=NULL)
Definition: Geometry.cpp:22
static double magnitude(const double *v)
Definition: Geometry.cpp:531
static double angle(const double *vA0, const double *vA1, const double *vB0, const double *vB1)
Definition: Geometry.cpp:13