2

X 軸と Y 軸を中心に Vector(0, -10, 0) を回転させたい。rotXX度 (0 - 360°) と YrotY度 (0 - 180°)を回転させたい。いろいろ試しましたが、できませんでした。誰かが私にその解決策を教えてもらえますか? 私が試した私のコードのいくつか:

LightRotX = -posX;
LightRotY = -10 * cos((rotY) * PI / 180.0) - posZ * sin((rotY) * PI / 180.0);
LightRotZ = -10 * sin((rotY) * PI / 180.0) + posZ * cos((rotY) * PI / 180.0);

float bZ = LightRotZ;
float bX = LightRotX;

LightRotX = bZ * sin((rotX) * PI / 180.0) + bX * cos((rotX) * PI / 180.0);
LightRotZ = bZ * cos((rotX) * PI / 180.0) - bX * sin((rotX) * PI / 180.0);
4

3 に答える 3

1

ポイント (x,y,z) を y 軸を中心に回転させたい場合、行列を使用したくない場合に必要なことは次のとおりです。軸ではなく平面で考えてください。y の場合、選択する平面は xz 平面になります。xz 平面に描かれた円を想像してください。この点を y 軸を中心に回転させると、その位置は xz 平面に描かれた円上の点 P(x,z) として定義できます。

したがって、y 軸を中心に回転するには、ベクトル/ポイントの x 座標と z 座標を変更する必要があります。90 度回転するには:

NewX=cos(pi/2)*r
NewZ=sin(pi/2)*r

上記の 2 行の疑似コードの正確性は保証できませんが、アイデアが分かれば実装できるはずです。

X と Y を変更すると、XY 平面である Z 軸を中心に回転します。

于 2013-12-24T18:08:32.200 に答える