Cap.8: Estruturas Geométricas Ensino de Informática (3326) - 4º ano, 2º semestre Engenharia Electrotécnica (2287) - 5º ano, 2º semestre Engenharia Informática (2852) - 4º ano, 2º semestre 1
Motivação Representar interiores dos objectos sólidos A superfície pode não ser descrita explicitamente 2
Motivação Alguns métodos de aquisição geram sólidos Ex.: CAT scan Alguns aplicações necessitam de sólidos Ex.: sistemas de CAD/CAM 3
Motivação Alguns algoritmos necessitam de sólidos Ex.: ray-tracing com refracção 4
Retrospectiva histórica Modelação por Linhas (Wireframes) Modelação por superfícies Sólido representado por arestas e vértices Gera modelos com ambiguidades Década de 60 Descrição matemática da superfície que delimita o objecto sólido Poucos testes de integridade do modelo 5
Retrospectiva histórica Modelação de Sólidos Modelação de objectos sem homogeneidade dimensional Década de 70 Implícita ou explicitamente contém informações sobre o fecho e a conectividade do objecto Garantia de realização física Sistemas de CAD/CAM Década de 80 Descrição de objectos com estrutura interna elementos remanescentes Ex: ACIS (Spatial Technology - AutoCAD) 6
Núcleos geométricos (em computação gráfica) Geometria euclideana (G, ) 1 0 0 0 0 1 0 0 0 0 1 0 Δx Δy Δz 1 Matriz de translação 1 0 0 0 0 cosθ sinθ 0 0 -sinθ cosθ 0 0 0 0 1 Matriz de rotação em torno de OX G - conjunto de transformações * - operação de concatenação Geometria afim Geometria projectiva 1 0 0 0 0 1 0 0 0 0 0 1/d 0 0 0 1 Matriz de projecção ortogonal 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 Matriz de projecção perspectiva 7
Núcleos geométricos (em modelação geométrica) Geometria: semi-algébrica semi-analítica sub-analítica Operadores de forma: operadores booleanos operadores de Euler etc. Estrutura: com sem 8
Descrições de Sólidos Definição: conjunto 3-dimensional de pontos Descrições alternativas: Através da fronteira Através de campos escalares definidos por equações Através de campos escalares amostrados Estas descrições originam três tipos de representação: pela fronteira: B-Rep (boundary representation) pelas operações sobre conjuntos: CSG (constructive solid geometry) pela enumeração do espaço através de células: BSP trees, Octrees, etc. 9
B-Rep (Boundary Representation) Sólido representado pela fronteira: vértices, arestas e faces. Separação entre a estrutura (topologia) e a geometria: Um vértice tem a geometria dum ponto (x,y,z) R 3 Uma aresta tem a geometria duma linha (definida paramétrica ou implicitamente) Uma face tem a geometria duma superfície (definida paramétrica ou implicitamente) Construção através de operadores de Euler, os quais são regulados por uma fórmula de Euler. 10
Manifold B-Rep Estrutura: Estratificada:! 0-estratos: vértices! 1-estratos: arestas! 2-estratos: faces Princípios: A vizinhança de qualquer ponto dum objecto é homeomorfa a R 2. A inserção dum estrato só pode ser feita após os seus estratos fronteiros. Os estratos são limitados, i.e. tem mensuravelmente finitos. v=1 f=1 C=1 C c =1 v=4 e=4 f=2 C=1 C c =1 Fórmula de Euler: v-e+(f-f h )=C-C h +C c v-e+(f-f h )=2S-2S h 11
Operadores de Euler: makers void mvfs (Vertex**, Face**, Shell**,Point*); void mvfs (Shell*,Vertex**, Face**, Shell**,Point*); void mvfh (Face*, Vertex**,Point*); void mve (Vertex*, Edge*, Edge*, Vertex**, Edge**,Point*); void mve (Edge*, Vertex**, Edge**,Point*); void mve (Vertex*, Edge*, Face*, Vertex**, Edge**,Point*); void mef (Vertex*, Vertex*, Face*, Edge**, Face**); void mef (Vertex*, Vertex*, Edge*, Edge*, Face*, Edge**, Face**); void mef (Vertex*, Edge*, Edge*, Face*, Edge**, Face ** ); void mekfh (Vertex*, Vertex*, Face*, Edge**); void mfkfhsh (Edge*, Face**); void mfskfh (ShellType, Edge*, Face**, Shell**); 12
Operadores de Euler: killers void kvfs (Shell*); void kvfh(vertex**); void kve(vertex**,edge**); void kemfh(edge**); void kef(edge**,face**); void kfmfhsh(face*, Face*); void kfsmfh (Face*, Shell*, Face*); 13
Non-Manifold B-Rep Estrutura: Estratificada:! 0-estratos: vértices! 1-estratos: arestas! 2-estratos: faces! 3-estratos: volumes Princípios: A vizinhança de qualquer ponto dum objecto é homeomorfa a R 2. A inserção dum estrato só pode ser feita após os seus estratos fronteiros. Os estratos são limitados, i.e. tem mensuravelmente finitos. v=2 e=1 f=1 C=1 C c =1 v=5 e=6 f=4 f h =1 C=1 C c =1 Fórmula de Euler: v-e+(f-f h )-(s-s h +s c )=C-C h +C c 14
Non-Manifold B-Rep com fronteira incompleta Estrutura: Estratificada:! 0-estratos: vértices! 1-estratos: arestas! 2-estratos: faces! 3-estratos: volumes Princípios: A vizinhança de qualquer ponto dum objecto é homeomorfa a R 2. A inserção dum estrato só pode ser feita após os seus estratos fronteiros. Os estratos são limitados, i.e. tem mensuravelmente finitos. v=2 e=1 f =1 C=1 v=1 e=2 f=2 C=1 Fórmula de Euler: [v-e+(f-f h )-(s-s h +s c )]+[-e +(f -f h )-(s -s h +s c )]= [C-C h +C c ]+[-E +(F -F h )-(S -S h +S c )] 15
Exemplo: mvc mech mfkch mech mfkch 16
Sobrevisão: Representações de Sólidos B-Rep (boundary representation) CSG (Constructive Solid Geometry) Voxels Quadtrees & Octrees BSP (Binary Space Partitions) 17
CSG (Constructive Solid Geometry) Estrutura: -Não estratificada -Cobertura de objectos primitivos:! paralelipípedo (box); cone (cone)! cilindro (cylinder); esfera (sphere)! cunha (wedge); toro (torus) Princípios: Cada objecto primitivo é o resultado da combinação booleana de um ou mais semi-espaços semi-algébricos de R 3. Cada objecto composto é o resultado da combinação booleana de um ou mais objectos primitivos. Modelo matemático: Álgebra booleana de objectos semi-algébricos (A,Ω), em que A é a classe de objectos semialgébricos e Ω={,,-} definição da primitiva cilindro x 2 +y 2 9 x 2 +y 2 9 z 0 z 20 z 20 z 0 18
Objectos CSG primitivos esfera-elipsóide cilindro-tubo cone-cone truncado toro-anel paralelipípedo rectangular prisma-cumha superfície de revolução plano-semiespaço 19
CSG - álgebra booleana de sólidos A B A B A B A B A - B A B 20
Estrutura de dados CSG // CSG Node Types #define CSG_PRIM 0 #define CSG_COMP 1 // CSG Operation Structure typedef struct CsgComp { char op; struct CsgNode *lft, *rgt; } CsgComp; // CSG Tree Node typedef struct CsgNode { int type; union { struct CsgComp c; struct Prim *p; U } u; } CsgNode; 21
Estrutura de dados CSG // CSG Node Types #define CSG_PRIM 0 #define CSG_COMP 1 // CSG Operation Structure typedef struct CsgComp { char op; struct CsgNode *lft, *rgt; } CsgComp; // CSG Tree Node typedef struct CsgNode { int type; union { } u; } CsgNode; struct CsgComp c; struct Prim *p; // Primitive Constructor CsgNode *csg_prim(prim *p) { CsgNode *n = (CsgNode *) NEWSTRUCT(CsgNode); n->type = CSG_PRIM; n->u.p = p; return n; } // Composite Constructor CsgNode *csg_link(int op, CsgNode *lft, CsgNode *rgt) { CsgNode *n = NEWSTRUCT(CsgNode); n->type = CSG_COMP; n->u.c.op = op; n->u.c.lft = lft; n->u.c.rgt = rgt; return n; } 22 Fonte: http://w3.impa.br/~lvelho/i3d00/lectures/model/node3.html
Sobrevisão: Representações de Sólidos B-Rep (boundary representation) CSG (Constructive Solid Geometry) Voxels Quadtrees & Octrees BSP (Binary Space Partitions) 23
Voxels Estrutura: -Partição dum subespaço rectangular de R 3 numa grelha uniforme de células rectangulares ou voxels (à semelhança dos pixels) -Cada voxel armazena um conjunto de atributos:! ocupação cor densidade temperatura, etc. Dispositivos de aquisição: -MRI (Magnetic Resonance Imaging) -CAT (Computed Axial Tomography) Simulação: -FEM (Finite Element Method/Modeling) Vantagens: -Representação simples, intuitiva e não-ambígua -A mesma complexidade para todos os objectos -Aquisição natural para algumas aplicações -Operações booleanas triviais Desvantagens: -Representação aproximada -Requer quantidades elevadas de memória -Visualização lenta vértebra voxelizada fémur voxelizado 24 http://fam.uni-paderborn.de/applied_mechanics/research/modelling_based_on_ct-data.html
Operações booleanas de voxels Fonte: Graphics Lab - Korea University 25
Sobrevisão: Representações de Sólidos B-Rep (boundary representation) CSG (Constructive Solid Geometry) Voxels Quadtrees & Octrees BSP (Binary Space Partitions) 26
Quadtrees & Octrees Estrutura: -Partição adaptativa do espaço numa grelha não-uniforme de células rectangulares designadas por quadtree (em R 2 ) ou octree (em R 3 ) Vantagens: -Representação concisa, ou seja, requer menos memória -Operações booleanas menos triviais Desvantagens: -Representação aproximada -Visualização também lenta voxel quadtree Fonte: Graphics Lab - Korea University 27
Operações booleanas de quadtrees Fonte: Graphics Lab - Korea University 28
Conclusão: Representações de Sólidos B-Rep (boundary representation) CSG (Constructive Solid Geometry) Voxels Quadtrees & Octrees BSP (Binary Space Partitions) FIM 29