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
