Solid Modeling
Solid Modeling
History:
CNC: ~1950
Advantages:
Saves on storage/retrieval;
Easy modification, update;
Shortcomings:
Can’t analyse the
strength, shape,
geometry, weight
center of mass, center of inertia
Wireframe Models
data:
The vertices
start point, end point
Wireframe ambiguity:
Is this object (a), (b) or (c) ?
Concepts:
Primitives: small set of shapes
U* (regular union)
-* (regular difference)
∩* (regular intersection)
CSG Tree:
Sequence of operators design
Examples of CSG
box( a, b, c) cylinder( h, r)
z
z
x
y
y
x
Z
primitives
X
-*
box( 25, 25, 15) Trans( 5 2,0, 15) Rot(Y, 45) Trans( -5, 0, -5) box( 10, 25, 10)
Questions:
closure of a set S: kS
interior of a set S: iS
A U* B = k i ( A U B)
A -* B = k i ( A –B)
A ∩* B = k i ( A ∩ B)
Non 2-Manifold:
Problems with CSG
Non-Unique representation
Boundary of a solid ?
Boundary of surfaces?
Boundary of points ?
BREP
Boundary of surfaces…
…
An Edge-Based Model Faces:
f1 e1 e4 e5
f2 e2 e6 e4
f3 e3 e5 e6
f4 e3 e2 e1
v4
e6 Edges:
e4 e1 v1 v2
e5 v3 e2 v2 v3
e3 v3 v1
e3 e2 e4 v2 v4
e5 v1 v4
v1 v2 e6 v3 v4
e1
Vertices:
v1 x1 y1 z1
v2 x2 y2 z2
v3 x3 y3 z3
v4 x4 y4 z4
v5 x5 y5 z5
v6 x6 y6 z6
Edge-Based Models: inefficient algorithms
face
Area of Face
co-edges
e6
e4 e4
e5
Face CCW convention =>
e2
Each edge is once +ve, once -ve
e1
BREP Example
v4
e6
v8
e12 v3
e5 e11 e10 e4
v7
e9
e8
v5 e2
e7 v6
e3
v1 v2
e1
BREP Example
Vertices:
v1 x1 y1 z1
v4
v2 x2 y2 z2
e6 v3 x3 y3 z3
v8
e12
v4 x4 y4 z4
v3
e5 e11
e9
e10
v7
e4
v5 x5 y5 z5
v5 e7
e8
v6
e2 v6 x6 y6 z6
e3 v7 x7 y7 z7
v1
e1 v2 v8 x8 y8 z8
v9 x9 y9 z9
v10 x10 y10 z10
v11 x11 y11 z11
v12 x12 y12 z12
BREP Example..
Edges:
e1 v1 v2
v4
e2 v2 v3
e6 e3 v3 v1
v8 e4 v2 v4
e12
e5 e11 e10
v7
e4 v3 e5 v1 v4
e9
e8 e6 v3 v4
v5 e2
e7 v6 e7 v5 v6
e3
e8 v6 v7
v1 v2
e1 e9 v7 v5
e10 v6 v8
e11 v5 v8
e12 v7 v8
BREP Example…
Faces:
f1 l1 l2
f2 l3
v4
f3 l4
f4 l5
e6 f5 l6
v8
f6 l7
e12 v3
e5 e11 e10
v7
e4 f7 l8
e9
e8
v5 e2 Loops:
e7 v6
e3 l1 +e1 +e4 -e5
l2 -e7 +e11 -e10
v1 v2 l3 +e2 +e6 -e4
e1
l4 +e5 -e6 +e3
l5 -e1 -e3 -e2
l6 +e7 +e8 +e9
l7 +e10 -e12 -e8
l8 -e11 -e9 +e12
BREP: Winged edge data structure
Solid
s_faces f_solid
f_loops l_face
l_coedge c_loop
v_start v_end