• ベストアンサー
  • すぐに回答を!

3次元で回転させた座標値の計算方法

点(Ax、Ay、Az)を3次元空間にある、点(Bx、By、Bz)から、点(Cx、Cy、Cz)に向かう直線を軸に任意の角度で回転させたときの、点(A’x、A’y、A’z)の座標値の計算方法を教えてください。ただし自分の数学レベルは中学生並でベクトルが少しだけ理解できるていどです。よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数2852
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.3
  • proto
  • ベストアンサー率47% (366/775)

オイラー角による座標変換だと 任意の方向ベクトルを軸にした回転はややこしくなるので 四元数を使った座標変換がオススメです 参考URLを見て頂ければここに書くことはないと思います (ただ私の知識がないだけですが...) また、任意の点を中心に回転させたいなら ゲタを履かせて座標変換してから、ゲタを取ればいいだけなので簡単にできるはずです ゲタを履かせるの意味がわからないかも知れませんが Aを中心にBを回転させるとすると BからAを引き、平行移動させてAを原点に持ってきて 同じく平行移動させた(B-A)を回転させ、その結果(B-A)'にAを足してもう一度平行移動させて ってことです、解るかな? B → (B-A) → (B-A)' → (B-A)'+A

参考URL:
http://staff.aist.go.jp/toru-nakata/quaternion.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 参考URLを元によく考えてみます。

関連するQ&A

  • ベクトルの回転について

    はじめまして。 以下のような問題について大学1年生の弟から質問されたのですが、 答えに自信がありません。どうか皆様のお力をお貸しください。 三次元空間上にベクトルA(ax,ay,az)、B(bx,by,bz)がある。 このAがBと平行になるような計算をしたい。 自分なりの考えは以下の通りです。 1.z座標を無視して、xy平面上のベクトルとして考え、成す角θzを求める θz=ArcCos{<A,B>/|A||B|} |A|=√ax^2+ay^2 |B|=√bx^2+by^2 <A,B>=ax×bx+ay×by 2.x座標を無視して、xy平面上のベクトルとして考え、成す角θxを求める θx=ArcCos{<A,B>/|A||B|} |A|=√ay^2+az^2 |B|=√by^2+bz^2 <A,B>=ay×by+az×bz 3.y座標を無視して、xy平面上のベクトルとして考え、成す角θyを求める θy=ArcCos{<A,B>/|A||B|} |A|=√ax^2+az^2 |B|=√bx^2+bz^2 <A,B>=ax×bx+az×bz 4.z軸回転させる。このとき、z軸回転させた座標をzAx、zAyとする。 zAx=ax Cosθz-ay Sinθz zAy=ax Sinθz + ay Cosθz 5.次にx軸回転させる。このとき、x軸回転させた座標をxAy、xAzとする。 xAy=zAy Cosθx-az Sinθx  xAz=zAy Sinθx + az Sinθx 6.次にy軸回転させる。このとき、y軸回転させた座標をyAx、yAzとする。  yAz=xAz Cosθy-zAx Sinθy yAx=xAz Sinθy + zAx Cosθy 7.求まったyAx、zAy、yAzを成分とする、ベクトルはBと平行である。(終了) うろ覚えですが、軸回転は順番によって全く違った回転をしてしまうというのを昔勉強したような気がするのですが、今回の場合は特にそういった問題は関係ないのでしょうか? また、それぞれの平面ごとになす角を求め、3つのなす角を使った回転を行ないましたが、 θ=ArcCos{<A,B>/|A||B|} |A|=√ax^2+ay^2+az^2 |B|=√bx^2+by^2+bz^2 <A,B>=ax×bx+ay×by+az×bz といった風に、一気に求めたθを用いて回転させる方法はありませんでしょうか? (AとBの外積で出てくる値が回転軸になるような・・・・?) 宜しくお願いします。

  • 3次元空間で3点を通る平面を2次元座標で表すには

    3次元のベクトル(?)に関して質問させてください。 いまxyz座標の3次元空間の中に原点O(0,0,0), 点A(ax,ay,az), 点B(bx, by, bz)の3つの点があるとします。 3次元空間の中に3つの点があるので、これら3点を通る平面がひとつだけ決まります。 この平面がXY平面となるような、新しいXYZ空間を下記の条件で定義したいです。 原点O(0,0,0)に対応する点   → O'(0, 0, 0) 点A(ax,ay,az)に対応する点  → A'(αx, 0, 0) ただし αx = √(ax^2 + ay^2 + az^2) 点B(bx, by, bz)に対応する点 → B'(βx, βy, 0) このときのβx, βyの決め方を教えていただけないでしょうか? (おそらくβyの符号で2通りあると思います) ----- 具体的な目的は、以下のようなものです。 xyz座標の関数として値が決まるf(x, y, z)があります。 これを点O, A, Bを通る平面上でメッシュを切って計算しました。 この結果をgnuplotのpm3d mapでグラフ化したいのですが、gnuplotの入力は以下のようなフォーマットです。 X1 Y1 f(x1,y1,z1) X2 Y2 f(x2,y2,z2) X3 Y3 f(x3,y3,z3) X4 Y4 f(x4,y4,z4) ... そこでxyz空間の平面OAB上の点Pn(xn,yn,zn)を対応するXY平面上の点Pn'(Xn,Yn)に変換したいです。 よろしくお願いします。

  • 3次元座標での点の回転について

    3次元座標上に複数の点があり、それらを同時にx,y,z軸周りにφ,θ,Ψ度回転させたとき、 各点の移動前と移動後の座標から、この回転角度φ,θ,Ψを求めたいのですが、 どのような計算で求めることができるでしょうか?

その他の回答 (2)

  • 回答No.2
  • 12m24
  • ベストアンサー率23% (193/817)

 ベクトルうんたらと考えてるとちょっとややこしい(でしょう)ので、平行移動と回転移動の組み合わせで考えてみてください。ただし、これは行列の乗算の知識が必要となります。  z軸を中心にした回転座標は以下の行列の式から求められます。 [ Ax ] [ cosθ sinθ 0 ][ Bx ] [ Ay ]= [-sinθ cosθ 0 ][ By ] [ Az ] [ 0   0  1 ][ Bz ]  求める座標値はA、元の座標値はB、回転角はθです。これと平行移動を繰り返せば、質問のB-C方向をZ軸に置き換えることができ、また元に戻すことができます。  なお、上の式のAとBは質問のものとは無関係です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 この式から求める座標Aというのは、XY平面の(0,0,0)のZ軸で回転させるということで理解できましたが、 例えば、(5、10、0)を原点に回転させるときは行列をどう変更すればいいのかわかりません。よろしければ教えていただきたいのですが。よろしくお願いします。

  • 回答No.1

この問題は、少なくとも、空間座標系、三角関数、行列といった知識が必要でしょうから、失礼ながら、 >>自分の数学レベルは中学生並でベクトルが少しだけ理解できるていど では無理だと思いますが...。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 2点の座標と任意の角度から2等辺三角形の頂点を求める方法

    2点 A・Bの3次元座標 (Ax, Ay, Az) (Bx, By, Bz) があり、AB を2等分した点 D と (0,0,0) を通る直線を引きます。AC = BC となり ∠C が任意の角度となるような直線上の点 C の2つの座標を求める方法を知りたいのですが(A と B をそれぞれ始点と終点とする任意の角度の円弧の中心座標 )、なにかヒントをいただけるでしょうか?

  • 外積の成分の求め方

     外積a×bの成分を求めるときに、図を用いて考える場合についてなのですが。  点A,Bがありそれぞれの位置ベクトルをa=(ax,ay,az),b=(bx,by,bz)とし、点A,Bをxy平面に投影したときの点をA',B'とすれば、点A',B'への位置ベクトルはa'=(ax,ay,0),b'=(bx,by,0)となりますよね?a×bとz軸とのなす角をγ(ガンマ)とすれば、 |a×b|cosγ=2△OABcosγ=2△OA'B' となるそうなのですが、理解できません。教えてください。

  • 行列 連立一次方程式

    a,b,c,d,が0でない実数であるとき、次の連立一次方程式を解け ax-by-az+bu=1 bx+ay-bz-au=0 cx-dy+cz-du=0 dx+cy+dz+cu=0 行列を使った解き方でお願いします。

  • 因数分解で悩んでいます

    因数分解の発展問題でつまずいています。 (1) (ax+by+cz)^2+(bx-ay)^2+(cy-bz)^2+(az-cx)^2 (2) (x-b)(x-c)(b-c)+(x-c)(x-a)(c-a)+(x-a)(x-b)(a-b) です。どちらの問題も、同じような文字がたくさんあるので 、[x]などに注目したりして因数分解しようとしましたが、上手く出来ません。 教えて下さい。

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

  • 3次元座標を原点中心に回転したい

    任意のゼロでないベクトル(a,b,c)を原点中心に回転し、z軸に合致させるとする。同じ回転移動を3次元座標上の任意の点(x,y,z)に対して行った時の移動後座標が知りたいのです。 計算と結果を教えて下さい。

  • 3行3列の行列に関する問題への質問

    行列の書き方に少々自信がないのですが、上から1行ごとに書いていきます。 すべて3×3という行列として 上からP=[[0,1,0]',[0,0,1]',[1,0,0]]とし、A=[[a,b,c]',[c,a,b]',[b,c,a]] X=[[x,y,z]',[z,x,y],[y,z,x]]とする。 (1)でP^2=[[0,0,1]',[1,0,0,]',[0,1,0]]、P^3=[[1,0,0]',[0,1,0,]',[0,0,1]]を求めさせ (2)で「AXは=αE+βP+γP^2とあらわされる。α、β、γをa,b,c,x,y,zを用いてあらわせ」という問題です 解答 題意のA、Xは,A=aE+βP+γP^2、X=xE+yP+zP^2 とあらわせる これらをかけて AX=(aE+bP+cP^2)(xE+yP+zP^2) =(ax+cy+bz)E+(bx+ay+cz)P+(cx+by+az)P^2 これがαE+βP+γP^2に等しいから(係数比較して)、 α=(ax+cy+bz) β=(bx+ay+cz)P γ=(cx+by+az) という解答なんですが、二点わかりません (1)まずはじめにXは,A=aE+βP+γP^2、X=xE+yP+zP^2とあらわされるという設定をどのように考えて設定したのかがわからないのと a b cがそれぞれE P P^2の係数になぜなっているのかもわかりません… (2)最後の係数比較してというところが理解できないのですが… 本来、行列というのは安易に係数比較をしてはいけないと思うんですが、これはどうして係数比較をしてもいいんですか? 係数比較をする場合ほかにもいろいろな条件が必要かとお網のですが。 非常に煩雑で面倒かもしれませんが、どうかよろしくお願いいたします

  • 空間上の二点を結ぶ直線上に任意の点が存在するかどうかの関数

    Cの初心者です。 空間上に存在する2点間を結ぶ直線上に任意の点が存在するかどうかの 関数を作りたいのですがどのような公式を用いて評価すればいいのか分かりません。 どなたかご教示ください。 引数    始点 A(x,y,z)    終点 B(x,y,z)    直線上に存在するであろう任意の点       C(x,y,z)  関数のイメージ    boolean isOnLine (Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz); 配列でもよいです。 返り値    True、 False  ( 0 or 1 ) よろしくお願いします。

  • ベクトルの解析について

    ベクトルA、Bに対して div(A×B)=BrotA-ArotBを示せという問題で、 div(A×B)=det[(∂/∂x, ∂/∂y, ∂/∂z), (Ax, Ay, Az), (Bx, By, Bz)] BrotA=det[(Bx, By, Bz), (∂/∂x, ∂/∂y, ∂/∂z), (Ax, Ay, Az)] ArotB=det[(Ax, Ay, Az), (∂/∂x, ∂/∂y, ∂/∂z), (Bx, By, Bz)] というところまでは分かったのですが、サラスで展開してもイコールになりません。どうすればイコールになるんですか? どなたか教えていただけないでしょうか?

  • 3次元上の座標計算がうまく解けなくて困っています。

    3次元上の座標計算がうまく解けなくて困っています。 3次元上に2つの座標P(1)とP(2)があり、それぞれ単位ベクトルV(1)とV(2)を持っています。 P(1)とP(2)はそれぞれそのベクトル上に座標P(a)P(b)を持ちます。 つまり P(a)=P(1)+sV(1) P(b)=P(2)+tV(2) s>0, t>0 と言う関係になります。 P(1)P(a)P(b)P(2)の順で線を結んだとき、P(1)P(a)P(b)がなす面上に半径Rの円を描きます。この円はP(1)P(a)が接線となりP(a)P(b)も接線となります。またP(1)P(a)での接点はP(1)になります。 同様にP(a)P(b)P(b)がなす面上に同じ半径Rの円を描きます。この円もP(b)P(2)とP(a)P(b)が接線となり、P(b)P(2)での接点はP(2)になります(図)。 上記の様になるsとtを求めたいのですが、どうすれば良いでしょうか? 一応、考えたのはP(1)P(a)P(b)でなす角度をθ、P(a)P(b)P(2)でなす角度をφとしたときに cos(θ/2)=s/√(s^2+R^2) sin(θ/2)=R/√(s^2+R^2) から加法定理より cos(θ)=(s^2-R^2)/(s^2+R^2) 同様に cos(φ)=(t^2-R^2)/(t^2+R^2) またP(b)P(a)への単位ベクトルをV(a)としたとき、 V(a)=(P(a)-P(b))/|P(a)-P(b)| cos(θ)=V(1)・V(a) 同様に cos(φ)=V(2)・-V(a) となりますので、 (s^2-R^2)/(s^2+R^2)=V(1)・V(a) (t^2-R^2)/(t^2+R^2)=V(2)・-V(a) から解けないかと思ったのですが、上手く展開できませんでした。 よろしくお願いします。