繁体   English   中英

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

[英]Android: rotate a point around another point (without losing precision)

我在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位小数舍入值,该点也会停在距离直线太远的地方。

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

根据选择的步长和圆的半径,检查x / y会给您带来完全不同的精度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM