1

我在Android上,我试图围绕一个中心旋转一个点(A),只有当它属于将我的中心连接到空间中的另一个点(B)的线时才停止它。

在此处输入图像描述

点坐标类似于: pointX = 45.123456f , pointY = 21.654321f ,并且点 B 没有移动。

我在正在运行的线程中使用此代码:

pointAX = (float) (centerX + ray*Math.cos(SPEED*time));
pointAY = (float) (centerY + ray*Math.sin(SPEED*time));

canvas.drawCircle(pointAX,pointAY, 2, paint);
time++;

而且轨迹真的很好,动画也足够流畅。我怎样才能设法将点停在离线最近的位置?我正在使用此代码,但它不起作用:

if(pointAY/pointAX == pointBY/pointBX){
    stop();
}

即使尝试仅使用 3 或 4 位小数对值进行舍入,该点也会停在离线太远的地方。

4

1 回答 1

0

您的圈子由 定义x^2 + y^2 = r^2,您的线是y = k*x + b
找到两者相交的点 I(x,y),并为每一步计算下一次迭代中从 I 到 A 的距离。一旦距离开始增加,停止。

根据您选择的步长和圆的半径,检查 x/y 将为您提供完全不同的精度。

于 2013-05-24T10:21:15.687 回答