• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同次変換について)

同次変換とは? ユークリッド変換とアフィン変換の違いは?

このQ&Aのポイント
  • 同次変換は、1次元多い行列で表現された変換を指す。具体的には、並進を表すために一次元を追加する。
  • 数学的に定義される変換には、ユークリッド変換、アフィン変換、射影変換の3つがある。
  • ユークリッド変換は、線形変換とは異なり、並進を含む。アフィン変換は、線形変換に並進を加えたものである。同次変換を行列で表現する場合、4列目は任意の値で表される。

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

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

#2,#3です。 >ですから、正しく表現するには、 >(4×4)×(4×1)=(4×1)ですね。・・・(A) >もしくは、 >(1×4)×(4×4)=(1×4)ですね。・・・(B) >(A)の表現を採用します。 >基準座標系を(x y z 1):列ベクトル、対象座標系(X Y Z 1):列ベクトルとする。 >基準座標系をx軸にθ回転、x軸に3平行移動した同次変換は、 >(X) ( 1   0    0   0)(x) >(Y)=(0 cosθ -sinθ  0)(y) >(Z) ( 0 sinθ  cosθ  0)(z) >(1) ( 3   0    0   1)(1) >と表されると思います。 > >ここまでで間違いはありますでしょうか? 間違っています。 (A)の表現を採用するといいながら、変換行列は(A),(B)の両方の表現が交じり合ってへんてこな行列になっています。(A)と(B)では行列の掛け算の順序が逆になります。 A#2の参考URLを参考にして下さい。 そしてお書きの変換行列方程式 X= Y= Z= 1= を、行列を使わないで、4つの方程式として書き出して見て下さい。 本来の変換の式になっていることに気が付くと思います。 (A)と(B)の行列表現では、回転と平行移動の合成変換行列を計算する時の 行列の計算順序が逆になることは理解して見えるでしょうか? おかしな合成行列をお書きなので同じ4x4行列でも行列の掛け算の順序を 逆にして見えないかと危惧してます。

RY0U
質問者

補足

ご回答ありがとうございます。 私は、全然理解出来ていないようですね・・・ ご指摘ありがとうございます。 まず、行列の演算について、 (4×4)×(4×1)=(4×1)ですね。・・・(A) もしくは、 (1×4)×(4×4)=(1×4)ですね。・・・(B) の計算自体は正しいですよね? 変換行列の書き方が間違っているという認識なのですが、どうでしょうか? 変換行列に関して、それぞれの成分を行方向と列方向どちらの方向に並べて良いのか理解できていません。NO.3の補足質問では、x成分の変換行列を1行目に、y成分を2行目に、z成分を3行目に、並進を4行目に左から順に並べました。 変換行列の書き方には、規則があるのでしょうか?この点が理解できていないと、 X= Y= Z= 1= の方程式を正しくかけないです。 因みに、NO.2の参考URL3次元座標系と3次元幾何変換でも変換行列は行成分でabcdと並べられていました。 >(A)と(B)の行列表現では、回転と平行移動の合成>変換行列を計算する時の行列の計算順序が逆に >なることは理解して見えるでしょうか? 理解できていないです。。。 計算順序が逆になるとはどういうことですか? 本当に何度も申し訳無いのですが、ご回答よろしくお願い致します。

その他の回答 (3)

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

#2です。 A#2の補足について >行列の式に関しては、 >[m×n型][n×p型]=[m×p型] となるという基本は理解しています。 >列ベクトルと行ベクトルの転置は同じになるので、書きやすい列ベクトル >で書かせて頂きましたが、正確には行ベクトルでなければ行列の積と >しては成り立ちませんね。すいません。 本当に分かって見えるのでしょうか? A#2にあげた参考URLをちゃんと熟読して見ましたか? そうなら、以下のような式は書けないはずですが? また、読めば、変換行列も分かるはずだと思いますがね? >書き直します。 >X          |1   0    0    3 | >Y=|x y z 1| |0  cosθ  sinθ  0 |  >Z           |0  -sinθ  cosθ 0 | >1          |0   0     0   1  | 「=」の左側は列ベクトル、右側は行ベクトルで、等号で結ばれるはずないだろう? 行列式は「|」を使い、ベクトルと行列は「 [ ] 」または「 ( ) 」を使って囲って 区別して下さい。 A#2の参考URLの中の変換行列の式の書き方に習って書いて下さい。ちゃんとURLを 見たなら上記のような書き方はしないと思いますが、全く読んでいないなら、参考URL を書いても無駄、回答しても無駄ですね? [X,Y,Z,1]=[x,y,z,1]*A と書いた場合の変換行列Aと [X] [x] [Y]=A*[y] [Z] [z] [1] [1] と書いた場合の変換行列Aと を書いてみて下さい。 質問者さんの書いてる変換行列は上の両者の行列Aを取り違えて見えるようです。 ちゃんとA#2の参考URLのやり方で、やれば両者の行列Aが容易に出てきます。 ちゃんと計算してみて、その結果を補足にお書き下さい。 アフィン変換行列は 「拡大行列*回転行列*平行移動行列」で表せる変換行列ですが、 質問者さんがお書きの同次変換行列は どのような機能をアフィン変換行列に追加したものですか? また、変換後の行列要素(ベクトル成分)を返還前の行列要素(ベクトル成分)を使って書き下した方程式として表してみて補足にお書きください。 そうすれば、後半の変換行列表現が明らかになると思います。 A#2の参考URLを熟読して、x軸の周りの回転行列とx軸方向への平行移動行列を求め、その行列の積を求めてみて下さい。補足質問でお書きの変換行列の正しい行列が出てきますよ。 追加参考URL(アフィン変換)

参考URL:
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?3D%BA%C2%C9%B8%CA%D1%B4%B9
RY0U
質問者

補足

ご回答ありがとうございます。 今まで頂いた参考URLをしっかりと読ませて頂きました。 まず、間違えている点は(行列積を×であらわしています)、 (1×4)×(4×4)=(1×4)の行列式になるという点ですね。 私の書いている行列では、変換後が(4×1)の行列式になって います。列ベクトルや行ベクトルの転置行列は等しくなるから どちらで表現しても良いと勝手に解釈しておりました。 これが間違い・混乱の原因です。 ですから、正しく表現するには、 (4×4)×(4×1)=(4×1)ですね。・・・(A) もしくは、 (1×4)×(4×4)=(1×4)ですね。・・・(B) (A)の表現を採用します。 基準座標系を(x y z 1):列ベクトル、対象座標系(X Y Z 1):列ベクトルとする。基準座標系をx軸にθ回転、x軸に3平行移動した同次変換は、 (X) ( 1   0    0   0)(x) (Y)=(0 cosθ -sinθ  0)(y) (Z) ( 0 sinθ  cosθ  0)(z) (1) ( 3   0    0   1)(1) と表されると思います。 ここまでで間違いはありますでしょうか? 以上、ご回答よろしくお願い致します。

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

>変換行列の表し方についてはどうでしょうか? 行列の基礎的な知識がない人の全く駄目な、式として成り立たない、ありえない式です。 変換行列以前の行列を習い始めの頃の基礎を無視した行列の計算式です。 列ベクトル(4行1列の行列とみなせる)に後ろから4行4列の行列を掛けるかけることが出来ると思いますか? 質問は難しいことを聞かれていますが、行列の基本は全く出来ていないとしかいえないね。 (1)「行ベクトルに後ろから変換行列を掛ける」 または (2)「変換行列に後ろから列ベクトルを掛ける」 のどちらかです。 行列演算の基礎的な知識の欠如ゆえ、ごちゃ混ぜの有り得ない式になっている。 (1)と(2)の変換行列は転置の関係にあるので(1)、(2)のどちらの 変換行列を使うかで、変換行列が異なってきます。 座標系の座標ベクトル(あるいは座標点)を列ベクトルで扱うのか、行ベクトルで扱うのか、決めて、 それに応じた変換行列にしないといけないね。 質問者さんのは、そこらがごちゃ混ぜになっている。その辺りの、質問の変換行列の式を正しい表現にして、質問してくれないと、回答者はあきれて、回答も出来ないよ。 式表現を書き直して改めて質問して下さい。 参考URLは 前の方が、座標系の座標を列ベクトルとして扱っています。 後ろの方は、座標系の座標を行ベクトルとして扱っています。 参考になると思うので、行列の演算の基礎の復習とあわせて呼んでみて下さい。 その上で質問があれば補足で質問して下さい。 参考URL http://k-lab.flash.tuis.ac.jp/lect/cg_theory/CGron2.htm http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG

参考URL:
http://k-lab.flash.tuis.ac.jp/lect/cg_theory/CGron2.htm
RY0U
質問者

補足

ご回答ありがとうございます。 式の書き方が悪く申し訳ございませんでした。 行列の式に関しては、 [m×n型][n×p型]=[m×p型] となるという基本は理解しています。 列ベクトルと行ベクトルの転置は同じになるので、書きやすい列ベクトル で書かせて頂きましたが、正確には行ベクトルでなければ行列の積と しては成り立ちませんね。すいません。 書き直します。 X          |1   0    0    3 | Y=|x y z 1| |0  cosθ  sinθ  0 |  Z           |0  -sinθ  cosθ 0 | 1          |0   0     0   1  | で表された同次変換において、対象座標系の4列目がWで表される場合、 どのように表現すれば良いのでしょうか? X          |1   0    0    ? | Y=|x y z ?| |0  cosθ  sinθ  ? |  Z           |0  -sinθ  cosθ ? | W          |0   0     0   ?  | 以上、ご回答よろしくお願い致します。

回答No.1

ユークリッド変換とは物体の大きさや形を変えない変換です。 回転+平行移動 なのでアフィン変換より狭い変換です。

RY0U
質問者

補足

ご回答ありがとうございます。 変換行列の表し方についてはどうでしょうか?

関連するQ&A