JAVA 绘制规则多边形



我正在寻找一种算法来绘制正多边形,如三角形、四边形、五边形、六边形等。

我想它基本上是在处理所有多边形点都位于圆线上的事实。

计算多边形对象的 N 个点的算法是什么?绘制一个正多边形后,我需要基于第一个多边形绘制另一个规则多边形,但旋转了 K 度。

使用 sin 和 cos:

double theta = 2 * Math.PI / sides;
for (int i = 0; i < sides; ++i) {
    double x = Math.cos(theta * i);
    double y = Math.sin(theta * i);
    // etc...
}

要旋转,只需在角度上添加一个恒定的偏移量,即 theta * i + offset .

N顶点多边形的顶点位于

(2*Math.PI*K)/N

其中K从 0 到 N-1 ,包括。垂直坐标可以计算为角度乘以圆周半径的正弦;水平坐标的计算方式相同,只是您需要将半径乘以角度的余弦。

要将多边形旋转 X 度,请将X转换为弧度,并将结果添加到公式中的角度,如下所示:

(2*Math.PI*K)/N + Xrad

最后,由于屏幕的原点位于其中一个角落,因此只有多边形的一部分是可见的。为避免这种情况,请向计算的每个坐标添加等于圆周中心位置的偏移量。

sin,

cos, radius, 2*PI/边数和一个循环

最新更新