【问题标题】:Drawing a circle of unknown number of circles绘制一个未知数量的圆圈
【发布时间】:2018-10-11 00:38:24
【问题描述】:

我目前正在开发一个 WinForms 应用程序,它在某些时候必须绘制一些东西。基本上,它必须以圆形的形式组织绘制未知数量的圆圈(例如 3、5、10)。像这样的:

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

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

【问题讨论】:

  • 该算法将是Math.SinMath.Cos
  • 我想你想要的是画很多小圆圈来形成一个大圆圈。对吗?
  • 是的。问题不是画图,问题是找X和Y
  • 您正在寻找多边形的质心。请参阅:en.wikipedia.org/wiki/Centroid

标签: c# drawing


【解决方案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

【讨论】:

  • 但是Math.sin() 不接受弧度而不是度数的角度吗?
  • 我在等待答案时也做了同样的事情,但仍然感谢您的建议!
猜你喜欢
  • 2013-09-20
  • 2015-10-20
  • 1970-01-01
  • 2013-12-02
  • 2018-08-29
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多