Tengo una lista de vértices de polígonos simples, y me gustaría comprobar si un polígono está o no totalmente contenido en otro polígono de la lista.
¿Es suficiente con hacer algo como:
Dejemos que $p_0$ sea el polígono candidato.
Dejemos que $r_i, ~le_i, ~u_i, ~l_i$ denotan el vértice más a la derecha, el más a la izquierda, el más arriba y el más abajo del iésimo polígono de la lista.
Para todos los polígonos de la lista, si algún polígono tiene:
- $r_i(x) \ge r_0(x)$ Y
- $le_i(x) \le le_0(x)$ Y
- $u_i(y) \ge u_0(y)$ Y
- $l_i(y) \le l_0(y)$
donde por ejemplo $r_i(x)$ denota el $x$ -coordenada del vértice más a la derecha del $i$ -de un polígono, entonces podemos concluir que $p_0$ está totalmente contenida en $p_i$ .
¿Tiene esto sentido, y hay algún contraejemplo para el que este algoritmo no funcione?
0 votos
¿Por casualidad hay que hacer esto en código? ¿En qué lenguaje si es así? Porque es casi seguro que esto está implementado por alguna biblioteca.
0 votos
@jpmc26 lo estoy haciendo en python, pero me gustaría escribir el código desde cero
0 votos
Esto comprueba si el AABB mínimo de un polígono contiene completamente el AABB mínimo del otro.
0 votos
La respuesta "simple" a esto es a) comprobar si los polígonos se intersecan (en cuyo caso es falso) y luego, si no, b) comprobar si algún vértice de un polígono está dentro del otro polígono. Por supuesto, comprobar si los polígonos se cruzan es bastante difícil...