En un ejemplo anterior [Seleccionar y mover shapes en html5] se utilizo un método sencillo para detectar si un punto se encuentra dentro un shape de forma rectangular, pero no siempre las figuras que se pinten en un shape tendrían una forma básica, en ocasiones necesitaremos conocer si un punto (X,Y) pertenece a un polígono irregular, buscando una solución por la red, encontré un algoritmo que funciona bastante bien, originalmente estaba escrito para Actionscript, el autor es Miguel Moraleda, pasar a javascript no es nada del otro mundo, aquí les dejo para quien le sirva porque a mi si me sirvió 🙂 :
/** * Funcion que determina si un punto(X,Y) se encuentra dentro de un poligono * @pointList Array de puntos Ej.: Array[ (0,0) , (100,50), (34,67) ] * @p Punto(X,Y) */ function insidePolygon( pointList , p ) { var counter = 0; var i; var xinters; var p1 = new punto(0,0); var p2 = new punto(0,0); var n = 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); } }
En este tutorial crearemos una sencilla aplicación android que nos permitirá conectarnos a un RESTFUL, obtener un result[...]
Estructura Interna de un archivo SVG. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD[...]
JavaFX un producto de Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash o[...]
JsFiddle es una herramienta que se puede utilizar de muchas maneras. Se puede utilizar como un editor en línea para crea[...]
Cada versión de Linux viene con su propia terminal predeterminada para interactuar con el Sistema Operativo a través de[...]
En este videotutorial se vera la creación de Interfaces Gráficas de Usuario (GUI) utilizando MatLab GUIDE herramienta vi[...]