1
  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);
    }
  }

六角形のグリッドを自動的に構築するために何かを一緒にスクリプト化しようとしています。Hexagon は任意のサイズuであり、Hexagon'0' はx x y yのウィンドウの中心にあり、その周りのリングに連続したものが追加されます。

理論的には、私の数学は正しいはずだと思いますが、代わりにこれを行うため、どこかで何かが大幅に間違っています。

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

それらは斜め下の線に沿って進みます。低画質でごめんなさい!

私のコードを修正したり、数学の明らかな失敗を指摘したりするのを手伝ってくれる人はいますか? 必要に応じてプログラム全体を提供します!

4

1 に答える 1

1

コードから、六角形のすべての中心は実際に線上にありC(t) = (x/2+3*u*t*c, y/2+u*t*s)ます。外側のループでは、実際にらせん上にある六角形の中心座標を生成する必要があります。

于 2014-01-25T14:09:32.543 に答える