画一个未知数的圆圈

Drawing a circle of unknown number of circles

我目前正在开发 WinForms 应用程序,该应用程序有时必须绘制一些东西。基本上,它必须绘制未知数量的圆圈 (f.e 3, 5, 10) 并组织成圆形。像这样:

我知道它看起来很可怕。所以我想定义一个圆心和一个半径。然后我只需要从大圆的顶部开始 f.e 并每隔 x 度画一个小圆(比如 3 个圆是 120 度,4 个圆是 90 度等等)。

我的问题是:有没有算法可以给我绘制圆的中心点?就像我用 f.e 中心 X = 50, Y = 50 和半径 R = 10 定义我的大圆一样。然后我在顶部画一个圆圈,决定我要画下一个与第一个圆圈相距 120 度的圆圈,我只需要一个位于大圆圈上的点 (X, Y)?

基本上,您只需要一些数学运算就可以计算出角度落在圆周长末端的坐标(圆半径与圆心的距离)。这是针对这种情况的伪代码。

var center = new Point(0,0);
var radius = 5;
var degrees = 83;
var angle = Math.PI * degrees / 180;
var xPos = center.X + (radius * Math.cos(angle));
var yPos = center.Y + (radius * Math.sin(angle));
var newPosition = new Point(xPos,yPos);

在这里,newPosition 成为您将沿着假想圆圈绘制的圆圈的中心点。至于收集角度,只需使用 360 / count * index.