Эй, у вас есть координаты (25,35) (45,65) (30,85) для ваших двух линий. Точка, которую вы хотите переместить, будет помещена в первую из этих координат (25,35), и вы хотите, чтобы он двигался ко второй координате (45,65) (конец первого отрезка).
Первый шаг - получить ориентацию, в которой будет перемещаться точка,ориентация - это угол между позицией точки и позицией цели.Чтобы найти этот угол, вы можете использовать Math.atan2()
, передавая в качестве первого аргумента target position Y - the point position Y
, а в качестве второго аргумента target position X - the point position X
.
var Point = {X: 25, Y: 35};
var Target = {X:45, Y:65};
var Angle = Math.atan2(Target.Y - Point.Y, Target.X - Point.X);
Теперь получите синус и косинус этогоугол, синус - это значение для перемещения по оси Y, а косинус - это то, сколько нужно двигаться по оси X.Умножьте синус и косинус на расстояние, которое вы хотите переместить каждый кадр.
var Per_Frame_Distance = 2;
var Sin = Math.sin(Angle) * Per_Frame_Distance;
var Cos = Math.cos(Angle) * Per_Frame_Distance;
Хорошо, осталось сделать только метод перерисовки, где вы добавляете синус в позицию Y точки икосинус к точке X позиции при каждом вызове.Проверьте, прибыла ли точка к месту назначения, затем выполните тот же процесс, чтобы перейти к концу второго отрезка.