Android:围绕另一个点旋转一个点(不会丢失精度)

时间:2013-05-24 09:59:15

标签: java android android-canvas

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

enter image description here

点坐标如下: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位小数对值进行舍入,该点也会在离线太远的位置停止。

1 个答案:

答案 0 :(得分:0)

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

根据您选择的步骤和圆的半径,检查x / y将给出完全不同的精度。