Kép forgatása tetszőleges forgatási középponttal
Üdvözletem,
a kérdésem a következő lenne: hogyan lehetne tetszőleges forgatási középponttal (tehát nem a kép közepén levővel, mint ahogy a PHP imagerotate csinálná) elforgatni egy képet? Tudtok erre elegáns megoldást?
Válaszaitokat előre is köszönöm.
■ a kérdésem a következő lenne: hogyan lehetne tetszőleges forgatási középponttal (tehát nem a kép közepén levővel, mint ahogy a PHP imagerotate csinálná) elforgatni egy képet? Tudtok erre elegáns megoldást?
Válaszaitokat előre is köszönöm.
2 megoldás
2: ugyanez, csak előszőr forgatod el, aztán másolod rá a nagyobb vászonra
Lehetséges, hogy valamelyik segédprogrammal (imagemagick, netpbm) egyszerűbben is megoldható, de hirtelen nem tudok kész megoldást mondani velük.
Megj: nem teljesen értem, hogy miért nem jó a középpontos forgatás, mi a célod a tetszőleges középponttal?
(Matematikailag csak annyit a különbség, hogy egy helyvektorral eltolod, és aztán a vektort is forgatod.)
Annyit tennék hozzá...
x = rx - sx
y = ry - sy
ahol rx és ry: az új középpont relatív koordinátái a középponthoz képest (tehát ha a középpont marad, akkor rx=ry=0, ha a kép bal felső sarka, akkor rx = -w/2 ry = -h/2 stb...) valamint:
sx = cos(atan(ry / rx) + alpha) * sqrt(rx^2 + ry^2)
sy = sin(atan(ry / rx) + alpha) * sqrt(rx^2 + ry^2)
ahol apha a forgatás szöge. Az új koordináták az elfogratott kép eltolását jelentik. Nem ellenőriztem a cuccot, úgyhogy nem 100%-os.