3
++我々は、任意の軸の周りのポイントを回転させることができます。楕円回転行列? Cでは
void radRotateAxis(float a, float b, float c, float theta) { float newX = ( x*(a*a*(1-cos(theta)) + cos(theta) ) + y*(a*b*(1-cos(theta)) - c*sin(theta)) + z*(a*c*(1-cos(theta)) + b*sin(theta))); float newY = ( x*(a*b*(1-cos(theta)) + c*sin(theta)) + y*(b*b*(1-cos(theta)) + cos(theta) ) + z*(b*c*(1-cos(theta)) - a*sin(theta)) ); float newZ = ( x*(a*c*(1-cos(theta)) - b*sin(theta)) + y*(b*c*(1-cos(theta)) + a*sin(theta)) + z*(c*c*(1-cos(theta)) + cos(theta) ) ); x = newX ; y = newY ; z = newZ ; }
しかし、我々はシータ0歩く - > 2PIをこれは、あなたがおよそ
を回転している軸の周りに「単位円」の周りにポイントを取ります私たちはどのようにシータを作ることができますか0 - > 2PI結果は約ellipse幅a、高さbですか?
軸の周りを回転させた後に変換行列をポイントに適用したくないのです - 私が探しているのは、誰かがそのようなことを知っていれば、 "楕円形の"回転行列です!
具体的な数学フォーラムで質問することをお勧めします。 – Noldorin
まず、aとbはコード上の変数であるため、楕円にはaとbを使用しないでください。 第2に、省略記号の軸の向きを指定する必要があります。 これで、サーファスパスを楕円パスに変換するためにシータに応じてスケーリングを行うことができます。 –