レイノルズボイドアルゴリズムを使用して小さなステアリングシミュレータを作成しています。次に、壁回避機能を追加します。私の壁は3Dであり、そのような2つの点を使用して定義されています。
---------. P2
| |
P1 .---------
私のエージェントは速度、位置などを持っています...
エージェントを回避する方法を教えてください。
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;
}
次に、boid関数によって返されるすべての力を使用し、エージェントに適用します。
私は自分の壁でそれを行う方法を知る必要があるだけです。
ご協力いただきありがとうございます。