画一个未知数的圆

时间:2018-10-10 16:12:33

标签: c# drawing

我目前正在使用WinForms应用程序,该应用程序有时需要绘制一些东西。基本上,它必须以圆形组织绘制未知数量的圆(例如3、5、10)。像这样:

enter image description here

我知道它看起来很可怕。所以我想到了定义一个圆心和一个半径的中心。然后我只需要从大圆圈的顶部开始,每x度画一个小圆圈(例如3个圆圈为120度,4个圆圈为90度,等等)。

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

1 个答案:

答案 0 :(得分:1)

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

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