Eu estou fazendo um pequeno simulador de direção usando o algoritmo boid de Reynolds. Agora eu quero adicionar um recurso para evitar paredes. Minhas paredes são em 3D e definidas usando dois pontos assim:
---------. P2
| |
P1 .---------
Meus agentes têm velocidade, posição, etc ...
Você poderia me dizer como evitar meus agentes?
Vector2D ReynoldsSteeringModel::repulsionFromWalls()
{
Vector2D force;
vector<Wall *> wallsList = walls();
Point2D pos = self()->position();
Vector2D velocity = self()->velocity();
for (unsigned i=0; i<wallsList.size(); i++)
{
//TODO
}
return force;
}
Então eu uso todas as forças retornadas pelas minhas funções boid e aplico ao meu agente.
Eu só preciso saber como fazer isso com minhas paredes.
Obrigado pela ajuda.