空間図形の取り扱いについて
平面の定義(1) 法線ベクトル(基本ベクトル)U(3次元)と原点と平面との距離Lで表される。 固有ベクトルV(3次元) ※ 法線ベクトルの長さは1 固有ベクトルV(3次元) 計算に便利 原点を通る平面(L=0)の場合は使用できない(解が無限になる) V=U÷L
平面の定義(2) Z ☆平面の求め方 Q・V=1 :QとVとの内積 L Y X C点=原点からの距離が最も近い点 平面 法線ベクトルU Q・V=1 :QとVとの内積 C点 L ※ Q=通過点で、3点あれば平面が求まる。 Y X
平面の求め方(例) Z ・ V = で求まる Y X (0,3,0) 平面 (2,0,0) 2 0 0 0 3 0 111 0 0 5 2 0 0 0 3 0 0 0 5 111 ・ V = で求まる (0,0,5) 法線ベクトルU (0,3,0) C点 平面 Y X (2,0,0)
直線の定義 直線は通過点と方向ベクトルU(3次元)で表される 通過点 法線ベクトルU
2平面から直線を求める 通過点を求める式 ・ Q = 方向ベクトルを求める式 ・ U = U1X U1Y U1Z U2X U2Y U2Z 平面1:U1、L1 U1X U1Y U1Z U2X U2Y U2Z 1 1 1 L1 L2 1 ・ Q = 平面2:U2、L2 ※ 第3行は0,0,0以外何でもよい 通過点Q 方向ベクトルを求める式 方向ベクトルU U1X U1Y U1Z U2X U2Y U2Z 1 1 1 1 ・ U = ※ 第3行は0,0,0以外何でもよい
平面と点の距離 (hの長さを求める) L+h=U・P ※ 点Pのほうが原点から遠いなら、hは+になる ∴ h=U・P-L 点P 平面 C点 h L 点Pを通りベクトルUに垂直な平面の式から L+h=U・P ※ 点Pのほうが原点から遠いなら、hは+になる ∴ h=U・P-L
直線と点の距離 r ∴ r= |QP|^2ー(QP・V)^2 |QP|・cosθ=QP・V |QP|・sinθ=r 両辺を二乗して加えると |QP|^2=(QP・V)^2+r^2 点P ∴ r= |QP|^2ー(QP・V)^2
直線と直線の距離 ・ V3 = h Q1・V3=L1 で表される Q2・V3=L2 で表される V1X V1Y V1Z V2X V2Y V2Z 1 1 1 1 V2 ・ V3 = h ※ 第3行は0,0,0以外何でもよい V3を求めた後、V3を正規化する。 V1 V3を法線ベクトルとしQ1を通る平面は Q2 Q1・V3=L1 で表される V3 同様にQ2を通る平面は Q2・V3=L2 で表される ∴ h=|L1ーL2|=| Q1・V3ー Q2・V3|
点群の平面近似 Σ{Pi1*Pi1}、 Σ{Pi2*Pi1}、 Σ{Pi3*Pi1} Σ{Pi1} 最小二乗法とは Σ(近似値誤差)^2を最小にする方法 点群 h(誤差) 以下の式で求めることができる Σ{Pi1*Pi1}、 Σ{Pi2*Pi1}、 Σ{Pi3*Pi1} Σ{Pi1} Σ{Pi1*Pi2}、 Σ{Pi2*Pi2}、 Σ{Pi3*Pi2} ・ V = Σ{Pi2} Σ{Pi1*Pi3}、 Σ{Pi2*Pi3}、 Σ{Pi3*Pi3} Σ{Pi3} ※ i = 1~点群の数
点群の球面近似 Σ{Ui1*Ui1}、 Σ{Ui2*Ui1}、 Σ{Ui3*Ui1} Σ{Li*Ui1} まず、点群の任意の2点が面対称になる平面Siを求める。 平面Siは球面中心近くを通るので次式で球面の中心Cを求めることができる Pi Pi+1 P2 P1 焦点C 以下の式で求めることができる Σ{Ui1*Ui1}、 Σ{Ui2*Ui1}、 Σ{Ui3*Ui1} Σ{Li*Ui1} Σ{Ui1*Ui2}、 Σ{Ui2*Ui2}、 Σ{Ui3*Ui2} ・ C = Σ{Li*Ui2} Σ{Ui1*Ui3}、 Σ{Ui2*Ui3}、 Σ{Ui3*Ui3} Σ{Li*Ui3} ※ i = 1~点群の数(数が多いほど精度がよくなる)
参考:ガウスの消去法(線形一次連立方程式の解法) a11 a12 a13 a21 a22 a23 a31 a32 a33 X Y Z C1 C2 C3 ・ = a11 a12 a13 C1 a21 a22 a23 C2 a31 a32 a33 C3 手順1:1行全体を1行1列目で割ることで1行1列目を1にする ※1行1列目が0の場合は、他の行と入れ替える 手順2:2行目全体-1行目全体*a21を行い、2行1列 目を0にする。3行目も同様 手順3:手順1と同様に、2行2列目を1にする 手順4:3行目全体-2行目全体*a32を行い、2行1列 目を0にする。1行目も同様 手順5:手順1と同様に、3行3列目を1にする 手順6:1行目全体-3行目全体*a13を行い、1行3列 目を0にする。2行目も同様