【问题标题】:Automatically generate an Hexagonal grid in Java在 Java 中自动生成六边形网格
【发布时间】:2014-01-25 14:02:12
【问题描述】:
  public void paintComponent(Graphics g) 
  {
    super.paintComponent(g);
    for (int  n = 0; n < 13; n++)
    {
        double hexCentX = x/2+(3*u*n*Math.cos(Math.PI/3));
        double hexCentY = y/2+(u*n*Math.sin(Math.PI/3));
        Polygon sn = new Polygon();
        for (int i = 0; i < 6; i++)
          sn.addPoint((int) (hexCentX + u * Math.cos(i * Math.PI / 3)),
              (int) (hexCentY + u * Math.sin(i * Math.PI / 3)));
        g.drawPolygon(sn);
        g.drawString(Integer.toString(n), (int)hexCentX, (int)hexCentY);
    }
  }

我正在尝试编写脚本以自动构建六边形网格。 六边形是任意大小 u,Hexagon'0' 应该在 xy 的窗口中心,并在环中添加连续的周围。

我认为,理论上,我的数学应该是正确的,但在某处出了点严重错误,因为它会这样做。

https://www.dropbox.com/s/suj282lnkmxn0g1/hexagons.bmp

他们只是沿着对角线向下走。为低画质致歉!

谁能帮助我修复我的代码和/或指出数学上的明显失败?如果需要,将提供整个程序!

【问题讨论】:

  • 代码的可编译版本总是可以帮助其他人帮助您。 SSCE
  • 一个网格是二维的,需要两个 for 循环(你可以用一个无法破译的数学来做到这一点)。一个 for 循环应该移动 x 坐标,另一个应该移动六边形中心的 y 坐标。

标签: java math polygon hexagonal-tiles


【解决方案1】:

从代码中,您的六边形的所有中心确实位于C(t) = (x/2+3*u*t*c, y/2+u*t*s) 线上。在您的外部循环中,您需要生成实际上位于螺旋上的六边形中心坐标。

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多