3D勉強中1
2010.03.02
3Dを基本から勉強中なのですが、 アフィン変換が分からなくていきなりつまづきました。
で、アフィン変換を調べていくと、完全に忘却している三角関数の定理がたくさん出てきて、 これは、本格的に復習しようと思いました。
まず躓いたアフィン変換
以下の例は、角度rad回転させた時の座標を求めています。※x0,y0は、変換前の座標
※x1,y1は、変換後の座標
x1=x0*Math.cos(rad)-y0*Math.sin(rad)
y1=x0*Math.cos(rad)+y0*Math.sin(rad)
まず、この公式が全く理解できず、ググりました。
アフィン変換を解く
上図は、点Pから点Qへ回転したときの座標を求めます。
まず点Qの座標を(x1,y1)とすると、座標Qは、以下の式で求まります。
x1=Math.cos(a+b);
y1=Math.sin(a+b);
加法定理より
x1=Math.cos(a)*Math.cos(b)-Math.sin(a)*Math.sin(b);
y1=Math.sin(a)*Math.cos(b)+Math.sin(b)*Math.cos(a);
・・・式1
開店前の座標Qを(x0,y0)とすると、座標Pは、以下の式で求まります。
x0=Math.cos(b);
y0=Math.sin(b);
・・・式2
式2を式1に当てはめます。
すると以下の式になり、アフィン変換の公式になります。x1=x0*Math.cos(a)-y0*Math.sin(a)
y1=x0*Math.sin(a)+y0*Math.cos(a)
次回は、実際のスクリプトに入っていきます。






