构造规则的n面多边形的角的算法


10

我已经使用很多关键字组合在Google上进行了搜索,但令我惊讶的是,我找不到用于将规则的n面多边形构造到给定圆中的算法,即找到n个角点的坐标。我所能找到的只是如何通过物理罗盘和直尺或无源的交互式浏览器插件进行操作的说明。

那么我在哪里可以找到这样的算法呢?


2
让我恢复您对Google的信心。;-)“算法规则多边形”的第四个命中:gamedev.net/topic / ... “然后,使用基本三角学,选择n个点围绕圆的圆周等距分布(即-如果n为3,则选择3个点彼此相距120度的圆周)。” 凯文的代码正是这样做的。
埃里克

Answers:


15

随着i从去0 to n-1包容性:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

编辑:正如Lars Viklund在评论中提到的那样,这仅在像javascript这样的语言中是安全的,其中整数除法返回浮点数而不是整数。在其他语言中,您应该首先i转换为浮点数。


3
当心在整数中除以整数的语言中,i / n中整数除法的陷阱。
拉尔斯·维克伦德

很好,我会在答案中添加警告。
Elva 2012年

这个不用说了,但你还需要防范的情况下n * 2 * PI == 0,或者你将有一个不愉快的多边形:(。
扎克人类

除非怪异n * 2 * PI == 0,否则我想到的唯一n 就是0,据我所知,它与i / 0一样是未定义的。所以没问题吧?:)
Elva 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.