在Android上查找圆上的点

7

在我开始编程之前,一切都看起来如此平淡简单。

我拥有的内容

为了更好地解释,我上传了一张图片。

  • 我有一个圆形,并且知道:

    • 它的半径
    • 中心点坐标
    • 每个按钮的初始坐标(红色圆圈)。

当我旋转灰色圆形图像时,我希望能够计算出红色按钮的新坐标(x1y1,x2y2)。

对于数学熟练的人来说,这不应该难以实现,但我没有找到合适的解决方案。我还在这里搜索了一下,没有找到可行的解决方案。非常感谢任何帮助。

谢谢

enter image description here

正解如Felice在下面所述:

-首先处理旋转角度,每次重绘时只需增加它。

   angle = angle+mainRotationAngle;

    float x =  (float) (center.X + Math.cos(angle*Math.PI / 180F) * radius 
    float y =  (float) (center.Y + Math.sin(angle*Math.PI / 180F) * radius

    button.setX(x);
    button.setY(y);
2个回答

6

如果您保留按钮的初始角度,然后修改角度以产生旋转,这将更容易。因此,伪代码如下:

newAngle = Angle+rot;
xbutton = center.x+cos(newAngle)*radius;
ybutton = center.y+sin(newAngle)*radius;

如果您只有按钮的坐标,可以使用函数 atan2 将它们转换为角度,伪代码如下:

buttonAngle = atan2(button.y-center.y,button.x-center.x);

你让我感到非常开心,Felice。非常感谢你的帮助。我已经在问题帖子中发布了可工作的安卓代码。 - Alin
实际上,在进一步测试后,按钮会变得不稳定。当我滑动圆圈时,一段时间后,按钮不再在同一行上。正在调试以查看问题所在。与此同时,有任何想法吗?如果我将圆圈旋转到另一个方向(非顺时针方向),公式是否会改变? - Alin
存储一个单一的角度并增加一个单一的角度。假设另一个角度始终为+180,这样可以避免舍入误差。 - Felice Pollano

1

就像我之前评论的那样,我遇到了按钮移动不正确的问题。请问您能否解释一下,在哪些情况下我会得到正号,以及在哪些情况下我会得到负号的公式?谢谢。 - Alin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接