Предполагая, что вы хотите переместить одну точку в направлении другой точки и предполагая, что ваш размер шага имеет единицы измерения расстояния, тогда нет, ваш расчет неверен.
Правильная формула:
nextLocation = a + UnitVector(a, b) * stepSize
В C #, используя простой класс Point
и библиотеку Math
, это выглядит следующим образом:
public Point MovePointTowards(Point a, Point b, double distance)
{
var vector = new Point(b.X - a.X, b.Y - a.Y);
var length = Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
var unitVector = new Point(vector.X / length, vector.Y / length);
return new Point(a.X + unitVector.X * distance, a.Y + unitVector.Y * distance);
}
Редактировать: Обновлен код в соответствии с предложением TrevorSeniors в комментариях