• ベストアンサー

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