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;