• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:3次元空間で3点を通る平面を2次元座標で表すには)

3次元空間で3点を通る平面を2次元座標で表す方法とは?

このQ&Aのポイント
  • 質問文章では、3次元空間で3点を通る平面を2次元座標で表す方法についての質問があります。
  • 具体的には、xyz座標の3次元空間内に3つの点があり、それら3点を通る平面がXY平面となるような新しいXYZ空間を定義したいとのことです。
  • さらに、xyz空間の平面上の点をXY平面上の点に変換する方法も知りたいようです。

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

  • ベストアンサー
回答No.1

回転ですね。 まず、Z軸を回して A の Y成分を 0 にする。 次に、Y軸を回して A の Z成分を 0 にする。 最後にX軸を回して Bの Z成分を 0 にする。 例えば、Z軸を回して A の Y成分を 0 にするには (ax, ay, 0)のx軸との角度を求め、X軸との角度が0になるように 回転すればよい。 こんな感じです。各軸の回転行列を紹介しているサイトは 山ほどあるので、参照してみてください。

jjorz
質問者

お礼

回転行列の解説サイトは、以下のようなものですね。 http://www.geisya.or.jp/~mwm48961/kou2/linear_image3.html 例えばz軸を中心に回転させてA(ax, ay, az)のy成分を0にする場合 A(ax, ay, az)からz=0の平面に落とした『影』は P(ax, ay, 0) である。 OPとx軸のなす角をθとおくと、y成分をゼロにするためにはPをz軸を中心に -θ だけ回転させればよい。 回転させた後の座標をP'(ax', ay', 0)と置くと ax' = ax*cos(-θ) - ay*sin(-θ) ay' = ax*sin(-θ) + ay*cos(-θ) ここで sin(-θ) と cos(-θ) は sin(-θ) = - sin(θ) = - ay / √(ax^2 + ay^2) cos(-θ) = cos(θ) = ax / √(ax^2 + ay^2) よって ax' = (ax^2 + ay^2) / √(ax^2 + ay^2) = √(ax^2 + ay^2) また ay' = (-ax*ay + ay*ax) / √(ax^2 + ay^2) = 0 で確かにy座標がゼロになることが確認できる。 なるほど!いけそうです。 ありがとうございました!

その他の回答 (1)

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.2

直交座標でなくてもよければ、3次元空間の原点Oと点A,Bの3点を通る平面は、 ベクトルOAの軸と、ベクトルOBの軸で記述できますよ。 α(ベクトルOA)+β(ベクトルOB)で、原点Oから冒頭の平面上の任意の点までのベクトルが記述できます。つまり、OAをx軸とみなしてαがx座標、OBをY軸とみなしてβがy座標、という表現ができます。 OBをOAに直交させたければ、内積が0になるようにOB’を求めてY軸としてもよいですし、 OAもOBも単位ベクトルにしたければ、比例計算でOA’やOB’という2軸の単位ベクトルにしてもよいですし。

jjorz
質問者

お礼

すみません。 おそらく私の質問のタイトルが良くなかったせいだと思いますが、意図が伝わらなかったようです。 ベクトルOAとOBは、平面OAB上の任意の点を指定するために使っており、数学的にそのようなことが可能であることは存じております。 私が問題にしていたのは、ソフトウエアを使う上でのテクニカルな話で、グラフ描画ソフトの入力データとするためには、z成分を持たない二次元の直交座標系で位置を指定してやる必要があるが、どうすればいいのか分からないという事でした。 とはいえ、素早いレスをいただけたことはとても感謝しております。ありがとうございました。

関連するQ&A

専門家に質問してみよう