我正在编写一个程序,其中我需要绘制任意数量的边的多边形,每个边都由一个动态变化的给定公式转换。其中涉及一些相当有趣的数学,但我始终坚持这一观点。
仅给出边数 ,并且理想地(但并非必须)以原点为中心,如何计算规则多边形(所有角度均相等的多边形)的顶点的坐标?
例如:一个六角形可能具有以下点(均为floats):
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是circumsribing圆的半径。对不起,语言错误否Habla C#。
r
基本上,任何两个顶点之间的角度为 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)); }