c# - 如何计算圆上半部分的点
问题描述
我正在尝试将一些图标平均放置在圆圈的上半部分。
我设法使用以下公式/代码将它们围绕一个完整的圆圈
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));
}
但我不知道如何只为圆圈的上半部分做这件事?是否也有一个公式?我有一种感觉,我为整个圈子所拥有的人只需要一些调整来实现这一点……但不知道是什么。
已经谢谢你了!
解决方案
这更像是一个数学问题而不是编程问题。
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));
}