如何计算圆的上半部分的点

时间:2019-06-06 15:19:36

标签: c# geometry

我正在尝试将一些图标平均放置在圆圈的上半部分。

我设法使用以下公式/代码将它们围绕整个圆圈

for(int i=0;i<numberOfItems;i++)
{
    float x = (float)(center.X + radius * Math.Cos(2 * Math.PI * i / numberOfItems))-iconBmp.Width/2;
    float y = (float)(center.Y + radius * Math.Sin(2 * Math.PI * i/ numberOfItems))-iconBmp.Height/2;

    canvas.DrawBitmap(iconBmp, new SKPoint(x, y));
}

但是我不知道该如何仅在圆的上半部分做呢? 也有一个公式吗? 我觉得我整个圈子中的人只需要进行一些调整即可实现这一目标……但无法弄清楚是什么。

谢谢你!

1 个答案:

答案 0 :(得分:2)

这是数学问题,而不是编程问题。

2pi弧度= 360度

因此,如果要显示所有项目,但形状为半圆,请使用:

Math.PI * i / numberOfItems而不是2 * Math.PI * i / numberOfItems

此外,因为屏幕坐标始于左上角。这将使其成为圆圈的下半部分,并且第一个项目在右侧。如果您想要圆的上半部分在左边的第一项,那么只需添加pi:

Math.PI + (Math.PI * i / numberOfItems)

整个代码:

for(int i=0;i<numberOfItems;i++)
{
    float x = (float)(center.X + radius * Math.Cos(Math.PI + (Math.PI * i / numberOfItems)))-iconBmp.Width/2;
    float y = (float)(center.Y + radius * Math.Sin(Math.PI + (Math.PI * i / numberOfItems)))-iconBmp.Height/2;

    canvas.DrawBitmap(iconBmp, new SKPoint(x, y));
}