Spiegelung an Geraden ohne Funktionsgleichung
-
moin,
lol hoffentlich steht die Lösung nicht schon wieder irgendwo im Forum
gegeben sind 3 Punkte a,b und c. Und a soll an der Geraden die durch b und c geht gespiegelt werden. Wie mache ich das OHNE die Gerade in eine Gleichung f(x) = mx + n umzurechnen??
thxia
-
ESS_CB schrieb:
gegeben sind 3 Punkte a,b und c. Und a soll an der Geraden die durch b und c geht gespiegelt werden. Wie mache ich das OHNE die Gerade in eine Gleichung f(x) = mx + n umzurechnen??
Mit Hilfe des Vectors in diesem Thread. Etwa so
#include <iostream> #include "Vector.h" // siehe Beitrag vom 1.8.06 int main() { using namespace std; Vector b( 4, 1 ); Vector c( 7, 7 ); Vector a( 4, 6 ); Vector n = Vector( 0, 0, 1 ) % (c-b); // 90° Grad drehen n /= abs( n ); Vector as = a + 2 * n * (c - a) * n; cout << "Ergebnis: " << as << endl; return 0; }as ist der gespiegelte Punkt. Die Gleichung dafür lautet:
wobei der normierte Normalen-Vektor der Geraden durch bc ist. Er berechnet sich aus
Die Kreuzmultiplikation mit ez dient nur dazu den Vektor um 90° zu drehen.Gruß
Werner
-
ok, danke.
Einen Hinweis nur noch: Die Berechnung ist für den Bundeswettbewerb Informatik und natürlich kann ich die vector.h nicht auf meine Kappe schreiben^^
Ich hab deshalb bei der vector.h am Anfang noch ein
// by Werner Salomonam Anfang eingefügt. Ich hoffe es ist so in Ordnung. Wenn du ne Änderung wünscht kannst du die hier ja posten.
thx
PS: beim Scalarprodukt hast du ein ';' vergessen
