Diferencia entre revisiones de «Envoltura convexa»
(Página creada con '{{Ficha Software |nombre= Envoltura convexa |familia= |imagen= envolturac.jpg |tamaño= |descripción= Aplicación importante en el campo de la Geometría Computacional. |imagen...') |
|||
| Línea 35: | Línea 35: | ||
== Definiciones == | == Definiciones == | ||
'''Definición intuitiva:''' | '''Definición intuitiva:''' | ||
| − | Supongamos que cada punto del plano está representado como la cabeza de una puntilla hincada perpendicularmente sobre una superficie plana. Si tomamos una goma elástica que envuelva a todas las puntillas, el resultado en la envolvente convexa. [[Image:envcon1.jpg| | + | Supongamos que cada punto del plano está representado como la cabeza de una puntilla hincada perpendicularmente sobre una superficie plana. Si tomamos una goma elástica que envuelva a todas las puntillas, el resultado en la envolvente convexa. |
| + | [[Image:envcon1.jpg|200px|Goma elástica]] | ||
| + | |||
'''Definición 1:''' | '''Definición 1:''' | ||
| − | La envolvente convexa de un conjunto de puntos S es el [[Polígono|Polígono]] convexo P que contiene a todos los elementos de S con menor área (o perímetro) posible. [[Image:envcon2.jpg| | + | La envolvente convexa de un conjunto de puntos S es el [[Polígono|Polígono]] convexo P que contiene a todos los elementos de S con menor área (o perímetro) posible. |
| − | + | ||
| − | '''Definición 2:''' | + | [[Image:envcon2.jpg|200px|Polígono que contiene a todos los elementos]]. |
| + | |||
| + | '''Definición 2:''' | ||
La envolvente convexa de un conjunto de puntos S es el [[Polígono|Polígono]] convexo P si para cada par de puntos x e y de S, el segmento xy siempre está contenido en P. | La envolvente convexa de un conjunto de puntos S es el [[Polígono|Polígono]] convexo P si para cada par de puntos x e y de S, el segmento xy siempre está contenido en P. | ||
| − | [[Image:envcon3.jpg| | + | |
| + | [[Image:envcon3.jpg|200px|Segmentos dentro de la envoltura]] | ||
== Propiedades == | == Propiedades == | ||
'''Propiedad 1:''' | '''Propiedad 1:''' | ||
| − | El cálculo de la envolvente convexa consiste en encontrar todos los puntos extremos del conjunto S. Un punto x de S es no extremo si existe un triángulo con vértices en S (distintos de x) de forma que x esté dentro del triángulo. | + | El cálculo de la envolvente convexa consiste en encontrar todos los puntos extremos del conjunto S. Un punto x de S es no extremo si existe un triángulo con vértices en S (distintos de x) de forma que x esté dentro del triángulo. |
| − | [[Image:envcon4.jpg| | + | |
| + | [[Image:envcon4.jpg|200px|Puntos dentro de triángulos]] | ||
'''Propiedad 2:''' | '''Propiedad 2:''' | ||
Un punto x de S es extremo si existe una recta pasando por x que deje al resto de puntos de S hacia un lado de dicha recta. | Un punto x de S es extremo si existe una recta pasando por x que deje al resto de puntos de S hacia un lado de dicha recta. | ||
| − | [[Image:envcon5.jpg| | + | |
| + | [[Image:envcon5.jpg|200px|Puntos hacia un lado de la recta]] | ||
== Cálculo de la envoltura convexa == | == Cálculo de la envoltura convexa == | ||
| Línea 58: | Línea 65: | ||
Basado en la Propiedad 2 | Basado en la Propiedad 2 | ||
La mejora de Jarvis: si el segmento xy pertenece a la envolvente, el siguiente segmento será yz. | La mejora de Jarvis: si el segmento xy pertenece a la envolvente, el siguiente segmento será yz. | ||
| − | [[Image:envcon6.jpg| | + | [[Image:envcon6.jpg|200px|Mejora de Jarvis]] |
Pasos del algoritmo: | Pasos del algoritmo: | ||
Revisión del 10:59 16 ago 2011
| ||||
Es uno de los cálculos más importantes en Geometría Computacional con aplicaciones en distintas áreas, dentro y fuera de la Geometría Computacional. Envolvente convexa de objetos, o también conocido como cierre convexo consiste en recubrimiento o cobertura que encierra a todos los elementos de un conjunto, sin vértices cóncavos, de puntos, polígonos, círculos, objetos 3D, etc.
La computación del cierre convexo de una nube finita de puntos, especialmente en el plano, ha sido exhaustivamente estudiada y tiene aplicaciones, como por ejemplo, en el procesado de imágenes y en localización.
Desafortunadamente, no es posible construir la definición intuitiva de cierre convexo citada anteriormente de forma natural, por lo que hay que identificar las nociones apropiadas que nos conduzcan a un algoritmo.
Definiciones
Definición intuitiva:
Supongamos que cada punto del plano está representado como la cabeza de una puntilla hincada perpendicularmente sobre una superficie plana. Si tomamos una goma elástica que envuelva a todas las puntillas, el resultado en la envolvente convexa.
Definición 1:
La envolvente convexa de un conjunto de puntos S es el Polígono convexo P que contiene a todos los elementos de S con menor área (o perímetro) posible.
Definición 2:
La envolvente convexa de un conjunto de puntos S es el Polígono convexo P si para cada par de puntos x e y de S, el segmento xy siempre está contenido en P.
Propiedades
Propiedad 1: El cálculo de la envolvente convexa consiste en encontrar todos los puntos extremos del conjunto S. Un punto x de S es no extremo si existe un triángulo con vértices en S (distintos de x) de forma que x esté dentro del triángulo.
Propiedad 2: Un punto x de S es extremo si existe una recta pasando por x que deje al resto de puntos de S hacia un lado de dicha recta.
Cálculo de la envoltura convexa
En geometría computacional existen numerosos algoritmos para calcular la envoltura convexa de un conjunto finito de puntos, con diversos grados de complejidad computacional. La complejidad del algoritmo de resolución se suele estimar en función del número n de puntos de entrada, y el número h de puntos de la correspondiente envoltura convexa.
Jarvis march o gift wrapping algorithm. Propuesto por R. A. Jarvis en 1973. Es uno de los más simples y posee una complejidad computacional O(nh). En el peor de los casos su complejidad será O(n2).
Basado en la Propiedad 2
La mejora de Jarvis: si el segmento xy pertenece a la envolvente, el siguiente segmento será yz.
Pasos del algoritmo:
- Encontrar el punto de menor ordenada. (pertenece a la envolvente).
- Encontrar el puntos S1 tal que S0S1 sea el segmento con menor ángulos partiendo de S0.
- Encontrar el puntos S2 tal que S1S2 sea el segmento con menor ángulo partiendo del ángulo de S0S1.
- Encontrar el puntos S(n-1) tal que S(n-2)S(n-1) sea el segmento con menor ángulo partiendo del ángulo de S(n-3)S(n-2).
Otros algoritmos: Graham Scan. Publicado en 1972, es mucho más eficiente y posee una complejidad computacional O(n log n). Si los puntos se encuentran ordenados por una de las coordenadas o por el ángulo a un vector fijo entonces la complejidad es O(n). Divide and vencerás. Otro algoritmo de complejidad O(n log n) publicado en 1977 por Franco P. Preparata y Hong. También es aplicable al caso tridimensional.
Enlaces externos
Fuente
- O´ROURKE Joseph. Computational Geometry in C. Cambridge. University Press. 1998 (capítulo 3).
- PREPARATA F.P., SHAMOS M.I. Computational Geometry. An Introduction. SpringerVerlag. 1985 (capítulo 3).