Comunidad de diseño web y desarrollo en internet

¿Olvidaste tu usuario o clave? «
registrate

Cerrar

Detectar un punto dentro de una figura, colisiones en AS3

Evaluar si un punto esta dentro de un poligono es una operacion basica, pero eso yo no lo sabia. Hasta que llega el momento en que es necesario. Perdí bastante tiempo investigando al respecto, asi que ahora comparto con ustedes el resultado, por si puede ahorrarle tiempo a alguien. No detallaré la explicacion, les dejo un link al ejemplo funcionando, el codigo fuente.



Código para detectar colisiones de un punto sobre un poligono


Código :

private function insidePolygon(pointList:Array, p:Point):Boolean
{
   var counter:int = 0;
   var i:int;
   var xinters:Number;
   var p1:PointTest;
   var p2:PointTest;
   var n:int = pointList.length;
      
   p1 = pointList[0];
   for (i = 1; i <= n; i++)
   {
      p2 = pointList[i % n];
      if (p.y > Math.min(p1.y, p2.y))
      {
         if (p.y <= Math.max(p1.y, p2.y))
         {
            if (p.x <= Math.max(p1.x, p2.x))
            {
               if (p1.y != p2.y) {
                  xinters = (p.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
                  if (p1.x == p2.x || p.x <= xinters)
                     counter++;
               }
            }
         }
      }
      p1 = p2;
   }
   if (counter % 2 == 0)
   {
      return(false);
   }
   else
   {
      return(true);
   }
}   


Descarga el ejemplo

 

 

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate