Einzelnen Beitrag anzeigen

Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Achsenspiegelung: Punkt an einer Gerade spiegeln?

  Alt 17. Sep 2005, 19:04
sehr informativ, danke


Für alle, die noch an der Lösung interessiert sind:

Delphi-Quellcode:
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;
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.

Ansatz:
1) Geradengleichung
2) Normalengleichung
3) Gleichsetzen
4) Nach X bzw. Y auflösen


Funktion erfolgreich getestet, danke für die Aufmerksamkeit
i n f l i c t e d . d e
  Mit Zitat antworten Zitat