summaryrefslogtreecommitdiff
path: root/geometry
diff options
context:
space:
mode:
authorPaul Jungeblut <paul.jungeblut@gmail.com>2016-01-13 19:50:20 +0100
committerPaul Jungeblut <paul.jungeblut@gmail.com>2016-01-13 19:50:20 +0100
commit5b4656e55fcae93c05efb889bfc337d9590996ae (patch)
tree452dd56c4ce3987841db198ad077d39113bfa50d /geometry
parent887ea8a1862b5d448c87ab90c02579cb5cded5fa (diff)
Adding comment to the polygonArea function describing the sign of the result.
Diffstat (limited to 'geometry')
-rw-r--r--geometry/formulars.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/geometry/formulars.cpp b/geometry/formulars.cpp
index 49b7f94..1ab57f4 100644
--- a/geometry/formulars.cpp
+++ b/geometry/formulars.cpp
@@ -106,9 +106,9 @@ bool isCoplanar(pt a, pt b, pt c, pt d) {
// Berechnet den Flächeninhalt eines Polygons (nicht selbstschneidend).
double areaOfPolygon(vector<pt> &polygon) { // Jeder Eckpunkt nur einmal im Vektor.
double res = 0; int n = polygon.size();
- for (int i = 0; i < (int)polygon.size(); i++)
+ for (int i = 0; i < n; i++)
res += real(polygon[i]) * imag(polygon[(i + 1) % n]) - real(polygon[(i + 1) % n]) * imag(polygon[i]);
- return 0.5 * abs(res);
+ return 0.5 * res; // Positiv, wenn Punkte gegen den Uhrzeigersinn gegeben sind. Sonst negativ.
}
// Testet, ob sich zwei Rechtecke (p1, p2) und (p3, p4) schneiden (jeweils gegenĂĽberliegende Ecken).