• 締切済み

コンピュータの事で質問です。

コンピュータ授業を受講しているのですが…助けてください… 単位立方体をx軸回りに30度回転後、y軸回りに45度回転してz=0の面に直投影するとき、下記の設問に答えなさい。ただし、z軸は紙面に垂直とする。 (1)合成変換行列を求めよ。 (2)投影変換後の2次元座標を求めよ。 (3)投影図を図示しなさい。 宜しくお願いいたします~ぺこ林

みんなの回答

回答No.2

No.1です。 「コンピューター」の授業で「行列」が出てくる時点で何とも言えない気分になりますが(いくらなんでも、関連性が希薄すぎるので) >大変恐縮ですが、行列の求め方がわかりません。 >それに、合成の仕方もわかりません。 「行列」の概念自体は理解できますでしょうか? ここがわからないと、まずその先にはすすめません。 以下に分かるようなわからないような解説があります。 http://w3e.kanazawa-it.ac.jp/math/category/gyouretu/henkan-tex.cgi?size=3&target=/math/category/gyouretu/index.html ある特定の法則に従って値を求める為には「方程式」というものを使用しますが、「行列」もその方程式の一種と言えないこともありません。 ちなみに「座標回転」のための行列は「回転行列」といい、すでに公式が存在していたりします。 提示しているURLの双方にその行列は存在します。 そこに角度θで求められるsinとcosの値を代入すればOKです。 このθに当たる「30度」と「45度」も有名な値なので覚えておいても損はないです。 sin30=1/2、cos30=(√3)/2、sin45=1/(√2)、cos45=1/(√2)です。 sin/cos概念は以下をどうぞ http://www8.plala.or.jp/ap2/suugaku/sankakukansuunoshoho.html

回答No.1

>コンピュータの事で質問です。 これ、コンピュータじゃなく数学の問題ですけど? 関連してくるとしてもCADかな? コンピューターとか以前に、「数学として」行列を理解してないと非常に難しいですよ。 まず、立方体なので頂点は8つあります。便宜上r1(x1,y1,z1)~r8(x8,y8,z8)とでもしましょう。 r1~r8の位置は、一辺を1とし正の値をとる場合 --:x,y,z r1:0,0,0 r2:1,0,0 r3:1,1,0 r4:0,1,0 r5:0,0,1 r6:1,0,1 r7:1,1,1 r8:0,1,1 と表すことができます(rの順番は適当) (1) X軸を30度回転する行列を求める。 Y軸を45度回転する行列を求める。 それを合成する。 回転体の行列は4*4の式になります、参考URLを参照してください。 行列の合成がわからない場合は、別途どうぞ。 (2) (1)の式を利用してr1~r8から回転後の(R1~R8)を求めてください。 座標の値が小さくて計算結果が分かりにくい場合はそれぞれの座標を10倍とかしてみてください。 (3) 頂点が求められれば、そこから投影図形は推測できます。 ……というものを「プログラムで組め」となるとまた別問題ですが。

参考URL:
http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html
kaeru_014
質問者

お礼

ご丁寧な回答ありがとうございます。 大変恐縮ですが、行列の求め方がわかりません。 それに、合成の仕方もわかりません。 ぜひ、その辺を具体的に教えていただきたいのですが…… 宜しくお願いいたします。

関連するQ&A

  • 数学の問題がわかりません。助けてください。

    数学の授業を受講しているのですが…助けてください… 単位立方体をx軸回りに30度回転後、y軸回りに45度回転してz=0の面に直投影するとき、下記の設問に答えなさい。ただし、z軸は紙面に垂直とする。 (1)合成変換行列を求めよ。 (2)投影変換後の2次元座標を求めよ。 (3)投影図を図示しなさい。 宜しくお願いいたします~ぺこ林

  • 3次元の座標変換行列について教えて下さい!

    [A]系で(0,0,-1)となるベクトルが[B]系で(1/√3,1/√3,1/√3)に変換されるような座標系変換行列Mを作りたいのですが、うまくいきません。 イメージは、立方体に垂直に入射してきたビームが座標系変換によって、立方体の1つの頂点から斜め45度方向に入射するようになるという感じです。[B]系での成分はマイナスがついても構いません、とにかく斜め45度方向に入射させたいのです。 私が考えたMは以下の通りですが、座標変換の結果が(0.707000, -0.499849, -0.499849)になってしまいました。 どこが間違っているのか、ご教示いただけましたら幸いです。 (1)X,Y,Z軸それぞれの45度回転行列MX,MY,MZを作る。 MX = [ 1, 0,   0,   0     0, cos45, sin45, 0     0, -sin45, cos45, 0     0, 0,   0,   1 ] MY = [ cos45, 0,   -sin45, 0     0,   1,   0,   0     sin45, 0,   cos45, 0     0,   0,   0,   1 ] MZ = [ cos45, sin45, 0, 0     -sin45, cos45, 0, 0     0,   0,   1, 0     0,   0,   0, 1 ] 並進移動を合わせた表記で、これは教科書に載っているので間違っていないと思います。 (2)MX,MY,MZを順にかけて、Mを作る。 M = MX * MY * MZ 45度方向なので、かける順序は気にしなくていいと思いました。

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

  • 回転行列

    z軸(0,0,1)に関する極座標 x=r*sinΘcosφ y=r*sinΘsinφ z=r*cosΘ を、中心はそのままで、立方体の最長の対角線が軸となるようにしたい時、 どのような回転行列をを用いればよいでしょうか? イメージとしては、 地球の地軸がずれている経度と緯度のような感じです。 立方体の対角線の軸は(1,1,1),(-1,1,1),(1,-1,1),(-1,-1,1)方向です。 よろしくお願いいたします。

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

    座標の回転が直交変換なのは任意の回転が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を原点を中心に回転したものである」 は正しいのですか? 正しければどうしてなのですか? 正しくなければどうしてなのですか? よろしくお願いします

  • 立方体を透視投影した時の、辺の長さを算出したいです

    立方体を透視投影した時の、辺の長さを算出したいです ご覧いただき、ありがとうございます。 表題にもあります通り、立方体をディスプレイに透視投影した時に、 表示される辺の長さを算出したいと考えております。 一辺が10cmの直方体があるとします。 これを「真正面」から見た状態を投影すると、正方形が表示されます。 (図のa) このとき、画面上でも正方形の各辺は10cmで表示されるとします。 さて、この状態から、右辺を軸として水平方向に回転させると、 右辺を中心とした2つの長方形が表示されることになります。 (図のb) このとき、回転角度を15度、30度、45度とした場合、 2つの長方形の上辺は、それぞれ何cmになるのでしょうか。 また、回転させた後の立方体を、今度は「少し上から見た」ように投影すると、 (つまり、水平軸を中心に回転させると) 3つの平行四辺形が画面に表示されることになります。 (図のc:ちょっと垂線が傾いていますが、本来は垂直です) このとき、先ほど質問させていただいた2辺、および中心となる垂直の辺は、 それぞれ何cmになるのでしょうか。 なお、水平軸を中心に回転させる角度は、15度、30度、45度とします。 実際に図が描けるのだから、それを定規で測れば良いと思われるかも 知れませんが、計算で求める方法を求めておりますので、 なにとぞお知恵をお貸しいただけますよう、お願いいたします。

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

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

  • ワールド座標系で回転

    こんにちは。3Dプログラムの仕事の指示を受けました。 3Dプログラムは無知でして見よう見まねで行っています。 現在回転行列について困っています。 正方形のモデルをY軸に45度、X軸に45度回転させようとしています。 現在はモデルのローカル座標系で回転するのでY軸の回転でローカル座標系が変わった後にX軸で回転します。これを相対変換と言えばよろしいのでしょうか。 WorldMatrix = RotationX(AngleX) ; WorldMatrix *= RotationY(AngleY) ; WorldMatrix *= RotationZ(AngleZ) ; 上記の回転ではなく、ワールド座標系で回転させたいのですが、このときの回転行列はどのようにして求めればよろしいのでしょうか? Y軸に45度回転させても座標系はそのまま。そしてX軸で45度させるためにはどのようにすればよろしいのでしょうか? わかりづらいですが添付した図のようになればと思っています。

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

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

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

    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)の回転操作でどこに 移るか。