在Android上查找圆上的点

在Android上查找圆上的点,android,graphics,geometry,point,Android,Graphics,Geometry,Point,在我真正编程之前,一切看起来都那么简单明了 我所拥有的 我上传了一张图片以便更好地解释 我有一个圆圈,我知道 是半径 中心点坐标 每个按钮的初始坐标(红色圆圈) 我希望在旋转10度的灰色圆圈图像时,能够计算红色按钮的新坐标(x1y1,x2y2) 对于懂数学的人来说,这应该不难实现,但我没有找到合适的解决方案。我也在这里搜索过,找不到有效的解决方案。非常感谢您的帮助。 多谢各位 工作解决方案如下所述: -首先注意旋转角度,每次重画时只需增加旋转角度即可 angle = angle+

在我真正编程之前,一切看起来都那么简单明了

我所拥有的

我上传了一张图片以便更好地解释

  • 我有一个圆圈,我知道

    • 是半径
    • 中心点坐标
    • 每个按钮的初始坐标(红色圆圈)
我希望在旋转10度的灰色圆圈图像时,能够计算红色按钮的新坐标(x1y1,x2y2)

对于懂数学的人来说,这应该不难实现,但我没有找到合适的解决方案。我也在这里搜索过,找不到有效的解决方案。非常感谢您的帮助。 多谢各位

工作解决方案如下所述:

-首先注意旋转角度,每次重画时只需增加旋转角度即可

   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);

如果保持按钮初始角度,然后修改角度以产生旋转,则更容易。所以在伪代码中:

newAngle = Angle+rot;
xbutton = center.x+cos(newAngle)*radius;
ybutton = center.y+sin(newAngle)*radius;
buttonAngle = atan2(button.y-center.y,button.x-center.x);
如果确实只有按钮的坐标,可以使用伪代码中的函数
atan2
,将其转换为角度:

newAngle = Angle+rot;
xbutton = center.x+cos(newAngle)*radius;
ybutton = center.y+sin(newAngle)*radius;
buttonAngle = atan2(button.y-center.y,button.x-center.x);
x1=x+r sin 10

y1=y+r cos 10

x2=x-r sin 10


y2=y-r cos 10

你让我的日子过得很幸福。非常感谢你的帮助。我已经在问题帖中发布了运行中的android代码。实际上,在测试了一点之后,按钮就发疯了。当我滑动圆圈时,过了一会儿按钮就不在同一条线上了。调试以了解全部内容。同时有什么想法吗?如果我以另一个方向(非顺时针)旋转圆,公式是否会改变?存储一个角度并增加一个角度。假设另一个总是+180,这样可以避免舍入错误。正如我之前评论的那样,我对按钮不能正确移动有问题。你能解释一下,在哪些情况下我得到+和在哪些情况下我得到-的公式吗。非常感谢。