我在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位小数对值进行舍入,该点也会在离线太远的位置停止。
答案 0 :(得分:0)
您的圈子由x^2 + y^2 = r^2
定义,您的行号为y = k*x + b
找到两个相交的点I(x,y),并为每个步骤计算下一次迭代中从I到A的距离。一旦距离开始增加,停止。
根据您选择的步骤和圆的半径,检查x / y将给出完全不同的精度。