120 likes | 193 Views
空間図形の取り扱いについて. 平面の定義(1). 法線ベクトル(基本ベクトル) U (3次元)と原点と平面との距離 L で表される。 ※ 法線ベクトルの長さは1 固有ベクトル V (3次元) 計算に便利 原点を通る平面( L=0 )の場合は使用できない(解が無限になる) V=U÷L. 平面の定義(2). C 点=原点からの距離が最も近い点. Z. 平面. ☆ 平面の求め方. 点 Q. 法線ベクトル U. Q ・ V =1 : Q と V との内積. C 点. L. ※ Q =通過点で、3点あれば平面が求まる。. Y. X. 平面の求め方(例).
E N D
平面の定義(1) • 法線ベクトル(基本ベクトル)U(3次元)と原点と平面との距離Lで表される。 • ※ 法線ベクトルの長さは1 • 固有ベクトルV(3次元) • 計算に便利 • 原点を通る平面(L=0)の場合は使用できない(解が無限になる) • V=U÷L
平面の定義(2) C点=原点からの距離が最も近い点 Z 平面 ☆平面の求め方 点Q 法線ベクトルU Q・V=1 :QとVとの内積 C点 L ※Q=通過点で、3点あれば平面が求まる。 Y X
平面の求め方(例) Z 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平面から直線を求める 通過点を求める式 平面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 0 0 1 ・ U = ※ 第3行は0,0,0以外何でもよい
平面と点の距離 (hの長さを求める) 点P 平面 法線ベクトルU C点 h L 点Pを通りベクトルUに垂直な平面の式から L+h=U・P ※ 点Pのほうが原点から遠いなら、hは+になる ∴ h=U・P-L
直線と点の距離 方向ベクトルV 通過点Q |QP|・cosθ=QP・V |QP|・sinθ=r r 両辺を二乗して加えると |QP|^2=(QP・V)^2+r^2 点P ∴ r= |QP|^2ー(QP・V)^2
直線と直線の距離 Q1 2直線に直交する方向ベクトルV3を求める V1X V1Y V1Z V2X V2Y V2Z 1 1 1 0 0 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|
点群の平面近似 • 最小二乗法とは • Σ(近似値誤差)^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~点群の数
点群の球面近似 まず、点群の任意の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 a13C1 a21 a22 a23C2 a31 a32 a33C3 手順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行目も同様