c# - 计算正多边形顶点的坐标

标签 c# algorithm math geometry polygon

我正在编写一个程序,我需要在其中绘制任意多边形的多边形,每个多边形都由动态变化的给定公式转换。涉及到一些相当有趣的数学,但我被困在这个问题上。

如何计算正多边形(所有角度都相等的多边形)的顶点坐标,仅给出边数,并且理想情况下(但不一定)具有原点在中心?

例如:一个六边形可能有以下点(都是float):

( 1.5  ,  0.5 *Math.Sqrt(3) )
( 0    ,  1   *Math.Sqrt(3) )
(-1.5  ,  0.5 *Math.Sqrt(3) )
(-1.5  , -0.5 *Math.Sqrt(3) )
( 0    , -1   *Math.Sqrt(3) )
( 1.5  , -0.5 *Math.Sqrt(3) )

我的方法是这样的:

void InitPolygonVertexCoords(RegularPolygon poly)

并且需要将坐标添加到此(或类似的东西,如列表):

Point[] _polygonVertexPoints;

我主要对此处的算法感兴趣,但 C# 中的示例会很有用。我什至不知道从哪里开始。 我应该如何实现?有可能吗?!

谢谢。

最佳答案

for (i = 0; i < n; i++) {
  printf("%f %f\n",r * Math.cos(2 * Math.PI * i / n), r * Math.sin(2 * Math.PI * i / n));
}

其中 r 是外接圆的半径。抱歉语言错误 No Habla C#。

基本上任何两个顶点之间的角度都是 2 pi/n 并且所有顶点与原点的距离为 r

编辑: 如果你想让中心位于原点以外的某个地方,比如 (x,y)

for (i = 0; i < n; i++) {
  printf("%f %f\n",x + r * Math.cos(2 * Math.PI * i / n), y + r * Math.sin(2 * Math.PI * i / n));
}

关于c# - 计算正多边形顶点的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436453/

相关文章:

c# - 如何使用 C# 获取 Excel 工作表中给定行的列数?

c# - 在 ASP.NET Core 中分离应用程序级日志记录和框架级日志记录

c# - 列表框的多数据触发条件来检查是否选择了某个项目

c - 洪水填充算法

algorithm - 当我想选择项目以尽可能满地填充容器时,它叫什么 - 我应该使用什么算法?

algorithm - 在线段中放置一个点 - 一种算法

javascript - 异或: N things with variable probabilities

c# - EF6.1.1 与 MySQL 连接不关闭

algorithm - 求解递归关系

algorithm - 谁负责精度?