2012-02-14 9 views
0

私はC++ ifcインポーターを作成しています。オイラー角と押し出し方向

私は方向ベクトルを持っており、そこからセクションを押し出す必要があります。セクション自体は2dポイントのリストです。 押出方向を計算するには、変換されていない方向に変換行列を掛けなければなりません。

行列は、(オイラー角のような)x,y、およびの変換を持ちます。

押出方向の周りの回転角度を計算する必要があります。

matrix.ExtractEulerXYZ(x,y,z)

問題は、どのようにxy又はzの回転を有する方向ベクトルを有することができることである。

私はオイラー マトリックスから角度返す行列クラスを有します押し出し方向から正しい角度x,y、またはzを選択できますか?

+0

2次元ベクトルの3次元計算をしていますか?これは勧告されていません。少なくとも、またはというように生成されたすべての点がありますが、これらの角度を特定しようとしているのですか、単にポイントを変換しようとしていますか?なぜベクトル加算だけではないのですか?他のタグについて考えることもできます。これは言語に固有のものではないようで、一般的な数学のものです – gardian06

答えて

0

2d点は、2d空間内の位置(x、y)にあり、3d空間内の(x、y、0)にあります。

3次元空間のオイラー角は、xyz軸から3回転を定義し、xyz軸を指定された点に回転させます。つまり、x軸上の点をx軸上の点にマークすると、XY平面に沿ってa、ZY平面に沿ってb、ZX平面に沿ってc軸が回転します。

http://en.wikipedia.org/wiki/Euler_anglesの「物理的な動きとの関係」セクションのアニメーションを参照してください。特に、最初は左下隅に向かって投影されるx軸の進行に従います。

ちょうど2dの点がある場合、ZYとZXの回転は何もしません。あなたはXY軸を中心に回転しています。したがって、単純な三角法(SOH CAH TOA)を使用して、原点から点までの線の角度を求めることができます。マトリックスを使用する必要はありません。

関連する問題