Dan*_*ang 5 math graphics geometry polygon
我知道要从中心点绘制正多边形,您可以使用以下内容:
for (int i = 0; i < n; i++) {
p.addPoint((int) (100 + 50 * Math.cos(i * 2 * Math.PI / n)),
(int) (100 + 50 * Math.sin(i * 2 * Math.PI / n))
);
}
Run Code Online (Sandbox Code Playgroud)
但是,无论如何都要更改此代码(不添加旋转)以确保始终绘制多边形,以使最上边或最下边与180度线平行?例如,通常,上面的代码为五边形或正方形(分别为n = 5和4)会产生类似于:

我正在寻找的是:

是否有任何数学方法可以实现这一目标?
你必须添加 Pi/2-Pi/n
k[n_] := Pi/2 - Pi/n;
f[n_] := Line[
Table[50 {Cos[(2 i ) Pi/n + k[n]] ,Sin[(2 i) Pi/n + k[n]]}, {i,0,n}]];
GraphicsGrid@Partition[Graphics /@ Table[f[i], {i, 3, 8}], 3]
Run Code Online (Sandbox Code Playgroud)

编辑
回答你的评论,我会解释我是如何得出这个公式的.看下图:

如您所见,我们希望一侧的中点与Pi/2对齐.那么......什么是α?很明显
2α= 2 Pi/n(单侧) - >α= Pi/n
编辑2
如果您希望底部与x轴对齐,请添加3 Pi/2- Pi/n...
