空間図形の取り扱いについて
平面の定義(1)
• 法線ベクトル(基本ベクトル)U(3次元)と原点
と平面との距離Lで表される。
– ※ 法線ベクトルの長さは1
• 固有ベクトルV(3次元)
– 計算に便利
– 原点を通る平面(L=0)の場合は使用できない(解
が無限になる)
– V=U÷L
平面の定義(2)
C点=原点からの距離が最も近い点
Z
平面
☆平面の求め方
点Q
法線ベクトルU
C点
L
Y
X
Q・V=1 :QとVとの内積
※ Q=通過点で、3点あれば
平面が求まる。
平面の求め方(例)
Z
2 0 0
0 3 0
(0,0,5)
0 0 5
法線ベクトルU
平面
C点
(0,3,0)
Y
X
(2,0,0)
・V=
1
1
1
で求まる
直線の定義
• 直線は通過点と方向ベクトルU(3次元)で表され
る
通過点
法線ベクトルU
2平面から直線を求める
通過点を求める式
平面1:U1、L1
U1X U1Y U1Z
U2X U2Y U2Z
1
1
L1
・Q=
L2
1
1
平面2:U2、L2
※ 第3行は0,0,0以外何でもよい
通過点
Q
方向ベクトルを求める式
方向ベクトルU
U1X U1Y U1Z
U2X U2Y U2Z
1
1
0
・U=
1
※ 第3行は0,0,0以外何でもよい
0
1
平面と点の距離 (hの長さを求める)
点P
平面
法線ベクトルU
C点
h
L
点Pを通りベクトルUに垂直な
平面の式から
L+h=U・P
∴ h=U・P-L
※ 点Pのほうが原点から遠
いなら、hは+になる
直線と点の距離
方向ベクトルV
通過点Q
|QP|・cosθ=QP・V
r
|QP|・sinθ=r
両辺を二乗して加えると
|QP|^2=(QP・V)^2+r^2
点P
∴ r=
|QP|^2ー(QP・V)^2
直線と直線の距離
Q1
2直線に直交する方向ベクトルV3を求める
V2
V1X V1Y V1Z
V2X V2Y V2Z
h
1
1
0
・ V3 =
1
0
1
※ 第3行は0,0,0以外何でもよい
V3を求めた後、V3を正規化する。
V1
V3を法線ベクトルとしQ1を通る平面は
Q2
V3
Q1・V3=L1 で表される
同様に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 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行目も同様
ダウンロード

空間図形の取り扱いについて