7 int ntriangles=
static_cast<int>(polygon.size())-2;
11 for(
size_t i=0;i<static_cast<size_t>(ntriangles);++i)
12 res+=fabs(
CrossProduct(polygon[i+1]-polygon[0],polygon[i+2]
18 vector<Vector2D>
const& ch2,
double R0,
double R1)
20 vector<Vector2D> p(ch1),q(ch2);
22 int n=
static_cast<int>(p.size());
23 boost::random::uniform_real_distribution<> dist(-1,1);
24 for(
size_t i=0;i<static_cast<size_t>(n);++i)
28 p[i].Set(p[i].x+r[0]*R0,p[i].y+r[1]*R0);
30 n=
static_cast<int>(q.size());
31 for(
size_t i=0;i<static_cast<size_t>(n);++i)
35 q[i].Set(q[i].x+r[0]*R1,q[i].y+r[1]*R1);
Vector3D CrossProduct(Vector3D const &v1, Vector3D const &v2)
Returns the cross product of two vectors.
vector< Vector2D > ConvexIntersect(vector< Vector2D > const &poly0, vector< Vector2D > const &poly1)
Calculates the intersection between two convex polygons.
PolygonOverlap(void)
Class constructor.
Calculates the overlap between two polygons.
double PolyArea(vector< Vector2D > const &polygon)
Calcualted the area of a convex polygon.
double polygon_overlap_area(vector< Vector2D > const &ch1, vector< Vector2D > const &ch2, double R0, double R1)
Calculates the area overlaped between two convex polygons.