在Java中自动生成六边形网格

时间:2014-01-25 14:02:13

标签: java math polygon hexagonal-tiles

  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'应位于 y 的窗口 x 的中心,并且在环中添加连续的六边形周围。

从理论上讲,我认为,我的数学应该是合理的,但某些地方出现了严重错误某处,因为它确实是这样做的。

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

他们只是沿着对角线下行。为低清图像道歉!

有人能帮助我修复我的代码和/或指出数学中明显的失败吗?如果需要,将提供整个计划!

1 个答案:

答案 0 :(得分:1)

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