• ベストアンサー

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

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

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

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

オイラー角による座標変換だと 任意の方向ベクトルを軸にした回転はややこしくなるので 四元数を使った座標変換がオススメです 参考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
3115
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

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

3115
質問者

お礼

回答ありがとうございます。 この式から求める座標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 をそれぞれ始点と終点とする任意の角度の円弧の中心座標 )、なにかヒントをいただけるでしょうか?

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

    はじめまして。 以下のような問題について大学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の外積で出てくる値が回転軸になるような・・・・?) 宜しくお願いします。

  • 行列 連立一次方程式

    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 行列を使った解き方でお願いします。

  • 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)に変換したいです。 よろしくお願いします。

  • 空間上の2直線のなす角について

    数学は高校2年生で止まっていますので、難しい内容だとすぐには理解できないかもしれませんが、がんばって理解しようと思っています。 今回質問させて頂きたいのは「空間上の2直線のなす角」についてです。 1つ目の直線は、基準となる直線でZ軸と平行(という考え方が正しいかすら分かってません) 2つ目の直線は、傾きを持った平面の法線ベクトルになる予定です。 その2つの直線のなす角を求めたいと思っています。 1つ目の基準となる直線はA(1,1,0)、B(2,1,0)、C(1,2,0)の3点を通る面の法線ベクトルを求めればZ軸と平行な直線が求まるのではないかと思いました。 しかしながら、AB→とAC→の外積を求めようとすると(0,0,0)という解になってしまいました。 1つ目の直線と2つ目の直線のなす角を求めるには cos φ = A・B / (|A| * |B|)    Ax * Bx + Ay * By + Az * Bz = ─────────────────────────── √((Ax*Ax + Ay*Ay + Az*Az) * (Bx*Bx + By*By + Bz*Bz)) を使って求めるところまでは調べたのですが、1つ目の直線が求められないためになす角を求めるところまでたどり着けません。 数学に不慣れな者の質問で所々不明な箇所があると思いますが、回答いただけるとありがたいです。 宜しくお願い致します。

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

    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 ) よろしくお願いします。

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

    因数分解の発展問題でつまずいています。 (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]などに注目したりして因数分解しようとしましたが、上手く出来ません。 教えて下さい。

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

    ベクトル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)] というところまでは分かったのですが、サラスで展開してもイコールになりません。どうすればイコールになるんですか? どなたか教えていただけないでしょうか?

  • 三角関数の問題です。

    質問をさせていただきます。 二次元平面上に△ABCがあり、頂点の座標はそれぞれ (Ax,Ay)、(Bx,By)、(Cx,Cy)となっています。 また辺ACと辺BCの長さは等しく、二等辺三角形となっています。 (∠ACBの角度×1/4)の正接の値をTとした場合、 Cx、Cyの値をそれぞれ求めたいのですが、 どのようにすればよいでしょうか。 (ちなみに全ての辺は、X軸やY軸に必ず平行というわけではありません) Cx=~、Cy=~ といった形でご回答頂けると幸いです。 よろしくお願いいたします。

  • 3次元座標2点からの直線式の求め方

    お世話になります。 3次元座標2点からの直線式(ax+by+cz=0)の求め方を教えて下さい。 2次元座標であれば、1つの傾きから算出できるのですが、3次元座標になると、X-Y平面、Y-Z平面での傾きの使い方がこんがらかってしまいます。 基本的な質問で申し訳ありませんが、よろしくお願い致します。 座標1 = (x1,y1,z1) 座標2 = (x2,y2,z2) 以上

Brother PJ-663の印刷エラーについて
このQ&Aのポイント
  • パソコンとの接続は成功したが、Brother PJ-663で印刷する際にエラーが発生しています。
  • お使いの環境はWindows 10.0で無線LANに接続されています。
  • 質問内容はBrother PJ-663の印刷エラーに関するものです。
回答を見る