有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

enter image description here

点坐标类似于:点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位小数对值进行四舍五入,该点也会在距离直线太远的位置停止


共 (1) 个答案

  1. # 1 楼答案

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

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