任意の面内にある点の座標から面の傾きを求める方法を教えてください

このQ&Aのポイント
  • XYZ軸で構成される3次元空間に存在する面Aの傾きを求める方法について教えてください。
  • 面A上にある3点の座標を利用して傾きを求めることができます。
  • 面Aのたわみを考慮する場合は、より多くの点で面の高さを求めて近似する必要があります。
回答を見る
  • ベストアンサー

任意の面内にある点の座標から面の傾きを求める方法を教えて下さい。

任意の面内にある点の座標から面の傾きを求める方法を教えて下さい。 XYZ軸で構成される3次元空間があります。 そこに面Aが存在するとします。 この面Aの傾きを求めるためには 面A上にある座標、a(x1,y1,z1),b(x2,y2,z2),c(x3,y3,z3)の3点が分れば 傾きは求まるかと思います。 (実際は任意のxyの位置にある面Aの高さzを求めてa,b,cを決める) この面を水平に補正しようとする場合の x軸周りに?度、y軸周りに?度というのを求めたい場合 どのようにすればよいのでしょうか? また実際は面Aにもたわみがありますので もっとたくさんの点で面Aの高さを求め、 そこからx,y軸周りの傾きを近似する必要がありますが その場合もどのようにすればよいのでしょうか? ご回答、または参考サイトをお教えいただきたいと思います。

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

  • ベストアンサー
noname#121811
noname#121811
回答No.4

#1です。補足します。 #1にて書いた通り私は詳細まで説明出来ません。直線近似については、直線を設定して各点と直線の距離の和が最小になるように傾きと切片を決定します。平面についても同じ原理です。各点と平面の距離が最小になるよう法線ベクトルと通過点を決定します。

komehon
質問者

お礼

ありがとうございます。 おそくなってすいません。 一応できるようになりました。 この度はありがとうございました。

その他の回答 (3)

回答No.3

z=a2*x+a1*y+a0 min[Σ(i=1~m)[zi-(ai*xi+a1*yi+a0)]^2] 0=@/@a0[Σ(i=1~m)[zi-(a2*xi+a1*yi+a0)]^2] =2Σ(i=1~m)[zi-a2*xi-a1*yi-a0)*(-) 0=@/@a1[Σ(i=1~m)[zi-(a2*xi+a1*yi+a0)]^2] =2Σ(i=1~m)[zi-a2*xi-a1*yi-a0)*(-yi) 0=@/@a2[Σ(i=1~m)[zi-(a2*xi+a1*yi+a0)]^2] =2Σ(i=1~m)[zi-a2*xi-a1*yi-a0)*(-xi) a0*m+a1*Σ(i=1~m)[yi]+a2*Σ(i=1~m)[xi]=Σ(i=1~m)[zi] a0*Σ(i=1~m)[yi]+a1*Σ(i=1~m)[yi^2]+a2*Σ(i=1~m)[xi*yi]=Σ(i=1~m)[yi*zi] a0*Σ(i=1~m)[xi]+a1*Σ(i=1~m)[xi*yi]+a2*Σ(i=1~m)[xi^2]=Σ(i=1~m)[xi*zi] a0=Σ(i=1~m)[zi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi^2]+Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*zi]+Σ(i=1~m)[xi]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi*yi]-Σ(i=1~m)[xi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi*zi]-Σ(i=1~m)[yi]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi^2]-Σ(i=1~m)[zi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*yi]/[[m]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi^2]+Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi]+Σ(i=1~m)[xi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]-Σ(i=1~m)[xi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi]-Σ(i=1~m)[yi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi^2]-[m]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*yi]] a1=[m]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi^2]+Σ(i=1~m)[zi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi]+Σ(i=1~m)[xi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*zi]-Σ(i=1~m)[xi]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi]-Σ(i=1~m)[zi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi^2]-[m]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*zi]/[[m]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi^2]+Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi]+Σ(i=1~m)[xi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]-Σ(i=1~m)[xi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi]-Σ(i=1~m)[yi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi^2]-[m]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*yi]] a2=[m]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi*zi]+Σ(i=1~m)[yi]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi]+Σ(i=1~m)[zi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]-Σ(i=1~m)[zi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi]-Σ(i=1~m)[yi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*zi]-[m]*Σ(i=1~m)[yi*zi]*Σ(i=1~m)[xi*yi]/[[m]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi^2]+Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi]+Σ(i=1~m)[xi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi*yi]-Σ(i=1~m)[xi]*Σ(i=1~m)[yi^2]*Σ(i=1~m)[xi]-Σ(i=1~m)[yi]*Σ(i=1~m)[yi]*Σ(i=1~m)[xi^2]-[m]*Σ(i=1~m)[xi*yi]*Σ(i=1~m)[xi*yi]] arctan(@z/@x)=arctan(a2) arctan(@z/@y)=arctan(a1)

komehon
質問者

お礼

遅くなってすいません。 ありがとうございます。 ぱっと見難しそうですが、考えてみます。

noname#121811
noname#121811
回答No.2

#1です。補足します。 質問と回答が微妙にズレていたようですね。 3点を通る平面の式はちょっと複雑です。 a(x1-x2)+b(y1-y2)+c(z1-z2)=0 a(x2-x3)+b(y2-y3)+c(z2-z3)=0 上式を解けばベクトル(a,b,c)を求めることが出来ます。未知数3個に対して式が2個しかないので、答えは a=αc b=βc のような形になりますが、それで十分です。求める平面は点(x1,y1,z1)を通り法線ベクトル(αc,βc,c)を持つ平面なので αc(x-x1)+βc(y-y1)+c(z-z1)=0 両辺をcで割って α(x-x1)+β(y-y1)+z-z1=0 法線ベクトルは(α,β,1)でも(αc,βc,c)でも同じです。座標軸とのなす角を求めればいいのです。

komehon
質問者

お礼

ご回答ありがとうございます。 3点での平面の求め方はよくわかりました。 実際に平面を求めてx、y軸周りの傾きを求めるためには 8点ぐらいでの高さ(z)を計測して平面の方程式を出す必要があります。 最小2乗近似を使うとのことですが どのタイミングで使ってよいのかよく分りません。 例えば a(x1,y1,z1) b(x2,y2,z2) c(x3,y3,z3) d(x4,y4,z4) c(x5,y5,z5) f(x6,y6,z6) g(x7,y7,z7) h(x8,y8,z8) このような8点を計測したとします。 この8点は多少のバラツキがあり理論的な平面上にはありません。 このような平面の近似式はどのように求めるのでしょうか? (直線の1次近似が3次元になったようなもの?) いまいち分らないのでご享受宜しく願い致します。

noname#121811
noname#121811
回答No.1

平面Aの式は通常以下のように表されます。 点(x1,y1,z1)を通り法線ベクトル(a,b,c)を持つ平面 a(x-x1)+b(y-y1)+c(z-z1)=0 法線ベクトルというのは、面から垂直方向に伸びるベクトルのことです。 法線ベクトルの傾きが質問文でいうところの面の傾きを表します。 例えばxy平面の式は、点(0,0,0)を通り法線ベクトル(0,0,1)を持つ平面なので xy平面の式:z=0 法線ベクトルが座標軸から何度傾いているかは、以下の式により計算されます。 x軸からの傾き:cosθ1=a/√(a^2+b^2+c^2) θ1:x軸と法線ベクトルのなす角 y軸からの傾き:cosθ2=b/√(a^2+b^2+c^2) θ2:y軸と法線ベクトルのなす角 z軸からの傾き:cosθ3=c/√(a^2+b^2+c^2) θ3:z軸と法線ベクトルのなす角 多数の点から平面Aを求める方法 多数の点から平面Aの式を求めれば法線ベクトルが求まります。最小二乗近似という方法があります。詳細は私も説明出来ませんが。エクセルで直線のグラフを書いた時に近似直線の式が求まりますが、あれは最小二乗近似を用いて計算してます。

関連するQ&A

  • 2点からその延長線上にある点の座標をしりたい

    3D空間における座標やベクトルの計算について勉強しております。 点Aと点Bの座標がわかっている状態と仮定して、点ABを結んだ直線ABの延長線上に点Cが存在します。 求めたい点Cの座標の一部(z軸)はわかっていると仮定します。(x3, y3, 0) この時の、点Cにおける座標(x3とy3)はどのように計算して求めますか? (壁方向に動いてるとして、その壁の座標を知りたいのです。) Zの条件は z1>z2>z3=0 です。(左手座標系) XとYの条件は 0<=xもしくはy<=480 です。 また、点Cは線ABの延長線上に必ずありますが、点B-C間の距離は点A-B間の距離と同一とは限りません。(同一になることもあります) ほかに必要な条件や情報があれば教えてください。 よろしくお願いします。

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

  • 平面とか傾きとか座標とか

    x、y、zの座標系があります。x、y軸上の線分を縦、横とする平面を描きます。この平面の傾き(z軸の+の象面へ倒れこむようような/-の象面から下半分が上がってくるような)とかいった関係のことを数学では何というんでしょうか。またこのあたりに詳しい素人向けの図や何かを多用したシンプルな傾向のある参考URLなどを教えて下さい。

  • XY座標の傾き

    y=2x+8のX座標との交点をA y=-3x+3のX座標との交点をB 上記の二つの線の交点をPとして、三角形PABができます。 この三角形PABの面積を2等分する線分を PからX座標にに向かい下ろします。その交点をQとした時 PQの傾きを求めてください。 答え12 どのように答えを導き出すのか分からないので、 教えていただけませでしょうか? よろしくお願いします。 PQの傾きというのはy=aX+b のaの部分を求めるのですか?

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

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

  • 直線上にある点の座標の求め方

    お世話になります。 点a(x1,y1)と点b(x2,y2)の直線上に点cを設けるとします。 設けた点cの座標を求めるプログラムをVBで作りたいのですが宜しくお願いします。 入力データは、点a(x1,y1)と点b(x2,y2)の座標と点aから点cの距離(k)を入力すると点cのx,yの座標を返すようなプログラムを考えています。 どうか宜しくお願いします。

  • ある視点位置,注視点でのXYZ座標軸の傾きを求める式を教えてください.

    視点位置(X1,Y1,Z1),注視点(X2,Y2,Z2)でレンダリングした際にx軸,y軸,z軸それぞれが(レンダリングした画像上で)どの程度傾くかを調べたいのですが,求める式を教えていただけないでしょうか. (初期位置はz軸上の点(0,0,Z3),注視点(0,0,0)とし,傾きは初期位置でのx軸が0度とする) わかりづらくて申し訳ございませんが,よろしくお願いいたします.

  • 座標の問題

    放物線A:y=2x^2+6x-8と直線B:y=5x+13がある。放物線AとY軸との交点をa、直線BとY軸の交点をb、放物線Aと直線Bとの交点でx座標、y座標とも正である点をcとし、a、b、cを頂点にした三角形を三角形abcとする。このとき、点bを通り三角形abcの面積を2等分する直線とX軸の交点のx座標はいくらか。 という問題があるのですが、AとBにそれぞれx=0を代入し、aとbを出すとこまでは出来たのですが、cを出すのがわかりません。 cの出し方とその後の計算方法を教えてください。

  • 任意座標の求め方

    原点G(X0-Y0)をとりこのG点を取り囲む3点の座標、A(Xa-Ya) B(Xb-Yb) C(Xc-Yc) があるとします この時、G点から3点までの距離を等距離とします 次に、3点ABCを結んだ三角形の中に任意点Dをとり、このD点からそれぞれA 点、B点、C点を結びます この時、∠ADB、∠BDC、∠CDAの角度のみ分かっています この場合、任意点Dの座標を距離を使わず3角度のみで求めることは可能ですか? また、D点からG点までの距離、∠ADGを求めることは可能ですか?(∠BDG、∠CDGでもかまいません) 例題で画像を添付しました 原点Gを(0-0)とし、点ABCをそれぞれの座標とした時、任意D点座標の求め方を教えて下さい また、求め方の計算式があるとするならば、教えてもらえれば助かります わかる方がいましたら、よろしくお願いします

  • 3次元上の三角形内の任意点の高さを求める公式の導き方

    3次元上の三角形内の任意点の高さを求める公式の導き方 3次元上に三角形(平面)があり各頂点(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3)の座標が明確であるとき その面上にある任意点(X,Y)のZを求めたいのですが・・・。 公式は発見できたのですが、どのようにしてこの公式が導き出されたのかわかりません。 Z=a(X-X1)+b(Y-Y1)+Z1 a=[(Z2-Z1)(Y3-Y1)-(Y2-Y1)(Z3-Z1)]/[(X2-X1)(Y3-Y1)-(Y2-Y1)(X3-X1)] b=[(X2-X1)(Z3-Z1)-(Z2-Z1)(X3-X1)]/[(X2-X1)(Y3-Y1)-(Y2-Y1)(X3-X1)] 頭の良くないので・・・・ 導き出し方をできるだけわかりやすく教えていただけないでしょうか。