Trajetória projetada de um veículo?


8

No jogo que estou desenvolvendo, tenho que calcular se meu veículo (1), que no exemplo está viajando para o norte com uma velocidade V, pode atingir seu objetivo (2). O exemplo descreve o problema do topo:

insira a descrição da imagem aqui

Na verdade, existem dois cenários possíveis: V é constante (resultando na trajetória 4, um arco de círculo) ou o veículo tem a capacidade de acelerar / desacelerar (trajetória 3, um arco de espiral).

Gostaria de saber se existe uma maneira direta de verificar se o veículo é capaz de atingir seu objetivo (em vez de ultrapassá-lo) . Estou particularmente interessado na trajetória nº 3, pois eu só conseguia pensar em integrar a posição do veículo ao longo do tempo.

EDIT: é claro que o veículo sempre tem capacidade de dirigir, mas o raio da direção varia com a velocidade (pense na força g lateral máxima).

EDIT2: observe também que (como a maioria dos veículos na vida real) também existe um raio de direção mínimo para os veículos do jogo).

Respostas:


15

Se você puder variar sua velocidade (portanto, seu ângulo de direção), sempre encontrará uma solução, começando pelo degenerado, onde a entidade quase parou de girar em um pequeno círculo até apontar o alvo.

Se você não pode variar sua velocidade, pode pensar em áreas inacessíveis ou sombras que você não pode alcançar, mesmo usando sua melhor direção, se o alvo estiver nessas áreas que você não pode alcançá-lo (a menos que "ultrapassar" você possa até superá-los e coloque-os fora da área de sombra).

Seu melhor direcionamento permite que você vire à esquerda / direita em um arco de círculo, permitindo desenhar uma circunferência completa:

sombras

Como você pode ver, o que está dentro de um dos dois círculos não pode ser alcançado diretamente.

Um corpo de massa m que está dirigindo uma curva com raio de curvatura r , experimenta uma força centrífuga aparente radial causada pelo comportamento inercial do corpo, igual a:

Fc = mV ^ 2 / r

onde V é a velocidade do corpo (o comprimento do vetor de velocidade); sendo a aceleração de um corpo devido a uma força:

a = F / m

nossa aceleração é:

a = V ^ 2 / r

Se dizemos que am é a aceleração máxima, obtemos que:

rm = V ^ 2 / am

onde rm é o raio mínimo usando a aceleração máxima.

Quando você deseja testar se o veículo em P, movendo-se na velocidade V, pode atingir o alvo em T, você deve:

1) calcule C1 e C2 como:

c1 e c2

2) teste a distância mínima de P de C1 e C2 da seguinte forma:

teste de raio

Se d for maior que rm, isso significa que T está fora das sombras e é acessível pelo veículo simplesmente ajustando a direção sob a restrição de direção. (para ser mais preciso, há um caminho sob restrições que permite que a função da distância entre T e P diminua monotonicamente)

[ATUALIZAR]

Se possível mudar a velocidade, é sempre possível obter um arco (ou seja, uma velocidade / casal aceleração radial) que vai de P a T . Isso é possível porque o raio se torna um verdadeiro grau de liberdade.

Esta é uma construção possível:

caminho de Destino

A linha preta é o eixo no qual o centro dos círculos pode estar: é perpendicular à face atual do veículo e passa pelo centro de rotação.

O segmento verde representa a linha que é perpendicular à que liga o centro do veículo ao alvo e passa pelo meio dessa distância.

A linha verde cruza a preta exatamente no centro do arco desejado. O comprimento do segmento laranja nos diz o raio de viragem que pode ser alcançado regulando a velocidade e girando na direção máxima ou regulando a velocidade e a direção para permanecer sob a restrição


Obrigado por dedicar um tempo para escrever esta resposta detalhada (+1). Preciso "estudá-lo" um pouco, mas desde a primeira leitura me parece que sua primeira afirmação "você sempre encontrará uma solução ..." não é necessariamente verdadeira: a existência de um raio de direção mínimo implica que sempre será uma "área de sombra" cujo limite definirá uma espécie de "órbita" ao redor do alvo ... Ou estou errado? [Este é realmente o verdadeiro problema para mim, como o cálculo para V = k são simples ...]
mac

@mac se o alvo não estiver no mesmo local do seu veículo, você pode desacelerar para que rmin gere um círculo pequeno o suficiente para não conter o alvo. Quando você está nessa condição, pode definir sua velocidade para que o alvo fique exatamente na sua circunferência!
FxIII 03/09/11

@Fxill - Mais uma vez, obrigado pela atualização, se possível, eu daria a você um segundo +1 pela dedicação! :) Ainda assim, não entendo pela sua explicação como você explica tanto a aceleração quanto a velocidade inicial: todo o problema está no fato de que, com o tempo, a velocidade mudará (arco de uma espiral). Estou com a impressão de que talvez não haja espaço suficiente para o veículo diminuir a velocidade / obter um raio pequeno o suficiente para interceptar o alvo ... ou estou errado?
mac

@mac digamos am = 1 então rm = v ^ 2; se d = | PT | > 0, você pode escolher v ^ 2 <d / 2; se d = 0 significa que P = T, então você já atingiu seu objetivo ...
FxIII

hahaha sem dúvida que funciona! : D
FxIII 6/09/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.