いくつかのstepsize(_config.StepSize = 0.03)を使用して、2次元検索スペースのあるポイントaを別のポイントbに移動したいとします。cで別のポイントに移動
Point a = agent.Location;
Point b = agentToMoveToward.Location;
//--- important
double diff = (b.X - a.X) + (b.Y - a.Y);
double euclideanNorm = Math.Sqrt(Math.Pow((b.X - a.X), 2) + Math.Pow((b.Y - a.Y), 2));
double offset = _config.StepSize * (diff/euclideanNorm);
agent.NextLocation = new Point(a.X + offset, a.Y + offset);
//---
正しいですか?
さて、どのようなテストケースを試しましたか? –
ピラタスがユークリッドで彼の杖を振っている:「私の芝生から降りてください! –
一言で言えば、いいえ。あなたのeuclideanNormは基本的に斜辺ですが、私はdiffがあなたに与えることが意図されているか分かりません。正しく計算されていてもオフセットはxとyに加えられます。まったく)。あなたは、ベクトルの角度を見て、それを斜辺と使って、新しいxとyの位置を決定する必要があります。おそらくPythagorasよりも速く計算する巧妙な方法がありますが、それはうまくいくでしょう。 – Lazarus