summaryrefslogtreecommitdiff
path: root/geometry/triangle.cpp
diff options
context:
space:
mode:
authorNoobie99 <noob999noob999@gmail.com>2023-05-20 16:24:33 +0200
committerNoobie99 <noob999noob999@gmail.com>2023-05-20 16:24:33 +0200
commitd10bc5152eda4f0426325bf4b281ee81ddc92216 (patch)
tree89a160108f7ded1ae627abde83c43071d14e0fc8 /geometry/triangle.cpp
parent416962c482e7d6dcf3efd8739dd888bf9bb62288 (diff)
fix outcenter (circumcenter)
Diffstat (limited to 'geometry/triangle.cpp')
-rw-r--r--geometry/triangle.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/geometry/triangle.cpp b/geometry/triangle.cpp
index ebbbc88..aeffa46 100644
--- a/geometry/triangle.cpp
+++ b/geometry/triangle.cpp
@@ -19,13 +19,12 @@ pt inCenter(pt a, pt b, pt c) {
}
// Zentrum des Kreises durch alle Eckpunkte
-pt outCenter(pt a, pt b, pt c) {
- double d = 2.0 * (real(a) * imag(b-c) +
- real(b) * imag(c-a) +
- real(c) * imag(a-b));
- return (a*conj(a)*conj(b-c) +
- b*conj(b)*conj(c-a) +
- c*conj(c)*conj(a-b)) / d;
+// a, b und c nicht kollinear
+pt circumCenter(pt a, pt b, pt c) {
+ b = b - a, c = c - a;
+ pt d = b * norm(c) - c * norm(b);
+ d = {-d.imag(), d.real()};
+ return a + d / cross(b, c) / 2.0;
}
// 1 => p außerhalb Kreis durch a,b,c