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
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por lucasmoyano el 17 de Abril de 2010
Por M@U el 17 de Abril de 2010
Por JaLeRu el 17 de Abril de 2010
Por eldervaz el 18 de Abril de 2010
Por Otaku RzO el 19 de Abril de 2010
Gracias por compartirlo.
Por ditmar el 22 de Abril de 2010
Por Rodrigo el 14 de Junio de 2010
http://latecladeescape.com/w0/con-nombre-propio/area-de-un-poligono-irregular-producto-en-cruz.html
esto ahorra mucho proceso a la computadora, saludos.
Por MAC el 05 de Julio de 2010
Este código es sencillisimo y sólo sirve para aquellos que tengan unas ganas nulas de pensar.
Un ejemplo muy pobre.
Me esperaba algo sobre algún algoritmo como el Y-X.
Por Ricardo Salazar el 27 de Septiembre de 2010
Por Agus-UASLP el 10 de Noviembre de 2010
Por edor el 14 de Febrero de 2011
Por edor el 14 de Febrero de 2011
Por Axel el 29 de Mayo de 2015