女人夜夜春高潮爽A∨片传媒_国产精品VIDEOS麻豆_在线精品亚洲一区二区三区_亚洲熟妇无码av

編程代碼
新聞詳情

平面坐標旋轉公式推導

發(fa)布時間:2023-04-11 15:40:32 最后(hou)更(geng)新(xin):2023-04-11 15:44:35 瀏(liu)覽次(ci)數:3564





3D坐標繞軸旋轉公式推導

繞軸旋轉實際(ji)上等價于平面點(dian)繞遠點(dian)旋轉,所以這里(li)只用分析一(yi)下平面情況就可以。

問題轉換為:平面上任意點(x,y)繞原點旋轉R度后,新點坐標為多少?

一、通常(chang)情況,我們容易想到(dao)(dao)一下的推導方式(我一開始想到(dao)(dao)的),請看下圖(tu):

 

綠色(se)的(de)點(dian)為原始(shi)點(dian)(x,y),轉過r度后(hou)到(dao)(dao)藍(lan)色(se)的(de)點(dian)的(de)位(wei)置,我一(yi)開(kai)始(shi)想到(dao)(dao)的(de)是(shi)先求出初始(shi)點(dian)(綠色(se)的(de)點(dian))的(de)初始(shi)角度a,然后(hou)計算(suan)出半徑(jing),根據三角關系可以得到(dao)(dao)新點(dian)的(de)坐(zuo)標。

關系式:

a=arctan(y/x)
radio=sqrt(x*x+y*y)
新點(dian):x’=radio*Cos(a+r); y’=radio*Sin(a+r)

看(kan)起來貌似可以,但是(shi)編程處(chu)理旋轉問(wen)題(ti)時(shi)發現了(le)嚴重的問(wen)題(ti),在求a的時(shi)候用(yong)了(le)x做分母,所以就限定了(le)x不等于0,這就不好了(le)。

二、直角坐標系求解

思考(kao)了(le)一(yi)(yi)天,不知道如何解決分(fen)母的(de)問題,突(tu)然(ran)回(hui)想起來以前學過坐標變換,恍然(ran)大悟,汗一(yi)(yi)個。

還(huan)是需要(yao)通過(guo)幾何關系來(lai)進行求解,可(ke)以避免定義域不連續(xu)的(de)問(wen)題,無圖無真(zhen)相!

 

注(zhu)釋:圖(tu)中紅(hong)(hong)色(se)(se)的(de)點為(wei)(wei)(wei)初始點,粉色(se)(se)的(de)為(wei)(wei)(wei)新點,黑色(se)(se)的(de)線為(wei)(wei)(wei)初始坐標系,紅(hong)(hong)色(se)(se)的(de)線為(wei)(wei)(wei)假想坐標系,黃色(se)(se)的(de)線都是垂線。

在坐標變換中,我們可以換一種思考方式,點的旋轉實際上可以理解為坐標系旋轉到新的位置,然后求到新點相對于老坐標系的坐標即可。
圖中我(wo)們很容(rong)易(yi)得到(dao)標(biao)注的兩個(ge)角度(du)相等,新(xin)(xin)點的橫(heng)坐標(biao)X’等于下面尺寸標(biao)注的X*Cos(φ)-兩條黃色的垂線間(jian)的距(ju)離(li),而這段(duan)距(ju)離(li)我(wo)們可以(yi)在紅色的新(xin)(xin)坐標(biao)系中很容(rong)易(yi)求出distance=Y * Sin(φ),所以(yi)很容(rong)易(yi)就得到(dao)了(le)新(xin)(xin)點的橫(heng)坐標(biao)

X’=X*Cos(φ)-Y*Sin(φ)          式①

同理,得到

Y’=X*Sin(φ)+Y*Cos(φ)          式②

式①和(he)式②就是平(ping)面任(ren)一點(dian)繞原點(dian)旋轉(zhuan)的方(fang)程。

對于(yu)3D坐標中,這便是繞Z軸(zhou)旋轉的公式

X’=X*Cos(φ)-Y*Sin(φ)

Y’=X*Sin(φ)+Y*Cos(φ)

Z’=Z

對于(yu)繞其他軸旋轉的公式(shi)都可以(yi)用此方法得(de)到。

三、

 

采用(yong)三角函數(shu)展開將會得到更簡單的(de)求解方法,

X'=Radio*Cos(r+a)
=Radio*(Cos( r)*Cos(a)-Sin( r)*Sin(a))
=Radio*Cos(a)*Cos( r)-Radio*Sin(a)*Sin( r)
=X*Cos( r)-Y*Sin( r)

同理得到

Y’=Radio*Sin(r+a)
=X*Sin( r)+Y*Cos( r)

看來(lai)真是(shi)要溫故而(er)知新!

 


坐標旋轉公式

x1=cos(angle)*x-sin(angle)*y;

y1=cos(angle)*y+sin(angle)*x;

其中x,y表(biao)示物體相(xiang)對于(yu)旋(xuan)(xuan)轉(zhuan)點旋(xuan)(xuan)轉(zhuan)angle的(de)角(jiao)度之(zhi)前的(de)坐標,x1,y1表(biao)示物體旋(xuan)(xuan)轉(zhuan)angle后相(xiang)對于(yu)旋(xuan)(xuan)轉(zhuan)點的(de)坐標

 

從數(shu)學上來(lai)說,此公式(shi)可(ke)以用(yong)來(lai)計算某個點繞另(ling)外(wai)一(yi)點旋(xuan)轉一(yi)定角度(du)后(hou)的(de)坐標,例如(ru):A(x,y)繞B(a,b)旋(xuan)轉β度(du)后(hou)的(de)位置為C(c,d),則x,y,a,b,β,c,d有(you)如(ru)下關系式(shi):


1。設A點(dian)(dian)旋轉前(qian)的角度為(wei)δ,則旋轉(逆時(shi)針(zhen))到(dao)C點(dian)(dian)后(hou)角度為(wei)δ+β

2。求A,B兩點的距離:dist1=|AB|=y/sin(δ)=x/cos(δ)

3。求C,B兩點(dian)的距離:dist2=|CB|=d/sin(δ+β)=c/cos(δ+β)

4。顯然dist1=dist2,設dist1=r所以(yi):

r=x/cos(δ)=y/sin(δ)=d/sin(δ+β)=c/cos(δ+β)

5。由三(san)角(jiao)函(han)數(shu)兩(liang)角(jiao)和差公式知:

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(β)

即旋(xuan)(xuan)轉(zhuan)后的(de)坐(zuo)(zuo)標c,d只與旋(xuan)(xuan)轉(zhuan)前的(de)坐(zuo)(zuo)標x,y及旋(xuan)(xuan)轉(zhuan)的(de)角(jiao)度β有關(guan)

 

從圖中可(ke)以很容易(yi)理(li)解出A點旋轉(zhuan)后的C點總是在圓周(zhou)上運(yun)動,圓周(zhou)的半徑為|AB|,利用(yong)這點就(jiu)可(ke)以使物體繞(rao)圓周(zhou)運(yun)動,即(ji)旋轉(zhuan)物體。

 

上面公式是(shi)相對于B點坐標來(lai)的,也(ye)就是(shi)假如B點位(0,0)可(ke)以這么(me)做。現在(zai)給出(chu)可(ke)以適(shi)合任(ren)意情況的公式:

x0 = dx * cos(β) - dy * sin(β)

y0 = dy * cos(β) + dx * sin(β)

 

參數解釋:

x0,y0是(shi)旋轉(zhuan)后相對于中心點(dian)的(de)(de)坐(zuo)標(biao),也就是(shi)原點(dian)的(de)(de)坐(zuo)標(biao),但不是(shi)之前點(dian)旋轉(zhuan)后的(de)(de)實際坐(zuo)標(biao),還(huan)要計(ji)算一步,

β旋轉角度(du),可以是順時(shi)針(zhen)或者(zhe)逆時(shi)針(zhen)。

dx是旋轉前(qian)的(de)x坐(zuo)標-旋轉后的(de)x坐(zuo)標

dy是(shi)旋轉(zhuan)前的(de)y坐(zuo)標(biao)-旋轉(zhuan)后的(de)y坐(zuo)標(biao)

x1=a+x0;

y1=b+y0;

上面才是旋轉后(hou)的實際(ji)坐(zuo)標,其中a,b是原點(dian)坐(zuo)標

 

下面(mian)是上(shang)面(mian)圖的(de)公式(shi)解答(da):

x0=(x-a)*cos(β)-(y-b)*sin(β);

y0=(y-b)*cos(β)+(x-a)*sin(β);

x1=x0+a;

y1=y0+b;

 

在線(xian)客服(fu)
客服電話
  • 0755-23712116
  • 13310869691