diff options
| author | Noobie99 <noob999noob999@gmail.com> | 2023-05-20 16:24:33 +0200 |
|---|---|---|
| committer | Noobie99 <noob999noob999@gmail.com> | 2023-05-20 16:24:33 +0200 |
| commit | d10bc5152eda4f0426325bf4b281ee81ddc92216 (patch) | |
| tree | 89a160108f7ded1ae627abde83c43071d14e0fc8 /geometry | |
| parent | 416962c482e7d6dcf3efd8739dd888bf9bb62288 (diff) | |
fix outcenter (circumcenter)
Diffstat (limited to 'geometry')
| -rw-r--r-- | geometry/triangle.cpp | 13 |
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 |
