Dado um retângulo e um ponto com uma direção de vetor em direção ao retângulo. Como posso encontrar o ponto mais próximo do lado de fora desse retângulo ao ponto em questão?
mathematics
geometry
onedayitwillmake
fonte
fonte
Respostas:
Uma técnica que você pode usar é chamada de "fundição de raios". É comumente usado para renderizar gráficos, mas possui outros aplicativos como a linha de visão (como você deseja fazer) e a localização de caminhos. Em termos gerais, ele funciona encontrando a interseção de um raio e um objeto. No seu exemplo, o raio é o vetor para a direção do personagem.
Uma referência útil para interseções de raio / objeto (e aliás outras interseções de objeto / objeto) é www.realtimerendering.com/intersections.html (consulte as referências de raio / aabb e raio / obb).
fonte
O retângulo tem quatro lados. Cada lado é um segmento de linha.
Teste cada um dos quatro lados para interseção com o raio. Acompanhe o hit mais próximo.
Aqui está um código para descobrir onde o segmento atinge o raio:
fonte
Se a sua caixa estiver alinhada ao eixo, basta fixar cada eixo de coordenada na caixa se o ponto estiver fora da caixa.
Do RTCD, página 130:
Se você fizer isso para os eixos x, y, z, ele
point
será batido na parede mais próxima da caixa, se estiver fora da caixa, para começar. se já estiver dentro da caixa, será deixado sozinho (onde está).fonte
Bem, você pode usar apenas álgebra linear (geometria analítica, para ser mais específico) para resolver isso. Depende de como você modelou o retângulo.
Aqui está um caso geral: http://paulbourke.net/geometry/lineline2d/
fonte