Schau mal
hier, damit wirst du bestimmt zurechtkommen.
Also du hast deine drei Punkte des Dreiecks (a,b,c) und den roten Drehpunkt (dreh).
Dann muss das Dreieck so verschoben werden, dass der Drehpunkt in den Ursprung (0,0) fällt.
Nun wird gedreht und anschliessend das Polygon wieder zurückverschoben.
Man kann das Verschieben, Drehen und Zurückverschieben auch mit
einer 2D-Matrix berechnen,
aber so ist es leichter verständlich.
Delphi-Quellcode:
var
dreieck : array[0..2] of TPoint;
dreh, t : TPoint;
begin
// Anfangspunkte setzen
dreieck[0] := Point(..,..);
dreieck[1] := Point(..,..);
dreieck[2] := Point(..,..);
dreh := Point(...,...);
// Dreieck in den Ursprung verschieben
t := Point(-dreh.x,-dreh.y);
Translate2Darray(dreieck, t);
// Dreieck drehen
Rotate2Darray(dreieck, DegToRad(30)); // Drehung 30 Grad
// zurück in den Drehpunkt schieben
Translate2Darray(dreieck, dreh);