推导坐标旋转公式(转)
在《Flash actionScript 3.0 動(dòng)畫教程》一書中有一個(gè)旋轉(zhuǎn)公式:
x1=cos(angle)*x-sin(angle)*y;
y1=cos(angle)*y+sin(angle)*x;
其中x,y表示物體相對(duì)于旋轉(zhuǎn)點(diǎn)旋轉(zhuǎn)angle的角度之前的坐標(biāo),x1,y1表示物體旋轉(zhuǎn)angle后相對(duì)于旋轉(zhuǎn)點(diǎn)的坐標(biāo)
?
從數(shù)學(xué)上來說,此公式可以用來計(jì)算某個(gè)點(diǎn)繞另外一點(diǎn)旋轉(zhuǎn)一定角度后的坐標(biāo),例如:A(x,y)繞B(a,b)旋轉(zhuǎn)β度后的位置為C(c,d),則x,y,a,b,β,c,d有如下關(guān)系式:
1。設(shè)A點(diǎn)旋轉(zhuǎn)前的角度為δ,則旋轉(zhuǎn)(逆時(shí)針)到C點(diǎn)后角度為δ+β
2。求A,B兩點(diǎn)的距離:dist1=|AB|=y/sin(δ)=x/cos(δ)
3。求C,B兩點(diǎn)的距離:dist2=|CB|=d/sin(δ+β)=c/cos(δ+β)
4。顯然dist1=dist2,設(shè)dist1=r所以:
r=x/cos(δ)=y/sin(δ)=d/sin(δ+β)=c/cos(δ+β)
5。由三角函數(shù)兩角和差公式知:
sin(δ+β)=sin(δ)cos(β)+cos(δ)sin(β)
cos(δ+β)=cos(δ)cos(β)-sin(δ)sin(β)
所以得出:
c=r*cos(δ+β)=r*cos(δ)cos(β)-r*sin(δ)sin(β)=xcos(β)-ysin(β)
d=r*sin(δ+β)=r*sin(δ)cos(β)+r*cos(δ)sin(β)=ycos(β)+xsin(β)
即旋轉(zhuǎn)后的坐標(biāo)c,d只與旋轉(zhuǎn)前的坐標(biāo)x,y及旋轉(zhuǎn)的角度β有關(guān)
?
從圖中可以很容易理解出A點(diǎn)旋轉(zhuǎn)后的C點(diǎn)總是在圓周上運(yùn)動(dòng),圓周的半徑為|AB|,利用這點(diǎn)就可以使物體繞圓周運(yùn)動(dòng),即旋轉(zhuǎn)物體。
總結(jié)
以上是生活随笔為你收集整理的推导坐标旋转公式(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广和通工业级5G模组产品线一览到底
- 下一篇: vh,vw单位你知道多少?