Algoritmus képforgatás, delphisite

Itt van egy kép forgatás algoritmus. Legyen O - a forgatás középpontját, és M - Egy bizonyos ponton az eredeti kép.
Minden egyes pont M, hogy megtalálják az a szög között a szegmens OM és a vízszintes hossza és r OM szegmens.
Most, hogy elfordítja a képet szögben béta kell minden egyes pont M
színmegnevezés pont az eredeti kép koordinátái x, y, ahol
X = XO + r * cos (alfa + béta)
y = yo + R * sin (alfa + béta)
(Xo, yo - forgási középpont, r - OM hossza a szegmens).
Fontos, hogy minden pontján új képet, hogy illeszkedjen a lényeg a régi képet,
és nem fordítva, különben bizonyos ponton egy új képet nem átfesteni.
Ez a program is jelentősen gyorsítani, ha az eredeti kép van írva a tömb és
foglalkozik a valós változó, nem egy tulajdonság Canvas.Pixels.

eljárás TForm1. Button1Click # 40; Sender: TObject # 41; ;

BM: = TBitMap. létrehozása;

bm. LoadFromFile # 40; 'Ex.bmp' # 41; ;

XO: = bm. Szélesség div 2;

yo: = bm. Magasság div 2;

BM1: = TBitMap. létrehozása;

BM1. Szélesség: = bm. szélesség;

BM1. Magasság: = bm. Magasság;

Y: = 0 bm. Magasság - 1 do kezdődik

x: = 0 bm. Szélesség - 1 do kezdődik

r: = sqrt # 40; sqr # 40; X - XO # 41; + sqr # 40; y - yo # 41; # 41; ;

SinCos # 40; Egy + arctan2 # 40; # 40; y - yo # 41;. # 40; X - XO # 41; # 41;. s, c # 41; ;

BM1. Vásznon. pixel # 91; x, y # 93; : = Bm. Vásznon. pixel # 91;

kerek # 40; XO + R * c # 41;. kerek # 40; yo + r * s # 41; # 93; ;

Form1. Vásznon. rajzol # 40; xo, yo, BM1 # 41; ;

amíg Form1. címke <> 0;