コンピュータ援用設計

立体の生成方法
境界表現、CSG表現、スイープ表現
立体の表現方法(1)
• 境界表現(B-rep(Boundary Representation))
• CSG表現(Constructive Solid Geometry Representation)
立体の表現方法(2)
• スイープ表現(Sweep Representation)
f1: v1, v2, v3, v4, v5, v6
S: Sweep(f1, dir: (0, 0, -1), length: 4)
境界表現(1)
境界表現とは,頂点・稜線・面と,これらの相互
関係を表すデータによって立体データを表現す
るものである.
境界表現(2)
境界表現によるデータは,以下の2種類のデー
タにより構成される.
幾何データ
:座標,方程式の係数などのような数値データ
トポロジーデータ
:頂点・稜線・面間の関係を表すデータ
幾何データ
トポロジーデータ
ウィングドエッジデータ構造(1)
境界表現の一実現例
ウィングドエッジデータとは,立体を稜線の集まりで
あると定義し,各稜線について,他の稜線・頂点・
面との関係を保持するトポロジーデータ構造である.
各稜線につき一つの
ウィングドエッジデータを生成
ウィングドエッジデータ構造(2)
E3
E2
V2
E
F1
F2
E4
E1
V1
E
V 1 V2
E1 E2
E4 E3
F1 F2
各稜線につき一つの
ウィングドエッジデータを生成
ウィングドエッジデータ構造(3)
E
E
E
E
EVV11 VV22
EV1 V2
1 EV
VV
1 E
V1212EE33
V1 V
E
12 E3
1 EE23 E4
EE
1 E
E23 E4
E1 E22 E4
2 FE
EE
2 F
E1414FF22
E4 E
F
13 F2
F1F1F2F2
F1 F2
稜線の数だけ
ウィングドエッジデータを生成
内部と外部の判定
点P(x0,y0,z0)が,多面体の中に存在するかを調べる.
面F1のどちら側に点Pが存在するかを調べる.
以上のような処理を,各面について調べる.
全ての面について,点Pは各面の実体側にあると判
断された場合,点Pは立体中に存在するものとする.
F1 V1 E4 F2
V4
F3 E1
E6
E2 E5
V2
E3
V3
F4
点P(x0,y0,z0)
CSG表現(Constructive Solid Geometry)
CSG表現とは,立体を3次元空間における点の集合とと
らえ,集合演算を基本に立体をモデル化する方法である.
+
CSG表現の集合演算
AB
A∩B
A∪B または A+B
A-B
B-A
CSG表現の例(1)
例えば,下図の立体Sは,A+B
(A:直方体 B:円柱)で表される.
=
立体S
+
A:直方体
B:円柱
CSG表現の例(2)
点集合A0:
(x, y, z) 0  x  11, 0  y  12, 0  z  3
z
y
12
3
点集合B0:
(x, y, z)
o
x
11

y 2  z 2  3, 0  x  20
z
20
y
o
3
x
CSG表現の例(3)
z
変換行列Ta
20
y
o
z
x
3
z
y
o
12
3
o
11
x
変換行列Tb
y
x
プリミティブの例
内部と外部の判定(1)
例えば,点P(x0,y0,z0)が,下図に示す立体の中
に存在するかを調べる.
点P(x0,y0,z0)
z
o
y
x
内部と外部の判定(2)
この場合,点Pの同次座標 P'(wx0,wy0,wz0,w)を考え,
P'Ta-1 が集合A0中に存在するか?
P'Tb-1 が集合B0中に存在するか?
を調べる.
z
点P(x0,y0,z0)
20
y
o
z
3
x
z
y
y
o
x
o
x
形状SはAとBの和集合なので,上記のいずれかが満たされ
れば,点Pは形状S中に存在するものとする.
境界表現とCSG表現の比較
境界表現の利点
形状の幾何データが数値で与えられているので,
形状の表示,シミュレーションに,形状データをその
まま流用できる.
面・稜線・頂点がデータとして別個に管理されてい
るため,形状以外の情報を,面・稜線・頂点に関連
付けやすい.
CSGの利点
形状の定義が明確.
スイープ表現
• 平面図形を一定方向に移動したときの軌跡で立体を表現
• 局所変形との組み合わせで,様々な形状を表現可能
• 平行移動スイープ,回転移動スイープ