Segmentos de linha de um ponto
Pergunta
Eu tenho um ponto P e 2 segmentos de linha em um avião 2D. O ponto P é um local de visão de onde a câmera está olhando para os segmentos de linha. Quero verificar se o segmento 1 da linha está parcial ou totalmente escondido atrás da linha 2, quando olha do ponto P.
Solução
Eu acho que a questão é se a segunda linha é "mascarada" pela primeira linha.
Digamos que seu ponto de câmera seja C e seus segmentos são A1, A2 e B1, B2.
Eu calculava os produtos cruzados CA1XCB1 e CA2XCB2. O sinal lhe dará se o ponto se o ponto B1 estiver à esquerda ou à direita da linha CA1. Depende de como seus triângulos CA1A2 e CB1B2 são orientados (eles devem ser orientados da mesma forma, são muitas maneiras de fazer isso).
Você pode usar o sinal para saber se está nos seguintes casos:
- CA1XCB1 é negativo ou CA2XCB2 é positivo, então parcialmente visível
- o oposto, depois escondido.
Você também pode calcular CA1XCB2 e CA2XCB1 para ter casos de granulação multitados.
Outras dicas
A resposta de Slurdge é um bom começo, mas é um pouco mais complicado do que isso.
Se o segmento de linha 2 estiver mais próximo de C do que o segmento 1 da linha, ainda pode ser visível, por exemplo
A1-------A2
B1-B2
C
Aqui B1 e B2 estão "dentro" do setor A1A2, mas não estão ocultos.
O mais difícil de se exercitar é se B1 está 'entre' A1 e A2, mas mais próximo da câmera, enquanto B2 não está entre 'A1 e A2, mas mais longe da câmera:
B2
A1-----A2
B1
C
O B1B2 pode prender a borda do segmento de linha, tornando assim uma pequena porção de B1B2 escondida (ou talvez não!). Eu acho que você teria que encontrar a interseção de A1A2 e B1B2 para verificar se isso realmente acontece.