Tôi tạo ra một trình mô phỏng lái nhỏ bằng thuật toán bo Reynold. Bây giờ tôi muốn thêm một tính năng tránh tường. Tường của tôi ở dạng 3D và được xác định bằng hai điểm như thế:
---------. P2
| |
P1 .---------
Đặc vụ của tôi có vận tốc, vị trí, v.v ...
Bạn có thể cho tôi biết làm thế nào để tránh với các đại lý của tôi?
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;
}
Sau đó, tôi sử dụng tất cả các lực được trả về bởi các chức năng boid của tôi và tôi áp dụng nó cho đại lý của mình.
Tôi chỉ cần biết làm thế nào để làm điều đó với các bức tường của tôi.
Cảm ơn bạn đã giúp đỡ.