• ベストアンサー

3次元上の座標軸の取り方

3次元空間をx軸、y軸、z軸で表す時、 各軸の正の方向をどちらに定義するのが便利なのか、 または、どちらに定義するのが一般的か、教えてください。 x軸正を正面に、y軸正を右手方向に定義した場合、 z軸正は鉛直上向きに定義するのがよいのか、 鉛直下向きに定義するのがよいか?です。 (xとyだけなら見る方向を変えたらどうにでもなりますので) ある分野の議論において、 もしどちらかの定義で不便なことが発生するならそれを教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.2

 一般的なのは、外積をとったときに右ねじの方向になるように設定されることが多いので、質問者さんのケースではz軸正は鉛直上向きになると思います。  例)x×y=z (ただし、x、y、zは各軸の方向を表す3次元の単位ベクトルで、×は外積を表す。)    y×z=x    z×x=y  外積を考慮する場合には、z軸正は鉛直上向きにとった方が勘違いをせずに済むので、こちらの方が良いかと思います。

ubutton
質問者

お礼

ありがとうございます。 「数学の外積」とは、結構強力な制約ですね。 これでほとんど決定な気がします。 今気づいたのですが、私の定義は一般の数学の逆だったかもしれません。 一般的な数学では、x軸正を正面にしたときはy軸正は左手方向でしたね(ノートを下において上から見たときの話ですが)。 ということは「私の質問の定義(数学一般と逆のxy定義)」だとz軸正は鉛直下向きにとる方がよい、の間違いではないですか? ややこしくてすみません。

その他の回答 (3)

  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.4

 #2です。お礼をありがとうございます。 >今気づいたのですが、私の定義は一般の数学の逆だったかもしれません。 >一般的な数学では、x軸正を正面にしたときはy軸正は左手方向でしたね(ノートを下において上から見たときの話ですが)。 >ということは「私の質問の定義(数学一般と逆のxy定義)」だとz軸正は鉛直下向きにとる方がよい、の間違いではないですか?  「x軸正を正面」というのは、ノートに対して奥から手前に向いていることを意味しているのでしょうか。でしたら、z軸正は確かに鉛直下向きになります。  しかし、私が一般的だと理解しているものは次のサイトに掲載されている図です。 http://www.geocities.jp/teditown/dim4/zahyo.html  x軸正はノートに対して奥から手前に向いているとき、y軸正は右向きで(左手方向ではありません)、z軸正はノートに対して上側になります。  私より良い説明をしているサイトがありました。これにより曖昧さが排除されることと思います。 <一般に使うのはデカルト座標系と呼ばれる体系です。立体幾何学では三つの直交する座標軸(x、y、z)で空間の位置を表します。細かい約束を言えば、(x、y)で水平面の座標を、z軸を垂直上向きに取り、(x、y、z)軸の向きが右手系(right-handed system)になるように選びます。蛇足ですが、右手系というのは、右手の親指・人差し指・中指を開いたときの向きの順に(x、y、z)軸の正の向きを決める方式です。このように決めると、(y、z、x)、(z、x、y)の順に座標軸を選んでも右手系の関係が保たれます。これを座標軸の「直交性・右手系の関係・単位長さ」の定義とします。右手系に対抗して左手系も考えられます。しかし、ベクトルの演算における外積(ベクトル積)が、右手系の約束で定義されますので、不注意で左手系の順番を混ぜて使うと符号が混乱してしまいます。> http://www.teu.ac.jp/clab/kondo/research/cadcgtext/Chap2/Chap202.html の第2段落です。

ubutton
質問者

お礼

ご回答いただきありがとうございました。

ubutton
質問者

補足

了解しました。ありがとうございました。

  • h191224
  • ベストアンサー率81% (119/146)
回答No.3

質問点が2つありますね? 1点目は、「x軸とy軸のように2軸が与えられた場合、他のz軸がどの方向を向くか?」という問題です。 数学や物理の世界では、何も理由がなければ、右手系座標系を使用する決まりになっています。 右手系座標系とは、右手の親指・人差指・中指を、互いに(ほぼ)直角になるよう、図のように位置させ、x軸を親指、y軸を人差指に合わせれば、残るz軸は必然的に中指の方向になるというルールです。 ここで、外積の概念は、余計な概念であって、全く不要です。(外積の演算結果の正負を決めるのに、上記の右手系の考え方が必要になるのであって、今のように、x、y、zの向きを決めるのに、外積は必要になりません。) 中指 =z |人差指=y  \ |   \|   /  / 親指 =x たまに、左手系の座標系が現れることもありますが、これは右手系で構成されたものを、ミラーコピーしたものなど、ごく限定された場合だけです。もし左手系を自由に使われると、それこそ外積や、rotの定義が狂ってきてしまいますので、その人の趣味で使用してはいけません。 2点目は、たとえば、コンピュータの画面(正確にはモニターの画面)内に座標系を設置するのに、画面内にx軸とy軸をとる(=画面をx-y平面とする)のが普通なのか、y軸とz軸をとる(=画面をy-z平面とする)のが普通なのか、という問題です。 これは、その人の住む世界によって違ってきます。 一般に地球や宇宙を相手にしている人たちの間には、”上がz軸”という暗黙のルールがあるので、コンピュータの画面内の鉛直方向上向きにz軸、右向きにy軸、画面から自分に向かう方にx軸をとります。 要するに、コンピュータの画面内が、y-z平面です。 3次元CADのなかでも、CATIAなどは、この考え方に従ってデフォルトの座標系を設定しています。 この種の人たちは、もし将来コンピュータの画面を水平置きで使うようになった場合には、画面内の座標系をx-y平面に変更して使うようになるはずです。 別の種類の考え方の人たちもいます。この世の中の図形は、基本的に、「平面図形 + 厚み方向の変化が付け加わったもの」という考え方です。 この場合、コンピュータの画面内がx-y平面であり、右向きがx軸、鉛直方向上向きがy軸、厚み方向は画面から自分に向かう方となって、これがz軸となります。 この考え方に従って、デフォルトの座標系を設定している3次元CADのの代表が、Pro/ENGINEERです。 この種の人たちは、もし将来コンピュータの画面が水平置きになった場合でも、画面内の座標系を変更する必要は感じないはずです。 「どちらに定義するのが一般的か」というご質問に対しては、「その世界で常識的に使用されている座標系に従いましょう。もしそれが存在しないのであれば、自分の好きなように、ただし右手系を踏み外さないように、決めて構いません。」というのが回答になります。

ubutton
質問者

お礼

ご回答いただきありがとうございました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

何に使うのかによって全く異なるね。 用途が決まらないのなら 定義もできない。 PC選びに似ている気がする。 なので「通常どっち」ってのは無い。 良く見る二次元表は左下が原点かもしれないけど作文用紙(これは座標軸といいがたいけど)は右上が原点。そしてPCの描画は左上が原点。どれも一般的。 だから用途が定まらないとどこが原点でどちら方向が正負なのか、定義できないでしょ?

ubutton
質問者

お礼

ご回答いただきありがとうございました。

ubutton
質問者

補足

用途は問いません。 用途とセットで答えて頂ければ結構です。 「作文用途では下がy軸正、左がx軸正」 「PC上のプログラミング用途では下がy軸正、右がx軸正」 こういう回答でOKです(欲しいのは3次元の議論ですが)。 3DCGプログラミング上は…、トポロジー幾何学上では普通は…、 という枕詞付きでOKです。 ひとつ用途(みたいなもの)を示唆しますと、 アフィン変換などを使うときに困らない選び方はあるか?です。 適当に選ぶと回転操作のときに回転行列にマイナスが付きまくったりするのです。 もしかするとそれは軸の正の取り方というより「正回転方向」の取り方だけに依存するのかもしれませんが。 あとは、3次元軸の取り方が厳密に定義されている分野というのがあるのかどうかを知りたいのです。 2次元では「PCディスプレイ」という「下がy軸正、右がx軸正とするのがどう考えても便利」な分野があるので 自分がある軸方向を定義したときに、 「軸の取り方はPCディスプレイの一般的な座標と同じで…」 「軸の取り方はPCディスプレイの一般的な座標と違って…」 などと議論できます。 3次元バージョンでそんな分野はないでしょうか? あれば、「軸の取り方は○○○分野の定義と同じで…」 のような議論ができるので知りたいのです。 「一般的にどの定義が一番良いか」でなくてもよく、 「この分野ではこういう理由で3次元座標の方向は厳密に定義されているよ」 みたいなものでよいので探しています。 (アフィン変換等の理由により、一般的にも便利な定義が唯一に存在するならそれに越したことはありません)

関連するQ&A

  • 3次元座標の求め方

    3次元座標の求め方 原点 0,0,0 を中心にした球体面上の正面から見た頂点座標で、 回転による移動後の座標の求め方を知りたいです。 例えば、球面の半径が 100 で、頂点の座標 x1, y1, z1 が 100, 0, 0 にある場合、 Y軸に対してπ/2 rad (90度)回転した座標 x2, y2, z2 は 0, 0, -100 になると思うのですが、 この新たな3つの座標 x2, y2, z2 を導くにはどのように計算しているのでしょうか。 平面上の円運動のように cos sin の組み合わせ等で導き出せるのでしょうか。 x1, y1, z1 から、 Y軸に対してr回転 した場合の各 x2, y2, z3 の出し方 X軸に対してθ回転 した場合の各 x3, y3, z3の出し方 Z軸に対してΘ回転 した場合の各 x4, y4, z4 の出し方 のような形で、導くための計算を順にお教えいただけると嬉しいです。 最終的には、元座標 x, y, z をY軸にr、更にそこからX軸にθ、更にそこからZ軸にΘで X, Y, Z になる、といった形で求められるようになりたいと思っています。 座標は原点 0, 0, 0を中心に 上に行くほどYが「減少」 右に行くほどXが「増加」 奥に行くほどZが「増加」 Y減少 ↑ _ Z増加 │/` ├─→ X増加 という形になっています 自分のわかる限りで質問内容を細かく記述したつもりですが、 数学の知識に乏しいので、記号などの使い方や説明の不備があるかもしれません。 何か不足があった場合には補足させて頂きます。 以上宜しくお願い致します。

  • エクセルを用いた3次元座標変換

    3次元座標空間において、座標軸を回転移動させて三つの基準座標点のz座標をすべて0にする方法を教えていただけないでしょうか。 例:(x1,y1,z1), (x2,y2,z2), (x3,y3,z3) →(回転移動)→ (x1',y1',0), (x2', y2', 0), (x3', y3', 0)  よろしくお願いします。

  • 空間の座標について

    空間図形の座標なんですが、 進行方向に対して、左右方向がX軸 進行方向をY軸、深度をZ軸としたX-Y-Z空間があります。 X-Y平面でY軸を0とした時の角度をβ X-Y平面とZ軸と方向との角度をα 原点から(x、y、z)までの距離をLとする このとき、点(x、y、z)をもとめるにはどうしたらよいのでしょうか? ちなみにx=y=zは0ではありません できれば三角関数を使った解法を教えてください ちなみに (x、y、z)=(Lsinβ、Lcosβsinα、Lcosβsinα) という答えらしいんですが、さっぱりわかりません・・ って、うまくかけてない・・・

  • 3次元で放物線を奥に45度回転

    3次元空間で放物線z=x^2をz軸を中心として、y軸方向に45度回転させたときの 放物線の式はどのようにして求まりますか?

  • エクセルを用いた3次元座標変換

    3次元座標空間において、座標軸を回転・平行移動させて3つの座標点のz座標をすべて0にする方法を教えていただけないでしょうか。 例:(x1,y1,z1), (x2,y2,z2), (x3,y3,z3) →(回転・平行移動)→ (x1',y1',0), (x2', y2', 0), (x3', y3', 0)  また、この3つの座標点以外の座標点についても、 これと同じ回転・平行移動を一括して行う方法があれば教えてください。 よろしくお願いします。

  • 三次元座標の回転角度

    左手系三次元座標A(X,Y,Z)がB(x,y,z)に移動したとき、原点からみたZ軸の回転角度Θの算出は、 Θ=Atan(y/x)-Atan(Y/X) でいいですか。よろしくお願いします。

  • 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と各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 4次元の座標系の書き方教えてください

    4次元の図形を理解するうえでまず四次元の座標系を図示できるようになりたいのですが、どのように書けばよいのでしょうか? 理論象限数が16あるはずですけど、x,y,zの座標軸が直交した図に対してどのようにもう一本座標軸として線を引いてみても、象限の内部の点についてたとえば(正,負,正正)なら、そのようになる象限がだぶってできてしまったして、整合性が取れた図になりません。

  • 時間軸は1次元でよいのでしょうか?

    時間軸は1次元でよいのでしょうか? (混乱するので虚数時間の話はしないで下さい) 「4次元時空」というと3次元の空間軸(x,y,z) +1次元の時間軸(t)と思いますが、 今、物体AとBがある点Pから等速直線運動で 互いに60度の角度で同じ速度vで離れてゆくと 、出発時刻をt、経過時間をtxとした場合、 t+tx後のAの位置とBの位置、更にP を頂点とする正三角形の底辺がAB間の距離 となります。 それはまたAB間の相対時差でも あります。(この角度が変わると三角関数で距 離が求まります。) さて、ABの進行角度が異なるとABが等速でも 相対時差が三角関数的に変化してしまうという ことは、進む方向(3次元ベクトル)によって相対 時差の変化量が変わるので時間の経過速度は 同じでも進行方向別に、つまりA方向時間軸、B 方向時間軸などの3次元で時間軸を考えるのが 「より適切」なのでは?と思った次第です。 (時間進行が異なるような特殊環境でしか必要 無いかもしれませんが...計算面倒になるし 飛行機の便ごとに時間軸違ったら大変なことに ...実は若干違うらしいですよね) そうすると空間は3次元、時間も実は3次元で 等価どころか完全にイコールになるかと...良 し悪しは別ですが.. たまたま同じ進行に感じるだけで、同じ位置に いない限り実は個別時間が流れているなら そのほうが妥当な気がするのですが... (実用上の要不要は別としてです...) どうしてこんな変なことばかり思いつくんだろう?

  • 3次元の座標変換と角度について。

    3次元のシミュレーションの勉強をしています。 3次元の座標変換で x,y,z:変換前の座標; x',y',z':変換後の座標; θ:回転する角度; lx,ly,lz:平行移動量; としたとき、 X軸に関する回転              |1 0   0    0|              |0 cosθ sinθ 0| [x' y' z' 1] = [x y z 1]|0 -sinθ cosθ0|              |0 0   0   1| Y軸に関する回転              |cosθ0 -sinθ0|              |0   1 0   0| [x' y' z' 1] = [x y z 1]|sinθ0 cosθ 0|              |0   0 0   1| Z軸に関する回転              |cosθ sinθ 0 0|              |-sinθcosθ0 0| [x' y' z' 1] = [x y z 1]|0   0   1 0|              |0   0   0 1| 平行移動              |1 0 0 0|              |0 1 0 0| [x' y' z' 1] = [x y z 1]|0 0 1 0|              |lx ly lz 1| 物体の姿勢を表現するときは [物体の姿勢の変換行列] = [Z軸の回転行列][X軸の回転行列][Y軸の回転行列][平行移動]  |XX XY XZ 0| XX,XY,XZ・・・X軸の単位ベクトルを変換した場合のベクトル  |YX YY YZ 0| YX,YY,YZ・・・Y軸の単位ベクトルを変換した場合のベクトル = |ZX ZY ZZ 0| ZX,ZY,ZZ・・・Z軸の単位ベクトルを変換した場合のベクトル  |LX LY LZ 1| LX,LY,LZ・・・平行移動量ベクトル というのは分かるのですが、 X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから X軸、Y軸、Z軸にそれぞれ何度ずつ回転させたかを求めるにはどのようにすればよいのでしょうか? つまり、X軸に対して30度、Y軸に対して45度、Z軸に対して60度回転させた後の |XX XY XZ 0| |YX YY YZ 0| |ZX ZY ZZ 0| |LX LY LZ 1| の値からX軸に対して30度、Y軸に対して45度、Z軸に対して60度回転している事を導きたいのです。 分かる方教えてください。 お願いします。 (質問に関して、 http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html を参考にさせていただきました。)