間違いしかありません.コメントにてご指摘いただければ幸いです(気が付いた点を特に断りなく頻繁に書き直していますのでご注意ください).

2点を補間した位置への回転操作のための四元数

2点を補間した位置への回転操作のための四元数

位置ベクトルpへの四元数q1, q2による回転操作を行った結果をp1p2とする. またp1p2との間を補間した位置をptとした時,pに対する回転操作でptとなる四元数qtを考える. q=w+xi+yj+zk=(w,xi+yj+zk)((),ijk())=(w,V)V=xi+yj+zkq=wxiyjzk=(w,xiyjzk)=(w,V)q=(cos(θ2),sin(θ2)V)V(V.|V|=1),θqq1pqpq1.q1=(cos(θ12),sin(θ12)V1)|q1|=1,|V1|=1,pp1=(C1,S1V1)q2=(cos(θ22),sin(θ22)V2)|q2|=1,|V2|=1pp2=(C2,S2V2)q12=(cos(θ122),sin(θ122)V12)|q12|=1,|V12|=1,pp1p2=(C12,S12V12)q1t=(cos(tθ122),sin(tθ122)V12)0t1,pp1p2ptV12.t調.=(C1t,S1tV12)qt=(cos(θt2),sin(θt2)Vt)|qt|=1,|Vt|=1,ppt=(Ct,StVt)


pp1p2q1q2の関係性からq12=(C12,S12V12)を求める. p1=q1pq11p2=q2pq21p2=q12p1q121=q12(q1pq11)q121p1=q1pq11=(q12q1)p(q11q121)q2=q12q1q12=q2q11=q2q1|q1|2q1=q|q|2=q2q1|q1|2=12=1=(C2,S2V2)(C1,S1V1)=(C1C2{S1}S2V2V1,C2S1V1+C1S2V2+{S1}S2V2×V1)q1q2=(w1,V1)(w2,V2)=(w1w2V1V2,w1V2+w2V1+V1×V2)=(C1C2+S1S2V1V2,C2S1V1+C1S2V2+S1S2V1×V2)AB=BA,A×B=B×AC12=C1C2+S1S2V1V2S12V12=C2S1V1+C1S2V2+S1S2V1×V2


pp1ptq1q1tの関係性からqt=(Ct,StVt)を求める. pt=qtpqt1pt=q1tp1q1t1=q1t(q1pq11)q1t1p1=q1pq11=(q1tq1)p(q11q1t1)qt=q1tq1=(C1t,S1tV12)(C1,S1V1)=(C1C1tS1S1tV12V1,C1tS1V1+C1S1tV12+S1S1tV12×V1)=(C1C1tS1S1tV1V12,C1tS1V1+C1S1tV12+S1S1tV12×V1)AB=BACt=C1C1tS1S1tV1V12StVt=C1tS1V1+C1S1tV12+S1S1tV12×V1


上記で求めたS12V12を用いて,V1V12を求めておく. S12V12=C2S1V1+C1S2V2+S1S2V1×V2V12=1S12{C2S1V1+C1S2V2+S1S2V1×V2}V1V12=V1[1S12{C2S1V1+C1S2V2+S1S2(V1×V2)}]=1S12{C2S1V1V1+C1S2V1V2+S1S2V1(V1×V2)}=1S12{C2S1+C1S2V1V2+S1S2V2(V1×V1)}V1V1=|V1|2=12=1,A(B×C)=C(A×B)()=1S12{C2S1+C1S2V1V2}A×A=0


上記で求めたV1V12を用いて,Ctを変形する. Ct=C1C1tS1S1tV1V12=C1C1tS1S1t[1S12{C2S1+C1S2V1V2}]V1V12=1S12{C2S1+C1S2V1V2}=C1C1tS1tS12{C2S12+C1S1S2V1V2}=C1C1tS1tS12{C2(1C12)+C1S1S2V1V2}sin2(θ)=1cos2(θ)=C1C1tS1tS12{C2+C12C2+C1S1S2V1V2}=C1C1tS1tS12{C2+C1(C1C2+S1S2V1V2)}=C1C1tS1tS12{C2+C1C12}C12=C1C2+S1S2V1V2=C1C1t+S1tS12C2S1tS12C1C12=S12C1tC12S1tS12C1+S1tS12C2=sin(θ122)cos(tθ122)cos(θ122)sin(tθ122)S12C1+S1tS12C2=sin(θ122tθ122)S12C1+S1tS12C2sin(α)cos(β)cos(α)sin(β)=sin(αβ)=sin((1t)θ122)S12C1+S1tS12C2=sin((1t)θ122)sin(θ122)C1+sin(tθ122)sin(θ122)C2


上記で求めたV12を用いて,StVtを変形する. StVt=C1tS1V1+C1S1tV12+S1S1tV12×V1=C1tS1V1+C1S1t[1S12{C2S1V1+C1S2V2+S1S2V1×V2}]+S1S1t[1S12{C2S1V1+C1S2V2+S1S2V1×V2}]×V1V12=1S12{C2S1V1+C1S2V2+S1S2V1×V2}=C1tS1V1+S1tS12{C1C2S1V1+C12S2V2+C1S1S2V1×V2}+S1tS12{C2S12V1×V1+C1S1S2V2×V1+S12S2V1×V2×V1}=C1tS1V1+S1tS12{C1C2S1V1+C12S2V2+C1S1S2V1×V2C2S12V1×V1+C1S1S2V1×V2+S12S2V1×V2×V1}=C1tS1V1+S1tS12[C1C2S1V1+C12S2V2+S12S2{(V1V1)V2(V2V1)V1}]A×A=0,A×B×C=(AC)B(BC)A=C1tS1V1+S1tS12[C1C2S1V1+C12S2V2+S12S2{|V1|2V2|V2||V1|cos(θ12)V1}]AA=|A|2,AB=|A||B|cos(θ)=C1tS1V1+S1tS12{C1C2S1V1+C12S2V2+S12S2V2S12S2cos(θ12)V1}|V1|=1,|V2|=1=C1tS1V1+S1tS12[{C1C2S1S12S2cos(θ12)}V1+{C12S2+S12S2}V2]=C1tS1V1+S1tS12[S1{C1C2+S1S2cos(θ12)}V1+S2{C12+S12}V2]=C1tS1V1+S1tS12{S1C12V1+S2V2}C12=C1C2+S1S2cos(θ12),cos2(θ)+sin2(θ)=1=S12C1tC12S1tS12S1V1+S1tS12S2V2=sin(θ122)cos(tθ122)cos(θ122)sin(tθ122)S12S1V1+S1tS12S2V2=sin(θ122tθ122)S12S1V1+S1tS12S2V2sin(α)cos(β)cos(α)sin(β)=sin(αβ)=sin((1t)θ122)S12S1V1+S1tS12S2V2=sin((1t)θ122)sin(θ122)S1V1+sin(tθ122)sin(θ122)S2V2


以上によりptpを回転させる四元数qtq1q2(及びθ12t)によって表すことができた. qt=(Ct,StVt)=(sin((1t)θ122)sin(θ122)C1+sin(tθ122)sin(θ122)C2,sin((1t)θ122)sin(θ122)S1V1+sin(tθ122)sin(θ122)S2V2)=sin((1t)θ122)sin(θ122)C1+sin(tθ122)sin(θ122)C2+sin((1t)θ122)sin(θ122)S1V1+sin(tθ122)sin(θ122)S2V2=sin((1t)θ122)sin(θ122)C1+sin((1t)θ122)sin(θ122)S1V1+sin(tθ122)sin(θ122)C2+sin(tθ122)sin(θ122)S2V2=sin((1t)θ122)sin(θ122)(C1,S1V1)+sin(tθ122)sin(θ122)(C2,S2V2)=sin((1t)θ122)sin(θ122)q1+sin(tθ122)sin(θ122)q2 これは“ 2点を補間した位置への回転操作のための三角凾数”と同様の式の形をしている.

0 件のコメント:

コメントを投稿