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

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

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

  • jjorz
  • お礼率100% (18/18)

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

  • ベストアンサー
回答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

  • 4次元空間上での平面の式

    任意の点を(x,y,z,u)とした4次元空間で (1)3次元の立体を表す式は ax+by+cz+du=e でいいですか? (2)2次元の平面を表す式は一般にどのような形になりますか? 上記のことに疑問を持った理由。 2次元空間で1次元の直線を表す式は、一般にax+by=cとなる。 これは、2点(x,y),(xo,yo)を通り、方向ベクトルが(a',b')で媒介変数tとして x=a't+xo y=b't+yo と書くこともできる。 3次元空間で2次元の平面を表す式は、一般にax+by+cz=d となる。 これは、 平面上の2点(x,y,z)と(xo,yo,zo)を結ぶベクトルとこの平面に垂直な直線の方向ベクトル(a,b,c)の内積が0であるという条件より導かれる。 実際に計算すると a(x-xo)+b(y-yo)+c(z-zo)=0 ax+by+cz=axo+byo+czo になり、ax+by+cz=dという形と同値であることが確認できる。 【別な考え】 3次元空間内の平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo)、Q(x1,y1,z1)、R(x2,y2,z2) とする。この平面上の任意の点X(x,y,z)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo) PQ↑=(a,b,c) PR↑=(a',b'c') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) という書き方も平面を表す式である。 実際に(1)と(2)から未知数t,sについてx,yの式で表すことができるので、それを(3)式に代入すれば、(1)(2)(3)式は、一つの式 a"x+b"y+c"z=d'という形になる。 直線を表す式は、媒介変数tを使って x=at+xo y=bt+yo z=ct+zo または、 (x-xo)/a=(y-yo)/b=(z-zo)/c=t となる。 4次元空間で同じように、 直線や平面や立体を考えてみた。 2次元では、(1,0)と(0,1)が直交の基底ベクトル。 3次元では、(1,0,0)と(0,1,0)と(0,0,1)が直交の基底ベクトル。 したがって、 4次元では、(1,0,0,0)と(0,1,0,0)と(0,0,1,0)と(0,0,0,1)が直交の基底ベクトル。 4次元空間では、点は4つの成分で表される。 4次元空間での直線について。 直線は2点が与えられば書ける。 2点(x,y,z,u)と(xo,yo,zo,uo)を通り、その直線の方向ベクトルが(a,b,c,d)だとしたら、媒介変数tを使って、 x=at+xo y=bt+yo z=ct+zo u=dt+uo となって (x-xo)/a=(y-yo)/b=(z-zo)/c=(u-uo)/d=t 次に4次元空間での3次元立体について。 2次元空間では、それより一つ次数が低い1次元の直線は一つの式 ax+by=c で与えられた。 3次元空間では、それより一つ次数の低い2次元の平面は、一つ式 ax+by+cz=d で表さられた。 したがって、4次元空間では、それより一つ次数の低い3次元の立体は、 ax+by+cz+du=e で表されるだろう。 【別な考え】 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する立体は一つしかない。なぜなら、4次元空間での基底ベクトルは4つで空間(立体)は3つの基底ベクトルで決定されて、残り一つが残っているからだ。 立体上の2点(x,y,z,u)と(xo,yo,zo,uo)を結ぶベクトルとこの立体に垂直な直線の方向ベクトル(a,b,c,d)の内積が0であるという条件で計算すると a(x-xo)+b(y-yo)+c(z-zo)+d(u-uo)= 0 ax+by+cz+du=axo+byo+czo+duo になり、ax+by+cz+du=eという形になる。 2次元の平面はどうだろうか? (ここからが本題) 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する平面は、2つあるはずだ。 なぜなら、4次元空間での基底ベクトルは4つで平面は2つの基底ベクトルで決定されて、残り2つが残っていて、それはこの平面に直交するように選べるからだ。 平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo,uo)、Q(x1,y1,z1,u1)、R(x2,y2,z2,u2)、 とする。この平面上の任意の点X(x,y,z,u)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo,uo) PQ↑=(a,b,c,d) PR↑=(a',b',c',d') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) u=uo+dt+d's.....(4) という書き方も平面を表す式である。 (1)と(2)を連立して、未知数t,sについてx,yの式で表すことができるので、それを(3)式と(4)式代入すれば、(1)(2)(3)(4)式は、2つの式 a"x+b"y+c"z+d"u=e' a"'x+b"'y+c"'z+d"'u=e" になる。 この2つの式からuを消去すれば、結局、 Ax+By+Cz=D という形になる。 zを消去すれば、 Ax+By+Cu=D yを消去すれば、 Ax+Bu+Cz=D xを消去すれば、 Au+By+Cz=D

  • ある平面に対する座標変換

    空間上に(x,y,z)の点があるとします。 この点を、ある平面 ax + by+ cz + d = 0 から見た時の値(x',y',z')に変換したいのですが、どうやったらいいかわかりません。 座標系が、xyz-座標から新しい座標系、x'y'z'-座標に変わるのですが、どうやれば、いいかわかりません。回転させるだけなら、それほど、難しくないと思うのですが、それだけじゃないので、わからないです。 よろしくお願いいたします。

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

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

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

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

  • 4次元空間について

    4次元空間に半径1、原点中心の超球(x^2+y^2+z^2+w^2=1)があります。これを、4次元における平面(例えばa*x+b*y+c*z+d*w=eといった平面)で切り取った切片、つまりこの平面と超球の共通部分はおそらく3つの変数で表せると思うのですが、その切片を3次元空間で表すとどんな図形になるのでしょうか? 考えているのですがイマイチつかめません。 どなたかお力添えをおねがいします。

  • 3次元空間での傾き、切片の求め方

    ある点S(X1,Y1)からある点G(X2,Y2)の直線があると仮定します。 このとき 傾きA=(Y2-Y1)/(X2-X1) 切片BはY=AX+Bより    =Y-AX と、2次元空間の場合はわかります。 ですがこれが3次元空間になるとどのように解けばいいのか分からないです。分かる人がいたら教えてください。 ある点S(X1,Y1,Z1)からある点G(X2,Y2,Z2)の直線があると仮定します。 このとき 傾きA= ? 切片B= ?

  • 4次元空間の超平面で、パラメータを消去するには?

    4次元のxyzw直交空間を考えます。 直線は、パラメータを用いて、 x=x[0]+a[1]s y=y[0]+b[1]s z=z[0]+c[1]s w=w[0]+d[1]s のように書けて、パラメータを消すと、 (x-x[0])/a[1]=(y-y[0])/b[1]=(z-z[0])/c[1]=(w-w[0])/d[1] のように書けます。 平面(?)は、パラメータを用いて、 x=x[0]+a[1]s+a[2]t y=y[0]+b[1]s+b[2]t z=z[0]+c[1]s+c[2]t w=w[0]+d[1]s+d[2]t のように書けますが、パラメータを消すとどうなるのでしょうか? 超平面は、パラメータを用いて、 x=x[0]+a[1]s+a[2]t+a[3]u y=y[0]+b[1]s+b[2]t+b[3]u z=z[0]+c[1]s+c[2]t+c[3]u w=w[0]+d[1]s+d[2]t+d[3]u のように書けますが、パラメータを消すとどうなるのでしょうか? おそらくAx+By+Cz+Dw+E=0のように書けるとは思いますが、それらの係数は具体的にはどのような形なのでしょうか? 3次元空間の平面の場合には、この最後の問いは、2つの3次元ベクトルの外積で表されると思うので、今回の設定を4次元にしてみました。

  • 3次元空間のグラフについて

     問題を解いていてわからない問題が出てきましたので質問させてください。 ↓以下問題と答え (問題) 3次元空間においてx^2+y^2+z^2=a^2であらわされる曲面が、 x+y+z=bであらわされる平面と一点で接しているとき、aとbの関係を表せ。 (答え) 3次元空間においてx^2+y^2+z^2=a^2であらわされる曲面とは、原点を中心とし、 半径をaとする球面である。球面と平面が1点で接しているとき、 球面の中心と平面との距離は球面の半径と同一であることになる。 したがって、b/ルート3 = aとなる。 と書いてあるのですが、文の流れからb/ルート3は球面の中心と平面との距離を表していると思うのですがなぜこうなるのかが全く分かりません。見にくい文で申し訳ないですが、分かる方がいらっしゃいましたらよろしくお願いします。

  • 座標空間における図形 (激難)

    座標空間における図形 (激難) 座標軸に垂直な平面の方程式、P(a,b,c)とする。 点Pを通り、x軸に垂直な平面の方程式はx=a 点Pを通り、y軸に垂直な平面の方程式はx=b 教えてほしいところ 確かに、xyz空間上の点(x,y,z)の条件とみれば平面になりますが、何故それが1の場合、垂直、2の場合、平行といえるんですか??

  • gnuplot 4次元データ(3次元座標における値)の表示

    まず、次のようなデータファイルがあります。 ----- x1, y1, z1, f1 x2, y1, z1, f2 x3, y1, z1, f3 x1, y2, z1, f4 x2, y2, z1, f5 x3, y2, z1, f6 以下、延々と続く。 ----- gnuplotで、zをz1に固定して、xy平面上に、fを立体的に表示する 方法があれば教えてください。 なお、pm3d で平面にカラーマップを表示する方法は分っています。