Eu tenho um navio que viaja na velocidade máxima maxSpeed
e pode girar rotationSpeed
graus por segundo. O navio sempre se move na direção em que está voltado, o que significa que quanto mais rápido o navio estiver viajando, maior será o raio de viragem.
Conheço minha posição, rotação e posição do alvo.
O que eu gostaria de descobrir é se um alvo está dentro do meu raio de viragem a essa velocidade, ou melhor, qual é a velocidade máxima em que posso viajar para fazer a curva para o alvo sem circular continuamente ao redor dele.
Existe uma maneira (ish) eficiente de fazer isso?
Aqui está o que estou pensando até agora: porque sei até que ponto estou viajando por etapa e quanto estou girando por etapa, posso descobrir onde estarei nos próximos dois quadros. Minha posição atual é p1, minha próxima posição é p2 e depois p3. Eu posso pegar os bissetores perpendiculares de (p1, p2) e (p2, p3). Seu ponto de interseção me dará o centro de um círculo. Posso testar se o alvo está nesse círculo.
Não tenho certeza se isso funcionará em 3D (não sei como calcular uma esfera com minhas entradas). Essa solução também não ajuda muito em encontrar a velocidade certa na qual viajar, eu precisaria tentar algumas vezes com velocidades diferentes para encontrar uma velocidade razoável.
Alguém pode lançar alguma luz sobre uma solução melhor?
fonte