• 締切済み

3軸の回転値について

X:Y:Z:=0:0:0 と書かせていただきます。 X:Y:Z:=0:100:0 と、 X:Y:Z:=180:80:180 が同じ向きを向くのはわかります。 また、回転値にマイナスが入っている場合や360を超えている場合などでも 0~359度の数値に直すのはどのような計算式になるんでしょうか? いまいち想像ができないので教えてください。

みんなの回答

回答No.4

回転は回転軸を「どこに」 固定するか(空間か物体か) どの順番で回転させるかで 違ってきます。 軸を物体に固定し3個の角度で回転を表わす オイラー角だけでも12種類あります。 ご自分の回転の定義を確認してみて下さい。

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.3

面倒なことに、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)
回答No.2

>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)
回答No.1

> 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の倍数を適当に足したり引いたりなされば良い。 というだけ。

関連するQ&A

  • 回転後の座標について 5軸加工機

    今年中に、OKKの縦型マシニング機械(三菱Neomatic)に日研のNCインデックス(角度と回転ができる仕様)を載せる予定です。 使いやすくするため、テーブル回転後の座標を、変数で計算ができるプログラムを作っているのですが、うまくいかず頭をかかえてる毎日であります。 そこで、皆様の力をお願いしたく質問させていただきます。 私の希望としては、 #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) 上記、G54座標中心からずれた数値(#101から#103)から、回転&角度(#104、#105)の数値を変更するだけで、ひねった後の座標を計算し、その答えをG55の座標系に入れるプログラムを作っているのですが、いくつか問題がある為うまくいきません。 ◎G54のワーク座標がテーブル回転中心ではない。 ◎G54のワーク座標の中心位置から、さらにずらした位置を回転させたい。 ◎X,Y,Z及び、回転軸C、角度軸A 共にプラス数値とマイナス数値があり計算が困難。 ◎回転軸C、角度軸A 共に90度以上回る。 この様な原因があり、電卓で計算した数値と変数で計算させた数値が違い、困った次第であります。 機械の特徴としては、 ◎機械座標はマイナス数値 ◎テーブル回転中心座標は#501=X #502=Y #503=Z に登録済み。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5221=G54X座標 #5222=G54Y座標 #5223=G54Z座標 に登録したい。 文章が下手で申し訳ありませんが、どなたか変数を使い回転後の座標が計算できるプログラムをお教え下さい。 不明な点等ございましたらお教え下さい。 大変困っているので宜しくお願いします。 まとめの部分を下記の様に修正いたします。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5241=G55X座標 #5242=G55Y座標 #5243=G55Z座標 に登録したい。

  • 回転した座標軸と一致させるための回転軸と角度の算出

    こんにちは。お知恵をお借りしたく質問致します。 プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。 ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。) 図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。 また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)です。回転方向は、ベクトルの向きに時計回り…右ネジの法則みたいな感じです。 x軸から見たXの角度(θxX), y軸からのX(θyX), z軸からのX(θzX) 同様にx軸から見たY(θxY),θyY,θzY、θxZ,θyZ,θzZ といったように、それらの角度(コサイン値)は分かっています。 (=xyz座標からみたXベクトルの方向余弦、Yベクトルの方向余弦、Zベクトルの方向余弦が分かっている。) z軸とZ軸の外積を取ったベクトルを回転軸として、θzZが分かっているのでその角度で回転することでZ軸は一致しますけど、XY軸は合いません。(当然ですが…) そのXY軸を合わせるためにまた回転するというのも遠回りで、任意の軸1本を中心に何度か回転するだけ(上記関数を1度使用するだけ)で、必ず向きが一致する解があると思うのですが、その任意軸と角度を算出する方法が分かりません。 一般にどういう計算をするのでしょうか。アドバイスいただければ幸いです。 なお、上記関数を用いない方法でも構いません。 「X軸(Y軸、Z軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。 その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。 どうかよろしくお願いいたします。

  • 任意の軸に回転するための角度を知りたい

    右手系の直交座標系で基準のベクトル(0,0,1)があったとします。 x軸周り、y軸周り、z軸周りの順番で基準のベクトルを回転してベクトル(x,y,z)にする時、z軸周りの回転角度は決まっていて、残りのx軸とy軸をそれぞれ何度回せばいいのか計算する方法を教えて下さい。

  • 物体をXYZ軸で回転すると?

    いつもお世話になっています。 CAD図で物体を描いて、X、Y、Z軸でそれぞれ回転したいのですが よくわかりません。 添付の画像ではY軸で270度回転させているのですが、 X軸、Z軸で270度回転させた場合、画像の通りでよいでしょうか?

  • 空間での座標回転角度の求め方とは

    空間上にある点A(x,y,z)をX,Y,Zを基準として(θx、θy、θz)で回転させます。この回転でできた点をBとします。 そのBを同じ様にX,Y,Zで回転させて元へ戻したい場合、 X,Y,Zの順番で回転させているので、 戻すにはZ,Y,Xの順番に回転させればB=Aとなると思います。 tanや内積などを使い、回転角度を考えその角度で回転させることを考えました。 しかし、tanを用いた場合も内積で考えた場合も多少誤差が生じます。(θx=60度になるはずが、計算すると57度になったりする) 正しく回転角度(θx、θy、θz)を求めたい場合はどうすればいいのでしょうか? 一応回転の式はグラフィックス関係の本から調べました。 また自分でθx、θy、θzを入力した場合A=Bとなるので、 式は問題ないと考えています。 現状ではBを逆回転する際のθzを tan(√(Bx^2+By^2)/√(Bz^2))=θz Z軸逆回転したものをB'とすればθyは tan(√(Bx'^2+Bz'^2)/√(By'^2))=θy さらにY軸逆回転したものをB~とすればθyは tan(√(By~^2+Bz~^2)/√(Bx~'^2))=θx となりこれで求める事ができると考えています。 内積で考えた場合は内積の式からcosθを求め、acos(cosθ)で求めています。 長々とすみませんが、よろしくお願いします。

  • 3次元の回転角度の求め方について教えてください。

    3次元の回転角度の求め方について教えてください。 3軸の加速度センサーがあります。 まず加速度センサーのZ軸を重力方向に置いたときの加速度センサーの値を(x1,y1,z1)=(0,0,1)とします。 加速度センサーのx軸、y軸、z軸をそれぞれ回転させたあとの加速度センサーの値を(x2,y2,z2)とします (このとき加速度センサーは静止しているので、センサーの値は重力の分力になります)。 (x2,y2,z2)が既知のとき(x1,y1,z1)に戻すためのそれぞれの回転角はどのように求めれば良いのか教えてください。 (x2,y2,z2)→(x1,y1,z1)へ移動するときの回転角を φ(z軸の回転角)、ψ(x軸の回転角)、θ(y軸の回転角) とします。 回転行列 (x1) = (cosφ -sinφ 0) (cosθ 0 sinθ) (1 0 0 ) (x2) (y1) = (sinφ cosφ 0) (0 1 0 ) (0 cosψ -sinψ) (y2) (z1) = (0 0 1) (-sinθ 0 cosθ) (0 sinψ cosψ ) (z2) より,3行3列の行列を計算すると 0=cosφcosθx2 + (-sinφcosψ+cosφsinθsinψ)y2+(sinφsinψ+cosφsinθcosψ)z2 0=sinφcosθx2 + (cosφcosψ+sinφsinθsinψ)y2+(-cosφsinψ+sinφsinθcosψ)z2 1=-sinθx2 + cosθsinψy2 + cosθcosψz2 となると思うのですが、この式からφ、ψ、θが導きだせません。 どうすれば求めることができるか教えていただけますか。

  • y=x軸回転の体積計算

    どこかで見た問題なのですが解答もなくこれが答えだという確信がなくてこまってます。 y=xとy=x~2で囲まれた面積をy=xを軸にして回転してできる立体の体積を求める。 ひとつとして原点からy=x上の点をtとおき法線を考えてy=x~2までのキョリをtの関数としてだしたのちにt(0→√2)で積分していくイメージがあるのですが計算が好ましいようにいきません。 またふたつめとして最終的にできる立体的図形をz軸を作って考えてz=kのときのxy平面をkの関数として出しzの値域で積分…、なんて考えてます が結局うまくいってません>< わかる方教えてください。基底の変換の解き方もあるのかなって考えてます。

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 3次元座標での点の回転について

    3次元座標上に複数の点があり、それらを同時にx,y,z軸周りにφ,θ,Ψ度回転させたとき、 各点の移動前と移動後の座標から、この回転角度φ,θ,Ψを求めたいのですが、 どのような計算で求めることができるでしょうか?

  • y=xを回転軸とする回転体の体積 (再)

    添付の画像の定積分Vを上手に計算できる方法はないでしょうか? 被積分関数を展開して、項ごとに部分積分などを考えて計算すれば答えに辿りつけますが、計算量が多くてまいっています。(これぐらい計算しろってこと?) 本質的には、Vは、関数 y=x と曲線 y=(e^x - 1)/2 によって囲まれる部分を y=x を軸として回転して得られる回転体の体積を表しています。 ちなみに、問題文は、 Vは次の式で与えられる。ア、イ、ウにはいる数適切な式を答えよ。 V = (アα^3 + イα^2 + ウα)π  として与えられています。Vがαの3次式の形で表されることがわかっていますが、このことは、 Vの計算に役立つでしょうか? αは2つのグラフの交点のうち原点でない方のx座標(y座標)で、 e^α=2α+1 を満たします。