Haga una pregunta de programación sobre la morfología de la computadora

Algunas aplicaciones requieren recortar ventanas poligonales arbitrarias (incluidas ventanas poligonales cóncavas). El algoritmo de recorte de polígonos de Weiler-Azerton es exactamente el algoritmo que cumple con este requisito.

El método de Weiler-Azerton también se denomina método de corte bilateral.

Encontré un tutorial relacionado de la Universidad de Geociencias de China. El flujo del algoritmo es el siguiente:

1. , ventana de recorte, matriz de intersección, polígono de recorte después de la inserción de la intersección, ventana de recorte después de la inserción de la intersección y polígono de salida.

2. Debido a que las intersecciones están marcadas con "entrada" y "fuera", todas las matrices relacionadas con las intersecciones deben adoptar el tipo de matriz de estructura:

Punto de estructura

{

Doble x;

Doble y;

int flag;

}Matriz de intersección, matriz 3, matriz 4;

La bandera tiene tres estados:

0: punto de no intersección;

1: punto de "entrada";

-1: " "fuera".

3. Cuando busque el punto de intersección, utilice el borde del polígono de corte para encontrar el punto de intersección del borde de la ventana de corte:

Utilizado para (cortar el borde del polígono). )

{

…;

Utilizado para (cortar los bordes de la ventana)

{

Encuentre una intersección válida; colóquela en la matriz de intersecciones;

…;

}

}

4. puntos de intersección significa que las matrices de intersección deben ordenarse y luego insertarse en la posición correspondiente de la matriz 1 y la matriz 2.

5. Para encontrar el punto "de entrada" y el punto de "salida", se debe encontrar la posición del vértice que cumpla las condiciones según el signo. No solo necesitamos encontrar el punto "de entrada" y el punto "de salida" en la matriz 3, sino que también debemos ir a la posición del vértice correspondiente en la matriz 4 después de encontrarlo. La matriz 4 se maneja igual que la anterior. Este procesamiento se encuentra en este algoritmo.