36 #ifndef AVOID_GEOMETRY_H 37 #define AVOID_GEOMETRY_H 40 #include "libavoid/assertions.h" 45 extern double euclideanDist(
const Point& a,
const Point& b);
46 extern double manhattanDist(
const Point& a,
const Point& b);
47 extern double totalLength(
const Polygon& poly);
48 extern double angle(
const Point& a,
const Point& b,
const Point& c);
49 extern bool segmentIntersect(
const Point& a,
const Point& b,
50 const Point& c,
const Point& d);
51 extern bool segmentShapeIntersect(
const Point& e1,
const Point& e2,
52 const Point& s1,
const Point& s2,
bool& seenIntersectionAtEndpoint);
53 extern bool inPoly(
const Polygon& poly,
const Point& q,
bool countBorder =
true);
54 extern bool inPolyGen(
const PolygonInterface& poly,
const Point& q);
55 extern bool inValidRegion(
bool IgnoreRegions,
const Point& a0,
56 const Point& a1,
const Point& a2,
const Point& b);
57 extern int cornerSide(
const Point &c1,
const Point &c2,
const Point &c3,
59 extern bool pointOnLine(
const Point& a,
const Point& b,
const Point& c,
60 const double tolerance = 0.0);
61 extern bool colinear(
const Point& a,
const Point& b,
const Point& c,
62 const double tolerance = 0.0);
64 extern bool inBetween(
const Point& a,
const Point& b,
const Point& c);
79 static inline int vecDir(
const Point& a,
const Point& b,
const Point& c,
80 const double maybeZero = 0.0)
82 COLA_ASSERT(maybeZero >= 0);
84 double area2 = ((b.x - a.x) * (c.y - a.y)) -
85 ((c.x - a.x) * (b.y - a.y));
87 if (area2 < (-maybeZero))
91 else if (area2 > maybeZero)
99 static inline Point projection(
const Point& a,
const Point& b,
const Point& c)
101 double ux = c.
x - a.x,
105 scalarProj = ux * vx + uy * vy;
106 scalarProj /= ux * ux + uy * uy;
108 p.x = scalarProj * ux + a.x;
109 p.y = scalarProj * uy + a.y;
116 static const int DONT_INTERSECT = 0;
117 static const int DO_INTERSECT = 1;
118 static const int PARALLEL = 3;
119 extern int segmentIntersectPoint(
const Point& a1,
const Point& a2,
120 const Point& b1,
const Point& b2,
double *x,
double *y);
121 extern int rayIntersectPoint(
const Point& a1,
const Point& a2,
122 const Point& b1,
const Point& b2,
double *x,
double *y);
123 extern double rotationalAngle(
const Point& p);
double x
The x position.
Definition: geomtypes.h:107
Contains the interface for various geometry types and classes.
libavoid: Object-avoiding orthogonal and polyline connector routing library.
Definition: actioninfo.cpp:33