gpt4 book ai didi

android - 计算Android屏幕上两点之间的路径

转载 作者:行者123 更新时间:2023-11-29 02:14:25 24 4
gpt4 key购买 nike

问题一开始对我来说似乎很简单,但现在我被卡住了。

场景我想在我创建的特定路径上移动屏幕上的图像。移动此图像是在线程上进行的,例如:

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

我附上一张图片作为示例。任何帮助表示赞赏。 enter image description here

最佳答案

我不确定我是否清楚地理解了你的问题......

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

包含两个点的直线将有等式:

-30 = -5*a + b和50 = 50*a + b所以b = -250/11a = 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)

关于android - 计算Android屏幕上两点之间的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com