在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)
我想你会找到有用的。特别是,请查看