Estoy haciendo un pequeño simulador de dirección usando el algoritmo de boid de Reynolds. Ahora quiero agregar una función para evitar la pared. Mis paredes están en 3D y se definen usando dos puntos como ese:
---------. P2
| |
P1 .---------
Mis agentes tienen una velocidad, una posición, etc.
¿Podría decirme cómo evitar con mis 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;
}
Luego uso todas las fuerzas devueltas por mis funciones boid y lo aplico a mi agente.
Solo necesito saber cómo hacer eso con mis paredes.
Gracias por tu ayuda.