esta pregunta es la más difícil de construir un mapa, encontrar un mapa de ruta más corto saldrá después, digamos, bajo mi método de construcción de mapas, en primer lugar, la matriz pos [] comenzará y terminará el punto y el punto final de cada segmento como una pared Los vértices del gráfico (elimine los dos puntos de la raíz de la pared, porque no tiene sentido). Luego use la matriz seg [] [] para representar la información de cada segmento de línea de cada pared, seg [i] [] representa la información de la i-ésima pared, el propósito de esta matriz es principalmente: atravesar cada dos puntos de la matriz pos [] Juzgue si el borde se puede construir Si el segmento de línea formado por estos dos puntos está bloqueado por el muro entre (intersectando un cierto segmento de línea en el muro), el borde no se puede construir, de lo contrario se construye el borde. Aquí hablaré sobre cómo juzgar si los segmentos de línea ab y cd se intersecan.
Si dos segmentos de línea se cruzan, hay ca ⃗ × cb ⃗ \ vec {ca} \ times \ vec {cb}c a×c b和da ⃗ × db ⃗ \ vec {da} \ times \ vec {db}d a×d bSigno diferente y da ⃗ × ca ⃗ \ vec {da} \ times \ vec {ca}d a×c aY db ⃗ × cb ⃗ \ vec {db} \ times \ vec {cb}d b×c bTambién es un signo opuesto. Si estas dos condiciones se cumplen al mismo tiempo, es la intersección. Solo escribí que se cumple una condición, pero esta no es una condición suficiente para juzgar la intersección de los segmentos de línea. Esto se debe a que los datos proporcionados en esta pregunta son especiales. Espero que todos Sólo sé.