Der Dreh-Algorithmus
Herleitung der Gleichungen für die Drehung um a um den Nullpunkt 
Voraussetzung sind die 
Additionstheoreme
(1) cos(α+β) = cos(α)*cos(β) - sin(α)*sin(β)
(2) sin(α+β) = cos(α)*sin(β) + sin(α)*cos(β)
und die Darstellung eines Punktes P(x/y) auf einem Kreis um den Nullpunkt mit Radius r:
(3) x = r*cos(β) und (4) y = r*sin(β),
 dabei ist β der Drehwinkel von der positiven x-Achse
gezählt
  | 
Es gilt 
  
(5) x' = r*cos(α+β) und 
(6) y' = r*sin(α+β)
  
Mit den Additionstheoremen (1),(2) folgt
  
(7)  x' = r*cos(α)*cos(β) - r*sin(α)*sin(β) und  
(8)  y' = r*cos(α)*sin(β) + r*sin(α)*cos(β)
  
 Aus (7) und (8) folgen mit (3) und (4) die gesuchten Gleichungen:
  
| x' = cos(α)*x - sin(α)*y | 
 
| y' = sin(α)*x + cos(α)*y | 
 
 
 
  | 
Drehung um einen Punkt D(dx/dy): 
Man verschiebt zuerst so, dass  
der Punkt D(dx/dy) in den  
Nullpunkt zu liegen kommt:
 | 
Dann wird der Punkt gedreht: | 
Und schließlich zurückgeschoben: | 
| 
 | 
| x'' = cos(α)*(x-dx) - sin(α)*(y-dy) | 
 
| y'' = sin(α)*(x-dx) + cos(α)*(y-dy) | 
 
  | 
| x''' = cos(α)*(x-dx) -
sin(α)*(y-dy) + dx | 
 
| y''' = sin(α)*(x-dx) +
cos(α)*(y-dy) + dy | 
 
  | 
Eine mögliche Realisierung zeigt folgender Quelltext-Auszug:
 
  function gedreht(P,D : TPunkt; alpha : real) : TPunkt;
  begin
    result.X := cos(alpha)*(P.X-D.X) - sin(alpha)*(P.Y-D.Y) + D.X;
    result.Y := sin(alpha)*(P.X-D.X) + cos(alpha)*(P.Y-D.Y) + D.Y;
  end;
 | 
drehen.zip
Zur Herleitung der Summenformeln: