| Problem 137 - Polygons, Explanations |
First, look for the points of one polygon that are inside the other polygon. Include them in the intersection.
Then try all segments of polygon 1 with all segments of polygon 2 :
Then, compute the convex hull of the intersection to get the intersection area.
The solution is simply area(P1) + area(P2) - 2 * area(Intersection).
Segment intersection is not line intersection : the intersection point(s) must lie within the convex hull formed by the four points of both segments.
Input polygons coordinates are given clockwise, but if you wanna, you can reverse them on-the-fly since you already know the number of points.
Don't forget the line joining the last and the first point of the hull.
Points and lines are mathematically speaking, convex. Expect them in te input.
The input WILL be tricky, e.g:
If you are in trouble with the multi-entry input, read my how to read input.
You can always take a look at my geometry basics.
Given two convex polygons, they may or may not overlap. If they do overlap, they will do so to differing degrees and in different ways. Write a program that will read in the coordinates of the corners of two convex polygons and calculate the `exclusive or' of the two areas, that is the area that is bounded by exactly one of the polygons. The desired area is shaded in the following diagram:
Input will consist of pairs of lines each containing the number of vertices of the polygon, followed by that many pairs of integers representing the x,y coordinates of the corners in a clockwise direction. All the coordinates will be positive integers less than 100. For each pair of polygons (pair of lines in the data file), your program should print out the desired area correct to two decimal places. The input will end with a line containing a zero (0).
Output will consist of a single line containing the desired area written as a succession of eight (8) digit fields with two (2) digits after the decimal point. There will not be enough cases to need more than one line.
3 5 5 8 1 2 3 3 5 5 8 1 2 3 4 1 2 1 4 5 4 5 2 6 6 3 8 2 8 1 4 1 4 2 5 3 0
0.00
13.50
where
represents a single space.