From 5ab8a5088b729a9953b8dff1b2a985dc8fb2098b Mon Sep 17 00:00:00 2001 From: mzuenni Date: Mon, 27 Jun 2022 17:19:28 +0200 Subject: updated tcr --- geometry/triangle.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 geometry/triangle.cpp (limited to 'geometry/triangle.cpp') diff --git a/geometry/triangle.cpp b/geometry/triangle.cpp new file mode 100644 index 0000000..3a39302 --- /dev/null +++ b/geometry/triangle.cpp @@ -0,0 +1,40 @@ +// Mittelpunkt des Dreiecks abc. +pt centroid(pt a, pt b, pt c) {return (a + b + c) / 3.0;} + +// Flächeninhalt eines Dreicks bei bekannten Eckpunkten. +double area(pt a, pt b, pt c) { + return abs(cross(b - a, c - a)) / 2.0; +} + +// Flächeninhalt eines Dreiecks bei bekannten Seitenlängen. +double area(double a, double b, double c) { + double s = (a + b + c) / 2.0; + return sqrt(s * (s-a) * (s-b) * (s-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; +} + +// Zentrum des größten Kreises im Dreiecke +pt inCenter(pt a, pt b, pt c) { + double x = abs(a-b), y = abs(b-c), z = abs(a-c); + return (y*a + z*b + x*c) / (a+b+c); +} + + +// Sind die Dreiecke a1, b1, c1, and a2, b2, c2 ähnlich? +// Erste Zeile testet Ähnlichkeit mit gleicher Orientierung, +// zweite Zeile testet Ähnlichkeit mit verschiedener Orientierung +bool similar (pt a1, pt b1, pt c1, pt a2, pt b2, pt c2) { + return ((b2-a2) * (c1-a1) == (b1-a1) * (c2-a2) || + (b2-a2) * (conj(c1)-conj(a1)) == (conj(b1)-conj(a1)) + * (c2-a2) + ); +} -- cgit v1.2.3