Programación Xixi
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; iltnvertj = i) {
if((( verty[I ] gt; irritable)! =(verty[j] gt; irritable)) amp amp
(testx lt(vertx[j]-vertx[I])*(testy-verty[I ])/ (verty[j]-verty[I]) vertx[I]))
c =! c;
}
Regresar c;
}
Descripción del parámetro:
Nvert: el vértice de los puntos del polígono.
Vertx, verty: son matrices de coordenadas x e y del vértice respectivamente.
Testx, testy: Coordenadas X e Y del punto medido.
Datos ampliados:
La forma más sencilla de determinar si un punto está dentro de un polígono es utilizar el método del rayo, ya que se puede aplicar a todo tipo de polígonos, independientemente de sus características especiales. circunstancias, y es más rápido.
La idea del algoritmo es muy simple: dibujar un rayo virtual en p(x, y) en cualquier punto fuera del polígono, y luego calcular el número de veces que el rayo cruza los bordes del polígono. polígono. Si el número es par significa que p(x,y) está fuera del polígono, si es impar, está dentro del polígono.