4章 自由曲面を表現する

4章
自由曲面を表現する
形状モデリングにおいて,任意の自由曲面を定
義する必要のある場合がある.自由曲面の表現
法について説明する.
4.1 パラメトリック表現
パラメトリック曲線
直線
円
P  P(t )  P0  tV
P  P( )  P0  (r cos )U  (r sin  )V
y
y
x
P
P0
x
P0
z
V
方向ベクトル
U
P
z
V
U,V:円を含む平面上の直交ベクトル
4.1 パラメトリック表現
パラメトリック曲面
平面
P  P(u, v)  P0  uU  vV
y
x  f x (u , v )
x
z
V
P
U
任意の曲面上の点(x,y,z)は2個の
パラメータ(u,v)の関数ベクトルで
表現できる.
y  f y (u , v )
z  f z (u , v )
この表現法を曲面のパラメトリック表現という.
P0
法線ベクトル
P  ( x, y, z )
f  ( fx, fy , fz )
P  f (u, v)
ベクトル表現
4.2 曲線セグメントと曲面パッチ
曲線 → セグメント → 曲線セグメント
曲面 → パッチ
→ 曲面パッチ
(1)形状を思い通りに制御できるか
(2)セグメントやパッチがどのような式で表されるか
(3)滑らかに接続できるか
制御点
曲線
制御多角形
このように点列で近似することが
考えられるが,(3)の条件が満た
されない.
曲面
4.3 制御点による曲線セグメントの生成
1.曲線セグメントの一般式
n個の制御点 qi (n=0,1,2・・・,n-1)
qn-1
q1
q2
n
P(t )   Fi (t )q i
i 0
n
q0
0  t 1
F
i 0
i
1
∵q0=・・・=qn-1=qとすると,P(t)=q
n
P(t )  q Fi (t )
i 0
Fi(t)の選び方によって,
ベジェ曲線,B-スプライン曲線
とよばれる曲線になる.
4.3 制御点による曲線セグメントの生成
2.ベジェ曲線
n
P(t )   Bi (t ) q i , 0  t  1
i 0
n
Bi (t ) n Ci (1  t ) t ,  Bi (t )  {(1  t )  t}n  1
n i
i
i 0
n Ci 
n!
i !( n  i ) !
n=3(3次ベジェ曲線)の場合,
P(0)=q0,P(1)=qnが成り立ち,
q0とqnを通る.
3
P(t )   3 Ci (1  t )3i t i q i
i 0
 3 C0 (1  t )3 q 0  3 C 1 (1  t ) 2 t q 1 3 C2 (1  t )t 2q 2  3 C3t 3q 3
 (1  t )3 q 0  3(1  t ) 2 t q 1 3(1  t )t 2q 2  t 3q 3
4.3 制御点による曲線セグメントの生成
2.ベジェ曲線(例)
q1
q1
q2
q3
q0
q0
q3
q2
4.3 制御点による曲線セグメントの生成
2.ベジェ曲線(接続)
1q1
1q2
1P(t)の終点における接線と
接線
1q0
2P(t)の始点における接線が
一致させるためには,
1q2, 1q3(=2q0), 2q1を一直線上
に配置すればよい.
1q3=2q0
2q3
2q1
2q2
4.3 制御点による曲線セグメントの生成
2.ベジェ曲線(例題1)
q0=(1,0,0),q1=(5,5,0),q2=(15,7,0),q3=(10,2,0)
基底関数の値
t=0
0.2
0.4
0.6
0.8
1.0
B0
1.00
0.51
0.22
0.06
0.01
0
B1
0
0.38
0.43
0.23
0.10
0
B2
0
0.10
0.23
0.43
0.38
0
B3
0
0.01
0.06
0.22
0.51
1.00
P (t )  ( x(t ), y (t ), z (t ))
 B0 (t )(1,0,0)  B1 (t )(5,5,0)  B2 (t )(15,7,0)  B3 (t )(10,2,0)
x(t )  B0 (t )  5 B1 (t )  15B2 (t )  10B3 (t )
y (t )  5 B1 (t )  7 B2 (t )  2 B3 (t )
z (t )  0
4.3 制御点による曲線セグメントの生成
2.ベジェ曲線(例題2)
q0=(1,0,0),q1=(5,5,0),q2=(15,7,0)
t=0,0.3,0.6,1.0のとき,P(t)を求めよ.
4.3 制御点による曲線セグメントの生成
3.B-スプライン曲線
n
P(t )   N i (t ) q i
i 0
1
1
N 0 (t )  (1  t ) 3  (1  3t  3t 2  t 3 )
6
6
2
1
N1 (t )  t 3  t 2 
3
2
1 3 1 2 1 1
N 2 (t )   t  t  t 
2 6
2
2
1
N 3 (t )  t 3
6
3
 N (t )  1
i 0
i
4.3 制御点による曲線セグメントの生成
3.B-スプライン曲線
B-スプライン曲線の特徴
1
3
3
i 0
i 0
P(t )   N i (t )q i , 2 P(t )   Ni (t )q i 1
P1 (1)  P 2 (0)
終点と始点が一致
d P1 (1) d P 2 (0)

dt
dt
d 2 P1 (1) d 2 P 2 (0)

2
dt
dt 2
接線が連続
曲率が連続
4.4 制御点による曲面パッチの生成
1.曲面パッチの一般式
曲線の議論を曲面に拡張
n
n
P(u, v)   Fi (u ) F j (v)q ij , 0  u  1, 0  v  1
i 0 j 0
n
n
 F (u)  1,  F (v)  1
i 0
i
j 0
j
P(u, v)  ( x(u , v), y (u, v), z (u, v))
q ij  ( xij , yij , zij )
4.4 制御点による曲面パッチの生成
2.ベジェ曲面
ベジェ曲面
2つの重み関数として,バーンスタイン基底関数を用いたもの
n
n
P(u, v)   Bi (u) B j (v) qij , 0  u  1, 0  v  1
i 0 j 0
3次のベジェ曲面
3
3
P (u , v)   Bi (u ) B j (v) q ij
i 0 j 0
 B0 (u ){B0 (v)q 00  B1 (v)q 01  B2 (v)q 02  B3 (v)q 03 }
 B1 (u ){B0 (v)q10  B1 (v)q11  B2 (v)q12  B3 (v)q13 }
 B2 (u ){B0 (v)q 20  B1 (v)q 21  B2 (v)q 22  B3 (v)q 23 }
 B3 (u ){B0 (v)q 30  B1 (v)q 31  B2 (v)q 32  B3 (v)q 33 }
4.4 制御点による曲面パッチの生成
2.ベジェ曲面(例)
q22
q23
q21
q12
q11
q01
q20
v
2次ベジェ曲面
q02
q01
u
v
q32
q22
q12
q03
q10
q00
q02
q03
q33
q11
q10
q31
q21
q20
u
q00
3次ベジェ曲面
q30
4.4 制御点による曲面パッチの生成
2.ベジェ曲面(例題)
次のような制御点の座標値が与えられたとき,3次ベジェ曲面
P(u,v)=(x(u,v),y(u,v),z(u,v))を求めよ.
q 00  (0,1,0), q 01  (1,2,0), q 02  (2,2,0), q 03  (3,1,0)
q10  (0,3,1), q11  (1,4,1), q12  (2,4,1), q13  (3,3,1)
q 20  (0,3,2), q 21  (1,4,2), q 22  (2,4,2), q 23  (3,3,2)
q 30  (0,1,3), q 31  (1,2,3), q 32  (2,2,3), q 33  (3,1,3)
さらに,u,v=0,0.2,0.4,0.6,0.8,1.0として,P(u,v)を作図
しなさい.