@Bjoerk ich würde die Prozedure nicht "Transformiere" sondern "Rotiere" nennen.
Aber ich möchte doch nochmal auf meinen vorherigen Beitrag verweisen.
Eleganter kann man es eigentlich nicht programmieren.
Das es sich bei Rotate2D und Translate2D um Funktionen handelt, kann man sie problemlos verketten:
Delphi-Quellcode:
// verschieben, drehen um 45 Grad und zurückverschieben
NeuPunkt := Translate2D(Rotate2D(Translate2D(orgPunkt, P2), DegToRad(45.0)), invP2);
Durch die Verwendung des Records TPoint wird der Code leichter lesbar.
Bleibt man bei x und y, braucht man doppelt so viele Variablen.
Man kann aus den Verschiebungen und Drehungen auch eine
Transformationsmatrix berechnen.
Dann kann man diese Transformationsmatrix auf alle Punkte anwenden und spart so Rechenzeit. Dafür ist dann die nötige Mathematik etwas aufwändiger.