1

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

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

为 Polygon 对象计算这些 N 点的算法是什么?绘制一个正多边形后,我需要根据第一个正多边形绘制另一个正多边形,但旋转 K 度。

4

3 回答 3

5

使用 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.

于 2012-12-16T23:08:10.473 回答
2

-vertex 多边形的顶点N位于角度

(2*Math.PI*K)/N

哪里K从 0 到N-1,包括在内。垂直坐标可以计算为角度乘以外接圆半径的正弦值;水平坐标的计算方法相同,只是您需要将半径乘以角度的余弦。

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

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

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

于 2012-12-16T23:09:58.427 回答
0

sin、cos、半径、2*PI / 边数和循环

于 2012-12-16T23:07:01.907 回答