• 締切済み

回転と変換の合成(三次元)

1. x=3,y=4 を通り、z 軸に 平行な軸A の回りにθ回転さ      r00  r01  r02  tx                           r10  r11  r12  ty せる変換の行列を書きなさい。 r20 r21 r22 tz                        0 0 0 1 (同次座標形式で) 2. θ=90°の時、変換行列を示しなさい(数値で)。 3. 点(8,3,20)は上記(問題2)の回転操作でどこに 移るか。

みんなの回答

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.1

参考URLのアフィン変換をご覧ください。 1. 同次座標形式での行列を考えます。 (3,4,z)を(0,0,z)に平行移動する行列M1:  M1=[[1,0,0,3],[0,1,0,4],[0,0,1,0],[0,0,0,1]] z軸を中心に反時計回りに90°回転する行列M2:  M2=[[cosθ,-sinθ,0,0],[sinθ,cosθ,0,0],[0,0,1,0],[0,0,0,1]] (0,0,z)を(3,4,z)に平行移動する行列M3:  M3=[[1,0,0,-3],[0,1,0,-4],[0,0,1,0],[0,0,0,1]] とすると、回転軸をM1によりz軸に移動して、それをz軸の回りにθだけ反時計周りに回転し、その後、回転軸をM3によりもとに戻せば良いから、 求める行列Mは M=M3M2M1 という行列の積によって求められる。行列の積を計算すると M=[[cosθ,-sinθ,0,4sinθ-3cosθ+3],[sinθ,cosθ,0,-3sinθ-4cosθ+41],[0,0,1,0],[0,0,0,1]]  =[[r00,r01,r02,tx],[r10,r11,r12,ty],[r20,r21,r22,tz],[0,0,0,1]] となります。 2. θ=90°とおくと  M=[[r00,r01,r02,tx],[r10,r11,r12,ty],[r20,r21,r22,tz],[0,0,0,1]]   =[[0,-1,0,7],[1,0,0,1],[0,0,1,0],[0,0,0,1]] 3.  X=M[[8],[3],[20],[1]]=[[4],[9],[20],[1]] 点(4,9,20)に移る。

参考URL:
http://www.wakayama-u.ac.jp/~tokoi/lecture/gg/ggbook03.pdf

関連するQ&A

  • 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 を参考にさせていただきました。)

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

  • 行列 同次変換 回転 並進

    行列 同次変換 回転 並進 同次変換について質問させて下さい。 同次変換はよく、(X Y Z 1)のように 4列の行列で表されます。 4行4列の同次変換を表す行列で、 例えば、4行目が(1 2 3 1)とはXに1、 Yに2、Zに3の並進を表しています。 ここで質問なのですが、最後の4列目 はなぜ1と書かれるのでしょうか?

  • 同次変換について

    前回の質問で同次変換とはどのようなものかおおよそ理解する事が出来ました。 追加質問したのですが、解決できないので新たに再質問させて頂きます。 前回の質問内容:http://okwave.jp/qa/q6934077.html 変換という言葉は理解できました。 同次変換とは、1次元多い行列で表現された変換をさす。 一次元多い理由は、並進を表すため。 数学的に定義される変換は、ユークリッド変換、アフィン変換、射影変換の 3つである。 ユークリッド変換についてよく理解できないので教えてください。 これは線形変換とは異なりますよね。線形変換であれば、並進は含みませんから。 アフィン変換は、線形変換に並進を加えたものだと認識しております。 アフィン変換とユークリッド変換の違いはなんでしょうか? ユークリッド変換の方がアフィン変換より集合的に大きいことはわかるのですが・・・ また同次変換を、 X Y Z 1 と表している記述を良く見ます。 具体例を挙げると、 基準座標系を(x y z 1)、対象座標系(X Y Z 1) と表す。 対象座標系は基準座標系をx軸にθ回転、x軸に3平行移動した ものとする。 X x|1   0    0    3 | Y= y|0  cosθ  sinθ  0 |  Z  z|0  -sinθ  cosθ 0 | 1 1|0   0     0   1 | のように表されると思います。 ここで、同次変換を X Y Z W と表すとすると、変換行列の4列目は、どのようにあらわされるのでしょうか? X x|1   0    0    ? | Y= y|0  cosθ  sinθ  ? |  Z  z|0  -sinθ  cosθ ? | W ?|0   0     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つの座標点以外の座標点についても、 これと同じ回転・平行移動を一括して行う方法があれば教えてください。 よろしくお願いします。

  • 直交変換と回転は同じものなの?

    座標の回転が直交変換なのは任意の回転がx軸の回転とy軸の回転とz軸の回転の組み合わせであることから理解できます しかしその逆が分からないのです つまり直交変換は座標の回転なのかどうかです 3次元直交座標Aと3次元直交座標Bがある 空間に点Pがある PのAによる座標を(x,y,z)=a^Tとし PのBによる座標を(X,Y,Z)=b^Tとする そこで質問します 「U^T・U=Eかつ|U|=1である3次正方実行列Uがあり任意のPについてa=U・bならばBはAを原点を中心に回転したものである」 は正しいのですか? 正しければどうしてなのですか? 正しくなければどうしてなのですか? よろしくお願いします

  • 三次元座標変換について質問

    みなさんこんにちは。 G68の機能を用いて三次元座標変換をしようと考えています。 以下のような指令を用いてテストを行ってみました。 例?)G68X0.Y0.Z0.I1.J0.K0.R30. 例?)G68X0.Y0.Z0.I0.J1.K0.R30. ところが、例?、?のように回転中心座標軸I、Jで指令しても 常にZ軸が回転中心となって座標変換されてしまいます。 このような現象が起こってしまう原因としてどのような要因が考えられますでしょうか。 お手数ですが教えていただけると幸いです。 ちなみに制御装置はFANUC 15iMAです。 宜しくお願い致します。

  • 3次元空間の回転行列

    3次元空間上の点A(X,Y,Z)と点B(X',Y',Z')があるとします。ただし、点Bは、点Aを原点Oを中心とする3次元空間の回転をさせることによって得られる点とします。 このAをBへと回転させる行列を、特に以下のように考えて得られる回転行列として導出する方法を教えてください。 O,A,Bによって作られる平面に直交し、原点を通る軸を回転軸として、それを軸にAを∠AOB回転させる。 一応自分なりに考えたこの回転行列を求める方法としては、まず ベクトルOA、OBに対してシュミットの直交化を用いて新たな正規直交基底、Vx、Vy、Vzを求めます。ただし、はじめのVxの導出にはOAを用い、VzはVxとVyの外積を計算しました。 次にP=(Vx,Vy,Vz)として座標変換の行列Pを作ります。 そして、求める行列Wを W = PMz(P^-1) (Mzはz軸まわりに∠AOB回転させる行列、P^-1はPの逆行列) として導出しました。 このようにして解く方法を考えたのですが、これは正しいのでしょうか? また、これ以外にもっとスマートに解く方法があれば教えてください。 よろしくお願いします。

  • 射影平面の曲線(射影幾何学?)

    射影平面Pにおいてその上の曲線Cの定義とは、同次多項式F(x,y,z)を用いてF(x,y,z)=0の解集合ですが、確かに同次多項式ならば(x,y,z)がその解ならば任意のt≠0について同次座標(tx,ty,tz)も解になります。 しかし非同次多項式fで、解のどの同次座標もf=0の解になるようなものは本当にないのでしょうか? つまり言い換えると(非同次多項式)=0なる方程式の解集合は射影平面の曲線になり得ないのでしょうか?

  • 誤差を最小化する相似変換行列の求め方

    三次元の変換行列について質問です。 空間上のある3点について、座標変換前と変換後の座標が与えられているとします。 その座標を元に、行った変換の表す行列を知りたいと考えております。 ただし変換は並進と回転のみとし、剪断変形等は行わないという条件です。 (行列は同次変換の形などで得られれば良いです) ただし、変換前と変換後では三点の相対的な位置関係は完璧には一致しておりません。 そのため得られた変換を元の3点に行った際に、変換後の3点の座標(既知)との 誤差を最小化したいという問題です。 変換が相似変換でなければ疑似逆行列により計算が可能と思いますが、 並進・回転のみなのでどうしようか聞きたいと思い質問をしました。 パラメータは「x, y, z 軸方向の並進移動量 + x, y, z 軸周りの回転量」の6つなので、 プログラムを組んで6パラメータを少しずつ変化させ、 誤差の二乗和が最小となる箇所を探すという方法は思いついております。 ですが、その他に行列計算により解析的に答えを得る方法はないでしょうか。 また、変換前後の3点を元に誤差を最小化する変換行列を得ることが可能であるなら、 座標の情報が3点でなくそれ以上の場合でも計算は可能でしょうか。 よろしくお願いいたします。