- 締切済み
3軸の回転値について
X:Y:Z:=0:0:0 と書かせていただきます。 X:Y:Z:=0:100:0 と、 X:Y:Z:=180:80:180 が同じ向きを向くのはわかります。 また、回転値にマイナスが入っている場合や360を超えている場合などでも 0~359度の数値に直すのはどのような計算式になるんでしょうか? いまいち想像ができないので教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 中村 拓男(@tknakamuri)
- ベストアンサー率35% (674/1896)
回転は回転軸を「どこに」 固定するか(空間か物体か) どの順番で回転させるかで 違ってきます。 軸を物体に固定し3個の角度で回転を表わす オイラー角だけでも12種類あります。 ご自分の回転の定義を確認してみて下さい。
- trytobe
- ベストアンサー率36% (3457/9591)
面倒なことに、X,Y,Z の3つの軸がある座標系で、原点あたりに飛行機でも置いたときに、 X軸の+方向を見て左回りに90度(+90°)回転、次に Y軸周りに+90°回転、最後に Z軸周りに+90°回転したときと、 X軸の+方向を見て左回りに90度(+90°)回転、次に Z軸周りに+90°回転、最後に Y軸周りに+90°回転したときと、 この2つで飛行機の翼とか胴体とかの向きが違うのです。ルービックキューブでも起こる現象ではあるのですが。 さて、これを計算するとなるとどうするか、というのは「四元数」(しげんすう)というのを活用して、行列との演算として、平行移動やアフィン変換などと同じように行列を順々に掛け算してベクトルなり座標を求める、という作業が必要なのですが、 "四元数" 飛行機 OR ルービックキューブ - Google 検索 http://www.google.co.jp/search?q=%22%E5%9B%9B%E5%85%83%E6%95%B0%22+%E9%A3%9B%E8%A1%8C%E6%A9%9F+OR+%E3%83%AB%E3%83%BC%E3%83%93%E3%83%83%E3%82%AF%E3%82%AD%E3%83%A5%E3%83%BC%E3%83%96 完璧に理解しようとすると完璧にはちょっと難しいので、手元にプラモデルなりルービックキューブなり、上下左右前後の区別がつくものを持って、回転させる軸の順番だけは重要だ、という実感だけは持って検討なさってください。 航空実用事典 - 日本航空 JAL http://www.jal.com/ja/jiten/dict/p062.html 飛行機 ピッチ ロール ヨー - Google 検索 http://www.google.co.jp/search?q=%E9%A3%9B%E8%A1%8C%E6%A9%9F+%E3%83%94%E3%83%83%E3%83%81+%E3%83%AD%E3%83%BC%E3%83%AB+%E3%83%A8%E3%83%BC
- info222_
- ベストアンサー率61% (1053/1707)
>X:Y:Z:=0:100:0 >と、 >X:Y:Z:=180:80:180 >が同じ向きを向くのはわかります。 同じ向きを向きません。 なぜ、同じ向きになるのですか? 質問者さんの考え方にしたがえば 度数法の角度(0≦角度<2π)を使うこととして X,Y,Z=0:100:0 と X:Y:Z:=180:280:180 ではないですか? >回転値にマイナスが入っている場合や360を超えている場合などでも >0~359度の数値に直すのはどのような計算式になるんでしょうか? 一般の回転角度をθ[°]で表す。 mod (a,b)関数を使えば mod(θ,360) (Google電卓の「θ modulo 360」 に対応) という計算式で「マイナスが入っている場合」や「360°を超えている場合」などに 対応できます。 X:Y:Z=mod (θx,360):mod (θy,360):mod (θz,360) 例 X:Y:Z=-10:380:-60のとき mod (X,360):mod(Y,360):mod(Z,360)=350:20:300 となります。
- stomachman
- ベストアンサー率57% (1014/1775)
> X:Y:Z:=0:0:0 > と書かせていただきます。 と言われてもですね、一体何をこう書くと仰っているのか、これじゃ説明になってません。ですが、 > X:Y:Z:=0:100:0 > と、 > X:Y:Z:=180:80:180 > が同じ向きを向く というヒントと、質問者氏のレベルから推測するに、 「空間に直交座標系を固定して、その軸をX軸、Y軸、Z軸とする。この空間に何かモノが置いてあるとする。そして、そのモノを『まずX軸を回転軸としてa度回す。次にY軸を回転軸としてb度回す。それからZ軸を回転軸としてc度回す』という操作を『X:Y:Z:=a:b:c』と書かせていただく」ということを仰っているのかな? いや、ただの推測ですが。 もしかしてそういう意味だとすると、ですね、 > また、回転値にマイナスが入っている場合や360を超えている場合などでも > 0~359度の数値に直す というご質問に対する答は: a, b, cのそれぞれについて、360の倍数を足したり引いたりしても、操作の結果は同じのままです。だから、答が0以上360未満の数値になるように、360の倍数を適当に足したり引いたりなされば良い。 というだけ。