Nach Euler kann man aus einer räumlichen Drehung auch 3 ebene Drehungen machen:
Delphi-Quellcode:
Result := RotateX(Value, Alpha);
Result := RotateY(Result, Beta);
Result := RotateZ(Result, Gamma);
P.X bleibt erhalten, wenn man um die X-Achse dreht usw..
Wenn du um den Mittelpunkt drehen und zoomen willst kannst du die Koordinaten um die Differenz der CenterPoints shiften:
Delphi-Quellcode:
P1 := Polyeder.CenterPoint;
Polyeder.Stretch(ScaleX, ScaleY, ScaleZ);
P2 := Polyeder.CenterPoint;
Polyeder.Shift(P1.X - P2.X, P1.Y - P2.Y, P1.Z - P2.Z);
Polyeder.Rotate(Alpha, Beta, Gamma);