我正在尝试将一些图标平均放置在圆圈的上半部分。
我设法使用以下公式/代码将它们围绕整个圆圈
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));
}
但是我不知道该如何仅在圆的上半部分做呢? 也有一个公式吗? 我觉得我整个圈子中的人只需要进行一些调整即可实现这一目标……但无法弄清楚是什么。
谢谢你!
答案 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));
}