【问题标题】:JAVA draw regular polygonJAVA绘制正多边形
【发布时间】:2012-12-16 23:04:44
【问题描述】:

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

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

为 Polygon 对象计算这 N 个点的算法是什么? 绘制一个正多边形后,我需要在第一个正多边形的基础上再绘制一个正多边形,但旋转 K 度。

【问题讨论】:

  • 要绘制的多边形是什么? java.awt.Image?一个 JComponent?请把问题说得更清楚。
  • 如果您只是要求计算点的算法,通过搜索网络很容易找到。您甚至会在 StackOverflow 上找到至少两个问题,并且答案已被接受。使用 Java2D 旋转多边形和绘图当然是额外的问题。

标签: java polygon


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    (2*Math.PI*K)/N
    

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-02-09
        • 2021-12-28
        • 2011-12-30
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多