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

Java Android:围绕另一个点旋转一个点(不丢失精度),java,android,android-canvas,Java,Android,Android Canvas,我在安卓上,我试着围绕一个中心旋转一个点(a),只有当它属于连接我的中心和空间中另一个点(B)的线时,才停止旋转 点坐标类似于:点X=45.123456f,点Y=21.654321f,点B不移动 我正在运行的线程中使用以下代码: pointAX = (float) (centerX + ray*Math.cos(SPEED*time)); pointAY = (float) (centerY + ray*Math.sin(SPEED*time)); canvas.drawCircle(poi

我在安卓上,我试着围绕一个中心旋转一个点(a),只有当它属于连接我的中心和空间中另一个点(B)的线时,才停止旋转

点坐标类似于:点X=45.123456f,点Y=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();
}

即使a尝试仅使用3或4位小数对值进行四舍五入,该点也会在距离直线太远的位置停止

您的圆由
x^2+y^2=r^2
定义,您的行是
y=k*x+b

找到两个相交的点I(x,y),并在下一次迭代中为每一步计算从I到A的距离。一旦距离开始增加,停止

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