10

3D 座標 (0,0,0 など) に開始点があります。

私が指している方向は、3 つの角度 (X 方向の回転、Y 方向の回転、Z 方向の回転) ごとに 3 つの角度で表されます (例のために、私が古いロゴのタートルの 1 つであると仮定します)ペンで)と、指している方向に移動する距離。

終点の座標を計算するにはどうすればよいですか?

2D システムの場合は簡単だと思います。

new_x = old_x + cos(angle) * distance
new_y = old_y + sin(angle) * distance

しかし、これを3次元に適用する方法がわかりません

これについての別の考え方は、指している方向と球の半径を知って、球の表面上の点を見つけようとすることだと思います。

4

3 に答える 3

10

まず、3Dでポイントを配置するには、2つの角度だけが必要です(2Dで1つだけ必要なのと同じように)

次に、さまざまな理由(cos&sinが遅い、ジンバルロックなど)で、最初に方向をベクトルとして保存し、角度を一緒に避けたい場合があります。

とにかく、方向が最初にz整列され、次にx軸を中心に回転し、続いてy軸を中心に回転すると仮定します。

x = x0+距離*cos(angleZ)* sin(angleY)

Y = y0+距離*sin(Anglez)

Z = z0+距離*cos(angleZ)* cos(angleY)

于 2011-01-10T00:32:07.227 に答える
4

3 つの角度に基づいて、3x3 回転行列を作成する必要があります。次に、行列の各列はローカルの x、y、および z 方向を表します。移動するローカル方向がある場合は、3x3 回転に方向ベクトルを掛けて、グローバル座標の結果を取得します。

あなたの質問に答えると思われる 3D 座標変換について少し紹介しました。

3D 座標

3D 座標

于 2011-01-10T05:06:01.767 に答える
2

まず、方向を表すために3つの角度があるのは奇妙です。2つで十分です。次に、結果は、それぞれの軸を中心に回転する順序によって異なります。異なる軸を中心とした回転は通勤しません。

おそらく、球座標とデカルト座標の間の変換を探しているだけです。

于 2011-01-10T00:32:00.583 に答える