270 likes | 440 Views
Creating geomodels with Generalized Maps. Marcus Apel, 2004 based on works of the Gocad Research Group, Nancy reference: J-L Mallet: « Geomodeling », Oxford University Press 2002. Reminders: How are objects defined?. cellular partition: sub-division into cells in N-dimensions
E N D
Creating geomodels with Generalized Maps Marcus Apel, 2004based on works of the Gocad Research Group, Nancyreference: J-L Mallet: « Geomodeling », Oxford University Press 2002
Reminders: How are objects defined? • cellular partition: sub-division into cells in N-dimensions • connectivity with other objects • embedding: • geometry in 3d space • numerical properties
cellular partition and connectivity - incidence graph • describes all possible paths to go from a n-cell to a 0-cell, with only connecting k-cells to (k-1)-cells, n>k>0
incidence graph • nodes Cells, edges CellViews • incidence: cell C is an element of CellView w.
3 relationship classes in a GMap • a cell Ci is i-adjacent to another cell Ck, iff • k=i • a (i-1)-cell incident to both can be found, or (i, k) are incident to at least one common (i+1)-cell • example: 2 triangles (i,k=2) sharing an edge • a cell Ci is a sub-cell of Ck, iff • i<k • Ci can be reached by descending the incidence graph • example: polygon (k=2) with sub-cells edges (i=1) and vertices (i=0) • the k*-adjacency of a i-cell Ci contains all k-cells Ck such that Ci is a subcell of Ck. • example: all polyhedra (k=3) connected to a vertex (i=0)
darts, involution, GMap • a dart corresponds to a path (CellView) in the incidence graph • adjacency relations are translated in relations between pairs of darts: • a dart has N+1 ai functions (maps), defined from Ai adjacency relations: • for example a0 connects each pair of darts (d1,d2): a0(d1)=d2; a0(d2)=d1 involution • a N-GMap {D, (a0, ..., aN)} is a set D of darts with a set of N+1 ai involution functions
Simplified data structure of a GMap • struct GMap{ Set<Dart*> d; } • struct Dart{ Dart* alpha[N+1]; Embedding* emb[N+1]; }
GMap - Example • GMap{d1a0,d2a0,..., d3a1} // darts for 6+3 involutions • Dart d1a0{*d2; *emb1}, Dart d2a0{*d1; *emb2}, ... • Embedding emb1{coordxyz, p}, ... F1 E2 E3 E1 d2 d1 V1 V2 V3
Functions acting on a GMap • the basic function: traversing the orbit of a dart d: • iterating the set of darts that can be reached by a given set of ai involutions
Basic operations on GMaps • recursive subdivision: an GMap of dimension N may be thought of a set of GMaps of dimension N-1 sewn along cells of dimension N-2; (N-2)-cells are sewn (N-3)-cells; etc. until vertices are reached • example: a volume can be represented by polyhedra sewn along their faces; a polyhedron is represented by its boundary polygons sewn along their edges.
Basic operations on GMaps • create new GMap • delete GMap • create isolated dart and add it to a GMap, involutions are initialized as ai(d)=d • delete a dart from a GMap • create an ai involution between 2 darts • delete an ai involution between 2 darts
Sew algorithm - create a N-GMap from (N-1)-cells • 2 orbit traversals of the (N-1)-cells along which the N-cell will be sewn, and setting the involution • sew(d1,d2,N) { for (d'1 in < >(d1), d'2 in < >(d2) ){ dispatchCellEmbedding(d'1,d'2); d'1->a[N]=d'2; d'2->a[N]=d'1; } } • how does unsew work?
Representing Objects with G-Maps: hierarchical GMaps with Frame 1) Represents the objects boundaries (Macro-topology)
Representing Objects with G-Maps: hierarchical GMaps with Frame 2) Can be used to subdivide space in regions
Representing 3d-Objects with G-Maps • 3 glued surfaces along a radial line • free edges a3(d) ≠ a2(d) • glued edges a3(d) = a2(d)
Construction of a model • create empty (N+1) dimensional model M • create a cellular GMap-partition L(W) of the N-dimensional dividing wall W • create Frame F(W) such that L(W) is the Lattice of F(W) and add W to model M • repeat (2) and (3) for a set of N-dividing walls M=M(W1,..., Wi) • if necessary, use the glue ("sew") operator to weld frames of the model M
Building a Model with G-Maps (IV) Horizon Fault Region
Strong points of G-Maps • Strong mathematical basis • - data structure • - operators • only 2 concepts to understand: darts and involution • uncoupling of topology and geometry • generically defined in N dimensions • generic functions work for for N-cells