009-022 excelで学ぶ 01章 - nikkan...9 1.1 曲線の表現 1), 2)...
TRANSCRIPT
9
1.1 曲線の表現�1), 2)
滑らかで複雑な形状の製品が近年主流となり、それらの形状は CAD システムにおいて多くの曲線
と曲面で定義されている。曲線は、円や楕円、放物線といった円錐曲線(2 次曲線)と、パラメータ
で表される自由曲線に分けられる。ここでは、自由曲線の表現方法について紹介する。
CAD システムにおいて、自由曲線上の点の座標値は 1 つのパラメータで表現されており、これを
パラメトリック表現という。例えば、3 次元空間内の自由曲線では、曲線上にある点の座標(x, y, z)
がパラメータ t によって次式のように定義される。
x=a(t), y=b(t), z=c(t) (1.1.1)
また、この点の位置ベクトルは次式のように表される。
C(t)=[a(t), b(t), c(t)] (1.1.2)
パラメトリック表現された自由曲線は、回転や平行移動後の曲線も容易に表現できる。また、ある
1 つのパラメータに対応して曲線上の位置が一意に決定されるという利点がある。最も容易に表現で
きる形式は m 階多項式、つまり(m−1)次多項式である。この m は曲線の階数と呼ぶ。一般には
曲線の定義に 3 次多項式を用いれば十分であるため、m は 4 として用いられることが多い。自由曲
線の基本的な数学的表現形式は、係数ベクトルを Ai とすると次式のように定義される。
C t A t A A t A t A t A tii
i
m
ii
mm
0
1
0 1 22
11= = + + + + +
=
-
--g g_ i ! (1.1.3)
指定した点を通る滑らかな自由曲線を生成する方法には内挿法があり、これによる代表的な曲線と
して 3 次 Spline 曲線が挙げられる。一方、指定した点を通る必要はないが、それらの点列を基にし
て滑らかな自由曲線を生成する近似法では、Bézier 曲線が代表的である。B-Spline 曲線や NURBS 曲
線は、両者の長所を生かして生成した中間的な存在として位置付けられる。
第 1 章
製品を形づくる 自由曲線と曲面
10
第 1 章 製品を形づくる自由曲線と曲面
1.2 自由曲線1), 2)
1.2.1 3 次 Spline 曲線 3 次元空間内に n 個の点列 P1=[x1, y1, z1]・・・Pn=[xn, yn, zn]が与えられたとき、これらの点
列を順に通過する滑らかな曲線 C を生成する。この曲線のうち、P1 から P2 までを部分曲線 C1、P2
から P3 までの部分曲線を C2・・・Pn−1 から Pn までの部分曲線を Cn−1 とする。このとき、以下の 2
条件を曲線 C 全体が満たしていれば、曲線 C は 3 次 Spline 曲線となる。
(1)部分曲線 Ck がパラメータ tk の 3 次式として次式のように表される。
Ck(tk)=Ak0+Ak1tk+Ak2tk2+Ak3tk3(k=1, 2,…n−1) (1.2.1)
ただし、部分曲線 Ck の始点 Pk において tk=0、終点の Pk+1 において tk=xk>0
(2) 曲線 C は始点 P1 から終点 Pn まで常に連続で、パラメータ tk に関する 1 階の導関数 C′、2 階
の導関数 C″も連続である。
以下では、3 次 Spline 曲線を導く。まず、上記(1)の始点と終点の条件から
Ck(0)=Pk=Ak0 (1.2.2)
Ck(xk)=Pk+1=Ak0+Ak1xk+Ak2xk2+Ak3xk
3 (1.2.3)
となる。ここで、曲線 C が各点 P1 から Pn においても連続しているため
C′k(tk)=Ak1+2Ak2tk+3Ak3tk2 (1.2.4)
C′k(0)=P′k=Ak1 (1.2.5)
C′k(xk)=P′k+1=Ak1+2Ak2xk+3Ak3xk2 (1.2.6)
が得られる。したがって、係数ベクトルは以下のように表される。
Ak0=Pk, Ak1=P′kAk2=3(Pk+1−Pk)/xk2−(2P′k+P′k+1)/xk (1.2.7)
Ak3=2(Pk−Pk+1)/xk3+(P′k+P′k+1)/xk2
次に、上記(2)の条件より微分係数ベクトル P1′から終点 Pn′を求める。曲線 C の 2 階の導関数 C″
も点 Pk で連続でなければならないので、
C″k(tk)=2Ak2+6Ak3tk (1.2.8)
C″k−1(xk−1)=C″k(0) (1.2.9)
となる。以上から、次式が成り立つ。xkP′k−1+2(xk−1+xk)P′k+xk−1P′k+1
=3[(Pk−Pk−1)xk2+(Pk+1−Pk)xk−12]/(xk−1xk) (1.2.10)
(2 ≤ k ≤ n−1)
これを行列で表すと、以下のように表現できる。
11
1.2 自由曲線
/
/
/
P
P
P
P P P P
P P P P
P P P P
2
2
2
3
3
3
n n n n n
n n n n n n n n
2 1 2
3
1
2 3 2
1 2 1 2
1
2
2 1 22
3 2 12
1 2
3 2 32
4 3 22
2 3
1 2 12
1 22
2 1
+
+
+
′
′
′
=
- + -
- + -
- + -
- - - -
- - - - - - -
g g g g g g
g
x x x
x
x
x x x
x x x x
x x x x
x x x x
x x x x
_
_
_
_ _ _
_ _ _
_ _ _
i
i
i
i i i
i i i
i i i
> >88
8>
H HBB
BH
(1.2.11)
しかしながら、条件式の数が n−2 個であるのに対して、未知数が P1′から Pn′までの n 個であるた
め、Pk′の値を一意に決定することができない。
したがって、境界条件を与えて条件式の数を 2 つ増やすか、未知数を 2 つ減らせば解くことが可能
になる。そのために、一般に以下の 3 つの方法が用いられる。
(a)曲線 C を別の曲線につなぐ場合など、両端の点での微分係数ベクトル P1′と Pn′が与えられる。
(b)曲線 C の両端に無理のないよう自然な形を与える。P1″=Pn″=0
(c)P1=Pn のときに滑らかな閉曲線を作る。P1′=Pn′かつ P1″=Pn″
ここでは上記(a)の境界条件を与えることとする。このとき P1′と Pn′が既知となるため、次式の
n−2 元連立方程式を解けばよい。
/
/
/
/
’
P
P
P
P
P P P P P
P P P P
P P P P
P P P P P
2
2
2
2
3
3
3
3
n n n
n
n
n n
n
n
n n n n n n n n
n n n n n n n n n n
1 2
3
1
2 3 2
2 3 2
1
3
2 1
2
3
2
1
2 1 22
3 2 12
1 2 2 1
3 2 32
4 3 22
2 3
2 3 22
1 2 32
3 2
1 2 12
1 22
2 1 2
+
+
+
+
=
- + - -
- + -
- + -
- + - -
′
′
′
′
′
- - -
-
-
- -
-
-
- - - - - - - -
- - - - - - - -
g g g g
g
x x
x
x
x x x
x x x
x
x
x x
x x x x x
x x x x
x x x x
x x x x x
_
_
_
_
_ _ _
_ _ _
_ _ _
_ _ _
i
i
i
i
i i i
i i i
i i i
i i i
R
T
SSSSSSSSS
R
T
SSSSSSSSS
R
T
SSSSSSSSS
88
88
V
X
WWWWWWWWW
V
X
WWWWWWWWW
V
X
WWWWWWWWW
BB
BB
(1.2.12)
この左辺の行列は 3 重対角行列となっており、逆行列を求めずに TDMA(Tri-Diagonal Matrix
Algorithm)法を用いて解くことができる。上式を以下のように置き換える。
a
c
b
a
c
b
a b
c a
x
x
x
x
d
d
d
dn n n n
2
3
2
3
4
3
4 4
1 1
2
3
4
1
2
3
4
1
=
- - - -
g g g g g
R
T
SSSSSSSSS
R
T
SSSSSSSS
R
T
SSSSSSSSS
V
X
WWWWWWWWW
V
X
WWWWWWWW
V
X
WWWWWWWWW
(1.2.13)
ここで、
12
第 1 章 製品を形づくる自由曲線と曲面
pk=−bk/(ak+ckpk−1) (ただし、p2=−b2/a2)
qk=(dk−ckqk−1)/(ak+ckpk−1) (ただし、q2=−d2/a2)(1.2.14)
と置くと、式(1.2.13)は以下のように表される。
xk−1=Pk−1xk+qk−1 (ただし、xn−1=qn−1) (1.2.15)
これにより、xn−1, xn−2・・・x2 と順に求めていくことができる。
以上から、Excel を用いて指定された 4 点を通る 3 次 Spline 曲線を描く。計算方法を図 1.2.1に示
す。ここでは簡単のため、XY 平面上の 2 次元曲線とし、xk は一定の 1 としている。
【手 順】
1. 指定する 4 点の座標をセル C4 から E7 に入力する。ここでは、3 次元曲線へ拡張することも考え
て z 座標も入力できるようにしている。また、xk は 1 としてセル C14 に入力する。
図 1.2.1 3 次 Spline 曲線の計算シート
13
1.2 自由曲線
2. 微分係数ベクトル P1′と Pn′を、セル C9 から E9 と C12 から E12 へそれぞれ入力する。
3. 式(1.2.14)より、TDMA 法の各パラメータを算出する。セル C15 に「=−$C$14/(2*($C$14+
$C$14))」、セル C16 に「=−$C$14/(2*($C$14+$C$14)+$C$14*C15)」と入力し、D 列と E 列
にも適用することでパラメータ pk を得る。
4. 同様に、セル C17 に「=(((3*((C5−C4)*POWER($C$14,2)+(C6−C5)*POWER($C$14,2)))/
($C$14*$C$14 ))−$C$14*C9 )/( 2*($C$14+$C$14 ))」、 セ ル C18 に「=((( 3*(( C6−C5 )*
POWER($C$14,2 )+( C7−C6 )*POWER($C$14,2 )))/($C$14*$C$14 ))−$C$14*C12−$C$14*
C17)/(2*($C$14+$C$14)+$C$14*C15)」と入力し、D 列と E 列にも適用することでパラメータ
qk を得る。
5. 式(1.2.7)より、係数ベクトル Ak0 から Ak3 を求める。まず、セル C20 に「=C4」と入力してセ
ル E22 まで適用する。同様に、セル C23 に「=C9」と入力してセル E25 まで適用する。そして、
セル C26 に「=(3*(C5−C4))/(POWER($C$14,2))−(2*C9+C10)/$C$14」と入力してセル E28
まで適用する。最後に、セル C29 に「=(2*(C4−C5))/(POWER($C$14,3))+(C9+C10)/
(POWER($C$14,2))」と入力してセル E31 まで適用する。
6. 式(1.2.15)より、セル C11 に「=C18」、セル C10 に「=C15*C11+C17」と入力して、D 列と
E 列にも適用して微分係数を求める。
7. 式( 1.2.1 ) よ り、 セ ル H3 に「=$C$20+$C$23*G3+$C$26*POWER( G3,2 )+$C$29*POWER
(G3,3)」と入力してセル H13 まで計算し、それを I 列と J 列にも適用して部分曲線 C1 を得る。同
様に、部分曲線 C2 と C3 を求める。
8.部分曲線をつなぎ合わせて曲線 C を得る。図 1.2.2には計算結果の例を示す。
1.2.2 Bézier 曲線 Bézier 曲線は、フランスの自動車メーカーであるルノーのピエール・ベジェ(Pierre Bézier)が
車体設計に利用するために考案したパラメトリック曲線で、近似法で得られる自由曲線の代表的な存
在である。後述する B-Spline 曲線や NURBS 曲線と同様に、必ずしも曲線上にあるとは限らない順
序付けされた点列によって生成されている。この点列を制御点と呼び、制御点を Qi(i=0〜m−1)と
すると、m 階の Bézier 曲線は次式で定義され、パラメータ t が 0 から 1 まで変化するとき、Q0 と
Qm−1 を端点とする曲線が得られる。一般に、両端以外の制御点は通らない。
C t B t Q,i m ii
m
10
1
= -=
-
_ _i i! (1.2.16)
ここで Bi, m−1 はバーンスタイン(Bernstrein)基底関数と呼ばれる関数である。Bernstrein 基底関
数は、n 個の制御点 Qi の座標値をどれだけ曲線の位置(形状)に寄与させるかを決めるために用い
られ、m 階の基底関数は数値 1 を 2 項展開して次式で定義される。
14
第 1 章 製品を形づくる自由曲線と曲面
t tm
it t
B tm
it t
m
iC
i m i
m
1 111
11
1
1
1,
m m i i
i
m
i mm i i
m i
1 1
0
1
11
1
= - + =-
-
∴ =-
--= =
- - !
-
!
!
- - -
=
-
-- -
-
_ f _
_ f _ f_
_f
i p i
i p i pi
ip
$ . !(1.2.17)
具体的には、4 個の制御点で生成される 4 階 Bézier 曲線は次式で表される。また、このときの
Bernstrein 基底関数と Bézier 曲線の例を図 1.2.3に示す。
C t B t Qi
t t Q
t Q t tQ t t Q t Q
31
1 3 1 3 1
,i ii
i ii
i3
0
33
0
3
30
21
22
33
= = -
= - + - + - +
=
-
=
_ _ f _
_ _ _
i i p i
i i i
! !(1.2.18)
指定された点 Pk(k=0〜n−1)を通る Bézier 曲線を求めるためには、まず制御点 Qi を求める必
要がある。ここで、あるパラメータ tk のとき、指定された点 Pk を通るとすると
C t P B t Q,k k i m k ii
m
10
1
= = -=
-
_ _i i! (1.2.19)
となる。また、制御点数 n と指定された点数が同じであり、Bézier 曲線の両端において P0=Q0、
Pm−1=Qm−1 であるとき、次式が成り立つ。
図 1.2.2 3 次 Spline 曲線の計算結果