Pregunta

Tengo un punto p, y 2 segmentos de línea en un plano 2D. El punto P es un lugar de vista desde donde la cámara está mirando hacia los segmentos de línea. Quiero comprobar si el segmento de línea 1 está parcial o totalmente oculto detrás de la línea 2, cuando se mira desde el punto P.

¿Fue útil?

Solución

Creo que la pregunta es si la segunda línea está "enmascarado" por la primera línea.

Vamos a decir que el punto de la cámara es C, y sus segmentos son: A1, A2 y B1, B2.

Me calcular los productos cruzados y CA1xCB1 CA2xCB2. El signo te da si el punto de si el punto B1 está a la izquierda oa la derecha de la línea CA1. Depende de cómo se orientan su CA1A2 triángulos y CB1B2 (deben estar orientados de la misma, que son muchas maneras de hacerlo).

A continuación, puede utilizar la señal para saber si se encuentra en los siguientes casos:

  • CA1xCB1 es negativo o CA2xCB2 es positivo, entonces parcialmente visible
  • lo contrario, entonces oculta.

También puede calcular CA1xCB2 y CA2xCB1 que han multado casos de grano.

Otros consejos

La respuesta de slurdge es un buen comienzo, pero es un poco más complicado que eso.

Si segmento de línea 2 está más cerca de C de segmento de línea 1, todavía podría ser visible, por ejemplo.

A1-------A2

  B1-B2


   C

A continuación, B1 y B2 son "dentro" del sector A1A2, pero no están ocultos.

el más difícil de resolver es si B1 es 'entre' A1 y A2, pero más cerca de la cámara, mientras que B2 es 'no entre' A1 y A2, pero más lejos de la cámara:

             B2

A1-----A2
 B1


   C

B1B2 podría recortar el borde del segmento de línea, haciendo así una pequeña porción de B1B2 oculta (o tal vez no!). Creo que tendría que encontrar la intersección de A1A2 y B1B2 para comprobar si en realidad esto sucede.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top