• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:任意の面内にある点の座標から面の傾きを求める方法を教えて下さい。)

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

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

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

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