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);
}
}
我正在尝试将一些脚本拼写在一起以自动构建六角形的网格。Hexagons具有任意大小 u ,六边形的0'应在窗口的中心 x , y ,在环中添加了顺序的周围。
从理论上讲,我认为我的数学应该是听起来的,但是某些事情在 的某个地方都截然不同,因为它可以做到这一点。
https://www.dropbox.com/s/suj282lnkmxn0g1/hexagons.bmp
他们只是在对角线向下线。为低清图像道歉!
有人可以帮助我修复我的代码和/或指出数学的明显失败吗?如果需要,将提供整个程序!
从代码中,六角形的所有中心确实位于 C(t) = (x/2+3*u*t*c, y/2+u*t*s)
。在您的外循环中,您需要产生六角形中心,实际上位于螺旋上。