Сначала проблема казалась мне очень простой, но теперь я застрял.
Сценарий Я хочу переместить изображение на экране по определенному пути, который я создаю.Перемещение этого изображения выполняется в потоке, что-то вроде:
@Override
public void run() {
Canvas c;
while (run) {
c = null;
try {
c = panel.getHolder().lockCanvas(null);
synchronized (panel.getHolder()) {
panel.updateImageCoordinates();
panel.onDraw(c);
}
} finally {
if (c != null) {
panel.getHolder().unlockCanvasAndPost(c);
}
}
}
для изображения, которое я хочу переместить, у меня есть список с основными точками, куда он должен идти.Каждая координата имеет:
public class Coordinates {
private int x = 0;
private int y = 0;
private int speedX=0;
private int speedY=0;
}
Например, моя первая точка -5; -30, и мне нужно добраться до второй точки 50.50.Расчет следующих координат для рисования изображения производится по updateImageCoordinates ().Моя проблема в том, что я не знаю, как рассчитать speedX и speedY, чтобы добраться из точки A в точку B по прямой.В основном для каждого выполнения updateImageCoorindates () мне нужно сделать:
image.currentX= image.currentX+speedX;
image.currentY= image.currentY+speedY
//Check if I reached the B point. if so, move to next point.
Я не знаю, основываясь на знании координат, как я могу рассчитать скорость по направлениям x и Y.
Я прилагаю изображение для иллюстрации.Любая помощь приветствуется.