Sometime ago, for my work, I started to do an ActionScript3 port of the opensource library poly2tri.
The idea was to use it to do path finding in flash.
Polygocal path finding has three steps:
- Triangulation (in this case via the poly2tri library)
- Finding the shortest path between nodes. (Using an TRA). In this case I didn’t need to split the search in several levels. It is a simple A with a node for each triangle including references to the contiguous triangles.
- The Funnel algorithm. Implementation Simple Stupid Funnel Algorithm (I also did a Javascript port for this one).
Steps 2 and 3 are fast enough to be done at real time, at least with simple scenes. First step maybe too, but in this case it is not required.
You can access the mercurial source code from here.
Here a working demo:
(Requires Flash Player) {
}
Javascript implementation of the Funnel Algorithm, can be found here.
Hace algún tiempo, para el trabajo, empecé a hacer un port a ActionScript3 de la librería opensource poly2tri.
La idea era usarla para búsqueda de caminos en flash.
La búsqueda poligonal de caminos consta de tres partes:
- Triangulación (en este caso mediante la librería poly2tri)
- Búsqueda del camino más corto en nodos. (Usando A). En este caso no ha hecho falta dividir la búsqueda en varios nivels. Es un A sencillito con un nodo para cada triángulo que puede acceder a los triángulos contiguos.
- Algoritmo del embudo (Funnel algorithm). Implementación Simple Stupid Funnel Algorithm (De la cual también hice un port en Javascript).
Los pasos 2 y 3 son suficientemente rápidos como para hacerlos en tiempo real, al menos con escenas sencillitas. El paso uno posiblemente también, pero en este caso no hace falta.
Se puede acceder al código fuente de mercurial desde aquí.
Aquí una demo en funcionamiento (tras el salto):
(Requiere Flash Player) {
}
La implementación en javascript del algoritmo del embudo, se puede encontrar aquí.