Я хотел бы переместить некоторую точку a в двумерном пространстве поиска в другую точку b с помощью нескольких шагов (_config.StepSize = 0.03).Переместить точку в другую в 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 - это, в основном, гипотенуза, я не уверен, что различие предназначено для вас, и смещение, даже если оно правильно рассчитано, добавляется к x и y, равнозначно шаг в 45 градусов (если есть шаг вообще). Вы должны смотреть на угол вектора и использовать это с гипотенузой для определения новых местоположений x и y. Вероятно, есть некоторые умные способы вычисления, которые быстрее, чем Пифагор, но это сработает. – Lazarus