-5

私は現在、Java で方向計算機を作成しようとしていますが、さまざまなオブジェクトの回転に少し問題があります。

初期位置を持つ立方体があり、その各頂点がわかっているとします (また、その中心もわかっています)。次に、立方体はY 軸上で角度ラジアン (または度、それは問題ではありません) で初期位置から回転し、 X 軸上anglexラジアンで回転します。簡単にするために、Z 軸はそのままにしておきます。また、立方体の中心はグラフの原点にあります。

v1からv8までの既知のすべての頂点の座標、およびanglexangleyが既知であることを考慮して、立方体の各頂点の式を教えてください。

Java にある場合とない場合があるヘルパー メソッドについて教えてください。すべてのポイントの生の式を教えてください (スペースを節約する場合は、それらを for ループに統合できます)。

初期条件の例が本当に必要な場合は、次のキューブを検討してください。

 float vertices[]={
1, 1, -1,  //v1 - top front right
1, -1, -1, //v2 - bottom front right
-1, -1, -1,//v3 - bottom front left
-1, 1, -1, //v4 - top front left

1, 1, 1,  //v5 - top back right
1, -1, 1, //v6 - bottom back right
-1, -1, 1,//v7 - bottom back left
-1, 1, 1 //v8 - top back left
};
4

2 に答える 2

1

一般に、回転の順序に依存します。一般に、回転は交換されません。つまり、最初に軸 a を中心に回転し、次に軸 be を中心に回転するか、またはその逆かが重要です。各回転は、頂点の線形関数として行列形式で表すことができます。元の座標を回転した座標にマッピングする最終的な行列は、個々の回転の積です。したがって、個々の回転行列 (「回転行列」をグーグルで検索するだけ) を計算し、それらの積を計算してから、この行列と各頂点の積を計算して、最終的な頂点を得ることができます。一般に、つまりコンピューター グラフィックスなどでは、回転の順序依存性から生じる混乱を避けるために、クォータニオンを使用して回転を表しますが、それはより複雑になります... :)

于 2012-06-28T22:52:30.770 に答える
0

回転行列を使用して単一の点を回転します。

http://en.wikipedia.org/wiki/Rotation_matrix

したがって、行列乗算方程式を使用することになります。

 v' = R * v 

ここで、vはデカルト座標のベクトルとしての点、Rは回転行列、v'は新しい点です。この乗算を各ポイントに適用する必要があります。

于 2012-06-28T22:58:12.560 に答える