![]() |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Wenn's euch so aufregt, warum antwortet ihr dann? Wenn ich einen Post seh, der mich aufregt oder bei dem ich so meine Zweifel an der Legitimation hab (Hausaufgaben, Sachen die eindeutig nach Virus etc klingen) dann antworte ich halt nicht.
|
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Auch wenn es Hausaufgaben sind, ne Anregung soll er ruhig haben, wir Rechnen ihm ja immerhin nix aus oder Posten den Code den er gern hätte, wir liefern ihm ja nur Denkanstöße, ok der ein oder andere ist nen Tritt aber das macht ja nix^^
Also mir ist es egal wofür er das braucht, ich geb gern nen Denkanstoß, mehr soll aber auch reichen! |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Code:
mit
d = |(x1 - x0)*n|
x1: zu überprüfender Punkt x0: Punkt auf der Geraden n: normierte Normale der Geraden. d: Abstand von Gerade zu x0 sagt zumindest meine Formelsammlung. edit: und dann noch
Code:
mit
x1' = x1 - 2*d*n
x1': an der Geraden gespiegeltes x1 |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Zitat:
Zitat:
Zitat:
Ich gebe ja zu, die Frage war nicht korrekt gestellt: 1) Gibt es vorgefertigte Prozeduren/Bibliotheken zur Achsen- und (möglichst) Punktspiegelung? 2) Gehen bei der Berechnung von Schnittpunkt nicht ein Paar Werte verloren, sodass zwei unterschiedliche Punkte auch einen gemeinsamen Spiegelpunkt fallen würden? 3) Gibt es vielleicht rein graphische Lösungen (Drehen des Bitmaps?)? Vielen Dank für eure Beiträge! |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Der getroffene Hund bellt!
Rainer |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
sehr informativ, danke ;)
Für alle, die noch an der Lösung interessiert sind:
Delphi-Quellcode:
A und B legen die Gerade fest. P ist derjenige Punkt, der an der Gerade [AB] gespiegelt werden soll. Die Funktion gibt den Spiegelpunkt zurück. Bei beiden Koordinaten wird mit exakten Werten gerechnet, anschließend werden sie gerundet.
function TMain.PunktAnGeradeSpiegeln(A, B, P: TPoint): TPoint;
var xS,yS: Real; begin xS:= - P.X + 2*(((A.X-B.X)*(A.X-B.X)*P.X + (A.Y-B.Y)*(A.Y-B.Y)*A.X + (A.X-B.X)*(A.Y-B.Y)*P.Y - (A.X-B.X)*(A.Y-B.Y)*A.Y) / ((A.Y-B.Y)*(A.Y-B.Y) + (A.X-B.X)*(A.X-B.X))); yS:= - P.Y + 2*(((A.X-B.X)*(A.Y-B.Y)*P.X - (A.X-B.X)*(A.Y-B.Y)*A.X + (A.Y-B.Y)*(A.Y-B.Y)*P.Y + (A.X-B.X)*(A.X-B.X)*A.Y) / ((A.Y-B.Y)*(A.Y-B.Y) + (A.X-B.X)*(A.X-B.X))); Result:= Point(Round(xS),Round(yS)); end; Ansatz: 1) Geradengleichung 2) Normalengleichung 3) Gleichsetzen 4) Nach X bzw. Y auflösen Funktion erfolgreich getestet, danke für die Aufmerksamkeit ;) |
Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?
Zitat:
so geht die eine oder andere Nachkommastelle verloren. Bequemer wär die Aufstellung einer Formel, die direkt zum Ergebnis führt. Spart man Zeit und Ressis.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz