• ベストアンサー

3次元での座標の移動

現在の座標値S(x0,y0,z0)と目標値G(x1,y1,z1)がわかっているときに、 SをGに移動させるのは、どのような行列になるのでしょうか? つまりS,Gがわかっていて以下の式の行列Aをもとめたいということです。 G=A*S 解かる方教えてください。お願いします。

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

  • ベストアンサー
  • masudaya
  • ベストアンサー率47% (250/524)
回答No.2

どういう風に移動させたいのでしょうか? 拡大,回転,その他1次変換,または平行移動... それによって回答が異なります. 1)1次変換(拡大・回転も含む)の場合 この場合は行列Aで表現されますが,行列の要素数が は9個となり,質問のように座標を与えると G=A・S が表現する方程式は3個しかないので,上の方程式は解けません. 2)平行移動の場合 この場合は#1の方も述べているように,線型性がないので,行列では表現できません.ただ, G=f(S) のように関数と考えると, G'=f(x)=(G-S)+x のように表現可能です.

その他の回答 (1)

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

平行移動は座標に定数項を加えるわけですから,線型演算ではありません. したがって座標変換行列と座標ベクトルの積の形にはならず,次のようになります. 平行移動量:T = (tx, ty, tz) = (x1 - x0, y1 - y0, z1 - z0) 平行移動前の座標:P = (x, y, z) 平行移動後の座標:P' = (x', y', z') とすると, P' = P + T これを行列とベクトルの積の形にしたいのであれば, 次のような同次座標 (斉次座標) を使えば可能です. Q = (x, y, z, 1) Q' = (x', y', z', 1) A = ((1, 0, 0, tx), (0, 1, 0, ty), (0, 0, 1, tz), (0, 0, 0, 1)) とすると, Q' = A Q 同次座標は3DCGなどでよく使います. 「同次座標 平行移動」で検索してみてください. http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-34,GGGL:ja&q=%2B%E5%90%8C%E6%AC%A1%E5%BA%A7%E6%A8%99+%2B%E5%B9%B3%E8%A1%8C%E7%A7%BB%E5%8B%95

参考URL:
http://markun.cs.shinshu-u.ac.jp/learn/cg/cg6/index3.html

関連するQ&A

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

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

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

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

  • 3次元の極座標について

    x=rsinθcosφ y=rsinθsinφ z=rcosθ というのが3次元における極座標表示のようですが、なぜこのような式になるんですか? このような式にいたるまでの過程を教えてください。 できるだけ分かりやすく教えてほしいので、行列などを使っての説明はできるだけしないでください。 よろしくお願いします。

  • 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増加 という形になっています 自分のわかる限りで質問内容を細かく記述したつもりですが、 数学の知識に乏しいので、記号などの使い方や説明の不備があるかもしれません。 何か不足があった場合には補足させて頂きます。 以上宜しくお願い致します。

  • MATLABを使った三次元座標の回転を求めたい

    二つの三次元座標(X,Y,Z)と(X',Y',Z')の回転および移動距離を求めたいのですが、どのようにして求めることができるのでしょうか?色々行列の本を読んでみたのですが、文系出身だったので内容がきちんと理解できていません。ご指導よろしくお願いします。

  • 3次元座標において3つの球の球面上の点が交差する

    3次元座標において3つの球の球面上の点が交差する 座標(x,y,z)を求める。 球1中心座標(x1,y1,z1)半径R1 球2中心座標(x2,y2,z2)半径R2 球3中心座標(x3,y3,z3)半径R3 球の方程式は以下になります。 (x-x1)X(x-x1)+(y-y1)X(y-y1)+(z-z1)X(z-z1)=R1XR1 (x-x2)X(x-x2)+(y-y2)X(y-y2)+(z-z2)X(z-z2)=R2XR2 (x-x3)X(x-x3)+(y-y3)X(y-y3)+(z-z3)X(z-z3)=R3XR3 これはもう地道に解くしかないのでしょうか?平面を使うのだとか 現実世界でアドバイスをもらったのですが一向に解けません… よろしくお願いいたします。

  • 3次元座標2点からの直線式の求め方

    お世話になります。 3次元座標2点からの直線式(ax+by+cz=0)の求め方を教えて下さい。 2次元座標であれば、1つの傾きから算出できるのですが、3次元座標になると、X-Y平面、Y-Z平面での傾きの使い方がこんがらかってしまいます。 基本的な質問で申し訳ありませんが、よろしくお願い致します。 座標1 = (x1,y1,z1) 座標2 = (x2,y2,z2) 以上

  • 座標情報(3点)から形状の移動回転の算出

    ある形状に対して任意の3点の座標位置 (X1,Y1,Z1)(X2,Y2,Z2)(X3,Y3,Z3)があるとします。 その形状が振動を起こした場合 その座標位置がその時々で変化しますが その形状がどのように移動/回転したのかを この3点の座標情報から算出することが可能なのでしょうか? できればその算出式が知りたいのですが・・・

  • 三次元座標の回転角度

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

  • 4次元以上の座標からできる平面と点との距離の求めかた

    4つ以上の座標をもつ3点A1(x1,y1,z1,w1...)、 A2(x2,y2,z2,w2...)、A3(x3,y3,z3,w3...)からできる平面と 点T(x4,y4,z4,w4...)との距離をベクトルなどで求めることは可能ですか? 公式などありましたら教えてください。