190 likes | 347 Views
立体の生成方法 境界表現、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).
E N D
立体の生成方法境界表現、CSG表現、スイープ表現立体の生成方法境界表現、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) 境界表現の一実現例 ウィングドエッジデータとは,立体を稜線の集まりであると定義し,各稜線について,他の稜線・頂点・面との関係を保持するトポロジーデータ構造である. 各稜線につき一つの ウィングドエッジデータを生成
E V V 1 2 E E 1 2 E E 4 3 F F 1 2 ウィングドエッジデータ構造(2) E3 E2 F2 V2 E4 E F1 E1 V1 各稜線につき一つの ウィングドエッジデータを生成
E V V 1 2 E E 1 2 E E 4 3 F F 1 2 ウィングドエッジデータ構造(3) 稜線の数だけ ウィングドエッジデータを生成
点P(x0,y0,z0) 内部と外部の判定 点P(x0,y0,z0)が,多面体の中に存在するかを調べる. 面F1のどちら側に点Pが存在するかを調べる. 以上のような処理を,各面について調べる. 全ての面について,点Pは各面の実体側にあると判断された場合,点Pは立体中に存在するものとする.
CSG表現(Constructive Solid Geometry) CSG表現とは,立体を3次元空間における点の集合ととらえ,集合演算を基本に立体をモデル化する方法である. +
CSG表現の集合演算 A∩B A-B B-A A∪B または A+B
= + A:直方体 B:円柱 CSG表現の例(1) 例えば,下図の立体Sは,A+B (A:直方体 B:円柱)で表される. 立体S
CSG表現の例(2) 点集合A0: 点集合B0:
CSG表現の例(3) 変換行列Ta 変換行列Tb
内部と外部の判定(1) 例えば,点P(x0,y0,z0)が,下図に示す立体の中に存在するかを調べる. 点P(x0,y0,z0)
内部と外部の判定(2) この場合,点Pの同次座標 P'(wx0,wy0,wz0,w)を考え, P'Ta-1が集合A0中に存在するか? P'Tb-1が集合B0中に存在するか? を調べる. 点P(x0,y0,z0) 形状SはAとBの和集合なので,上記のいずれかが満たされれば,点Pは形状S中に存在するものとする.
境界表現とCSG表現の比較 境界表現の利点 形状の幾何データが数値で与えられているので,形状の表示,シミュレーションに,形状データをそのまま流用できる. 面・稜線・頂点がデータとして別個に管理されているため,形状以外の情報を,面・稜線・頂点に関連付けやすい. CSGの利点 形状の定義が明確.
スイープ表現 • 平面図形を一定方向に移動したときの軌跡で立体を表現 • 局所変形との組み合わせで,様々な形状を表現可能 • 平行移動スイープ,回転移動スイープ