estructuras de datos geométricas - cinvestavertello/gc/sesion09.pdf · 2014. 7. 17. ·...

32
Estructuras de datos geométricas Winged-edge y Half-edge Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 12 de febrero del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 1 / 32

Upload: others

Post on 01-Mar-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricasWinged-edge y Half-edge

Dr. Eduardo A. RODRÍGUEZ TELLO

CINVESTAV-Tamaulipas

12 de febrero del 2013

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 1 / 32

Page 2: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

1 Estructuras de datos geométricasIntroducciónWinged-edgeHalf-edge

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 2 / 32

Page 3: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Introducción

Introducción

Una estructura de datos es un repositorio de información

La meta es organizar los datos de forma tal que:El espacio de almacenamiento empleado sea mínimo

La recuperación de información (query) pueda procesarserápidamente

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 3 / 32

Page 4: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Introducción

Introducción

Una estructura de datos geométrica (EDG) permite realizar unamanipulación eficiente de la información topológica asociada apolitopos en 2 o más dimensiones (vértices, aristas, caras)

Las EDG se han convertido en una parte muy importante ennuestra vida cotidiana

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 4 / 32

Page 5: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Introducción

Introducción

Algunos ejemplos incluyen las EDG conocidas como:winged-edge

quad-edge

half-edge

quadtree

Kd-tree

BSP tree

Range tree

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 5 / 32

Page 6: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

1 Estructuras de datos geométricasIntroducciónWinged-edgeHalf-edge

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 6 / 32

Page 7: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge

Origen

Fue propuesta por Baumgart en 1972, originalmente pensada paravisión computacional

CaracterísticasUsa principalmente las aristas (edges) para guardar la informaciónimportante del politopoEsta información es almacenada en una tabla, comúnmentellamada tabla de aristas (edge table)

• Bruce G. Baumgart. 1972. Winged Edge Polyhedron Representation. Technical Report. Stanford University, Stanford, CA, USA.• Bruce G. Baumgart. 1975. A polyhedron representation for computer vision. In Proceedings of the National ComputerConference and Exposition (AFIPS 1975). ACM, New York, NY, USA, 589-596.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 7 / 32

Page 8: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge

Para construir la tabla de aristas necesitamos la siguienteinformación:

1 Vértices de cada arista2 Caras izquierda y derecha de cada arista3 Arista predecesora y sucesora de cada arista al recorrer su cara

izquierda4 Arista predecesora y sucesora de cada arista al recorrer su cara

derecha

Explicaremos estos puntos a continuación

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 8 / 32

Page 9: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, notación

Números correspondena las caras

Mayúsculascorresponden a losvértices

Minúsculascorresponden a lasaristas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 9 / 32

Page 10: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, vértices

Concentrémonos en la arista a

Vértices incidentes: Y y X

Caras incidentes: 1 y 2

La cara 1 está delimitada porlas aristas a, c y b

La cara 2 está delimitada porlas aristas a, e y d

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 10 / 32

Page 11: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, caras izquierda y derecha

Usando de referencia elsentido de las manecillas delreloj

Si la dirección de la arista a esde X a Y

La cara 1 corresponde a la caraderecha

La cara 2 corresponde a la caraizquierda

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 11 / 32

Page 12: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, aristas predecesoras y sucesoras

Cada arista tiene una aristapredecesora y otra sucesora

Al recorrer las aristas de lacara 1 el predecesor y sucesorde la arista a son b y c

Al recorrer las aristas de lacara 2 el predecesor y sucesorde la arista a son d y e

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 12 / 32

Page 13: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, tabla de aristas

Cada entrada de la tabla contiene la información de una arista,e.g., para la arista a

Vértices Caras Recorr. izq Recorr. derArista Inicio Final Der Izq Pred Suc Pred Suc

a X Y 1 2 d e b c

Las cuatro aristas d, e, b y cson las alas de la arista a(wings→ winged-edge)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 13 / 32

Page 14: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, tablas de vértices y caras

La estructura de datos winged-edge requiere dos tablas adicionales:Tabla de vértices

Tabla de caras

La tabla de vértices tiene una entrada por cada vértice del politopoy contiene una arista que sea incidente a ese vértice.

La tabla de caras tiene una entrada por cada cara y contiene unaarista que sea parte de los límites de la cara

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 14 / 32

Page 15: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, ejemploTabla de aristas

Vértices Caras Recorr. izq Recorr. derAristas Inicio Final Der Izq Pred Suc Pred Suc

a A D 2 1 e f b cb A B 1 4 c a f dc B D 1 2 a b d ed B C 2 4 e c b fe C D 2 3 c d f af A C 4 3 d b a e

Tabla de vérticesVértices Arista

A aB bC dD e

Tabla de carasCaras Arista

1 a2 c3 a4 b

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 15 / 32

Page 16: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, ventajas

Debido a su organización winged-edge permite hacer un eficienterecorrido entre caras, aristas y vértices para contestar preguntas(queries) acerca de la adyacencia del politopo (existen 9 relacionesde adyacencia)

Por ejemplo: ¿El vértice D es adyacente a la cara 3?, ¿Las caras 1 y2 son adyacentes?

La estructura de datos winged-edge puede contestar estaspreguntas de adyacencia en forma muy eficiente e incluso algunasde ellas en tiempo constante

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 16 / 32

Page 17: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, ventajas

Por ejemplo, para encontrar todas las aristas incidentes a unvértice, simplemente se busca la arista incidente que se encuentraen la tabla de vértices y se siguen las aristas predecesoras osucesoras a la siguiente arista

Por eso, si una aplicación requiere de contestar muchas preguntasde topología del poliedro, winged-edge es una estructura máseficiente que las convencionales

Funciona bien para representar caras con polígonos arbitrarios

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 17 / 32

Page 18: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, ventajas

El tamaño de las tablas se mantiene fijo una vez que se sabecuantas caras, vértices y aristas componen al politopo

Winged-edge es ideal para aplicaciones que necesiten geometríadinámica, como el modelado interactivo u otros donde hayacambios locales

Recorrer el poliedro o detectar colisiones puede ser realizado deforma muy eficiente

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 18 / 32

Page 19: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, un algoritmo de ejemploEncontrar todas las arista adyacentes de un vértice dado

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 19 / 32

Page 20: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, programa de ejemploTetraedro

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 20 / 32

Page 21: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Winged-edge

Winged-edge, programa de ejemploHexaedro

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 21 / 32

Page 22: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

1 Estructuras de datos geométricasIntroducciónWinged-edgeHalf-edge

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 22 / 32

Page 23: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge

Origen

Fue propuesta de manera independiente por Muller y Preparataen 1978, y posteriormente por Eastman y Weiss en 1982

CaracterísticasHalf-edge es una estructura muy utilizada en muchos algoritmosde geometría computacional para manejar las subdivisionespoligonales del planoEl principio que emplea es dividir cada arista en dos aristasdirigidas (half-edges)

• D. E. Muller and F. P. Preparata. Finding the intersection of two convex polyhedra. Theoretical Computer Science, Volume 7,Issue 2, 1978, Pages 217–236.• C. M. Eastman, S.F. Weiss. Tree structures for high dimensionality nearest neighbor searching. Information Systems, Volume 7,Issue 2, 1982, Pages 115–122.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 23 / 32

Page 24: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura

Cada half-edge almacena la mitad de una arista

A las dos mitades de una arista se les conoce como pares de unaarista

Las dos medias aristas son dirigidas y tienen direcciones opuestas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 24 / 32

Page 25: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura

Cada half-edge almacena la siguiente información:

Vértices

Half-edge simétrico

Siguiente half-edge de lacara izquierda (en sentido)

Cara (izquierda delhalf-edge)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 25 / 32

Page 26: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura

Todos los half-edges que son frontera de una cara forman una listacircular ligada alrededor de su perímetro

Las listas pueden ser orientadas en sentido de las manecillas delreloj o inverso, pero la orientación debe ser consistente en toda larepresentación

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 26 / 32

Page 27: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura aristas

Contiene:Un apuntador al vértice adyacente al half-edge

Un apuntador a su half-edge par

Un apuntador a la cara de la cual el half-edge es frontera

Un apuntador al próximo half-edge dentro de la misma cara

struct HE-edge {HE-vertex∗ vert;HE-edge∗ pair;HE-face∗ cara;HE-edge∗ next;

}

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 27 / 32

Page 28: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura vértices

Contiene:Las coordenadas del vértice

Un apuntador a un half-edge para el cual el vértice es el origen

struct HE-vertex {float x;float y;float z;HE-edge∗ edge;

}

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 28 / 32

Page 29: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, estructura caras

Contiene:Un apuntador a un half-edge en sufrontera (nulo para facetas sinfronteras)

struct HE-face {HE-edge∗ edge;

}

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 29 / 32

Page 30: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, ejemplo de consultas

Las respuestas a la mayoría de las consultas (queries) deadyacencia están almacenadas directamente en la estructura dedatos

Por ejemplo, para conocer las caras que son adyacentes a unaarista (half-edge) pueden ser fácilmente encontradas con elsiguiente código:

/∗ edge fue declarado de tipo HE-edge ∗/HE-vertex ∗vertex1 = edge→vert;HE-vertex ∗vertex2 = edge→pair→vert;

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 30 / 32

Page 31: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, ejemplo de consultas

Para conocer las caras que son adyacentes a una arista (half-edge)es suficiente utilizar el siguiente código:

/∗ edge fue declarado de tipo HE-edge ∗/HE-face ∗face1 = edge→cara;

HE-face ∗face2 = edge→pair→cara;

Las dos consultas de adyacencia presentadas anteriormentepueden realizarse en tiempo constante (O(1))

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 31 / 32

Page 32: Estructuras de datos geométricas - CINVESTAVertello/gc/sesion09.pdf · 2014. 7. 17. · Estructuras de datos geométricas Half-edge Half-edge, ejemplo de consultas Las respuestas

Estructuras de datos geométricas Half-edge

Half-edge, ventajas

A pesar almacenar información de adyacencia entre caras, vérticesy aristas, el tamaño se mantiene constante (no es necesario utilizararreglos dinámicos), además es razonablemente compacta

Su complejidad temporal es lineal con respecto a la cantidad deinformación manejada

La lista de adyacencias puede ser construida en tiempoproporcional al tamaño

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Winged-edge y Half-edge 12 de febrero del 2013 32 / 32