在Android中计算屏幕上两点之间的路径

在Android中计算屏幕上两点之间的路径,android,animation,path,coordinates,ondraw,Android,Animation,Path,Coordinates,Ondraw,这个问题起初对我来说很简单,但现在我被卡住了 场景 我想在屏幕上移动图像,在我创建的特定路径上。在线程上移动此图像,类似于: @Override public void run() { Canvas c; while (run) { c = null; try { c = panel.getHolder().lockCanvas(null);

这个问题起初对我来说很简单,但现在我被卡住了

场景 我想在屏幕上移动图像,在我创建的特定路径上。在线程上移动此图像,类似于:

@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方向的速度

我附上一张图片作为例证。感谢您的帮助。

如果我清楚地理解了你的问题,我就不是舒尔

如果您正在寻找将点A转换为线A-B上的点的函数

包含两个点的线将具有以下等式:

-30=-5*a+b 和 50=50*a+b 所以 b=-250/11 a=16/11

因此,要找到下一点,您必须:

检查下一点的x是否位于目标点的左侧(-1)或右侧(+1)

并通过以下公式计算下一点:

image.currentX= image.currentX+((-1 or +1)*movement_speed);
image.currentY= image.currentY+16/11*(-1 or +1)*movement_speed + (-250/11)
我想你会找到有用的。特别是,请查看