Crear diagramas de Voronoi utilizando la librería rubyvor

mayo 1 2010Se el primero en comentar

Guardado en : Programación, Software Libre

Polígonos de Thiessen

Los polígonos de Thiessen (también llamados diagramas de Voronoi o teselación de Dirichlet) son una construcción geométrica que permite construir una partición del plano euclídeo. Deben su nombre a Alfred H. Thiessen y también fueron estudiados por Georgy Voronoi y Gustav Lejeune Dirichlet.

Los polígonos de Thiessen son uno de los métodos de interpolación más simples, basado en la distancia euclidiana, siendo especialmente apropiada cuando los datos son cualitativos. Se crean al unir los puntos entre sí, trazando las mediatrices de los segmento de unión. Las intersecciones de estas mediatrices determinan una serie de polígonos en un espacio bidimensional alrededor de un conjunto de puntos de control, de manera que el perímetro de los polígonos generados sea equidistante a los puntos vecinos y designando su área de influencia.

Aplicaciones

Inicialmente los polígonos de Thiessen fueron creados para el análisis de datos meteorológicos (estaciones pluviométricas) aunque en la actualidad también se aplica en estudios en los que hay que determinar áreas de influencia (centros hospitalarios, estaciones de bomberos, bocas de metro, centros comerciales, control del tráfico aéreo, telefonía móvil, análisis de poblaciones de especies vegetales, etc.). Es una de las funciones de análisis básicas en los SIG.

Descargando la librería rubyvor

Como primer paso tenemos que descargar la librería rubyvor, la cual se encuentra en la siguiente dirección:
http://github.com/abscondment/rubyvor/downloads
Para este caso estamos utilizando la versión 1.3.0.

Creando la gema

Una vez descargada la librería, la extraemos y vemos que contiene un archivo llamado rubyvor.gemspec, el cual nos ayuda a crear nuestra gema(.gem).

Para crear el .gem utilizamos el comando:

gem build rubyvor.gemspec

Una vez creada nuestra gema llamada rubyvor-0.1.3.gem la instalaremos con el comando:

gem install rubyvor-0.1.3.gem

Código

Dentro de la librería que descargamos, se encuentra un archivo llamado README.rdoc que contiene un ejemplo de cómo utilizar la librería.

Creamos un archivo llamado voronoi.rb y su código será el siguiente:

require 'rubygems'
require 'lib/ruby_vor'
require 'pp'
 
points = [
	RubyVor::Point.new(120, 290), #Puntos con coordenadas x,y
  	RubyVor::Point.new(110, 120),
  	RubyVor::Point.new(160, 90.2),
  	RubyVor::Point.new(3.14159265, 3.14159265)
]
 
# Calcula el diagrama y la triangulación
comp = RubyVor::VDDT::Computation.from_points(points)
 
#
# Las visualizamos en el formato .SVG
#
 
# Solo la triangulación
RubyVor::Visualizer.make_svg(comp, :name =>; 'tri.svg')
 
# Solo el MST
RubyVor::Visualizer.make_svg(comp, :name =>; 'mst.svg', :triangulation =>; false, :mst =>; true)
 
# Diagrama de Voronoi con la triangulación de Delaunay
RubyVor::Visualizer.make_svg(comp, :name =>; 'dia.svg', :voronoi_diagram =>; true)

Guardamos nuestro archivo dentro de la carpeta que bajamos y lo ejecutamos con el comando:

ruby voronoi.rb

Si no nos manda algún error entonces nos habrá creado tres archivos en formato .svg (Triangulación, MST y Voronoi-Delaunay).

Conexión entre nodos

Conexión entre los nodos

Triangulación

Triangulación de Delaunay

Diragrama de Voronoi y triangulación de Delaunay

Diragrama de Voronoi y triangulación de Delaunay

y listo!!

Les dejo el código del programa en un archivo en .zip por si quieren descargarlo.

voronoi.zip

Espero sea de gran ayuda, cualquier duda o comentario no duden hacerlas llegar con absoluta libertad..

Saludos!!

Comparte esta información:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

Quizá te interese :

Acerca del autor: Jorge

Estudiante de la carrera de Ingeniería en Sistemas Computacionales en el Instituto Tecnológico Superior de Cosamaloapan. Puedes contactarme sobre mis artículos en jsosa@smartdsign.net

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->