我的程序自动生成三角形,但三角形的排列在JPanel上是随机的。如何以网格顺序绘制三角形?感谢。
编辑:
for(int i = 0; i < 10; i++)
{
xCoord[0] = generator.nextInt(MAX_WIDTH);
yCoord[0] = generator.nextInt(MAX_HEIGHT);
xCoord[1] = (int) (xCoord[0] - xWidth);
xCoord[2] = (int) (xCoord[1] + (xWidth/2));
yCoord[1] = yCoord[0];
yCoord[2] = (int) (yCoord[1] - yHeight);
triangles.add( new Polygon(xCoord,yCoord, 3));
}
已编辑:输出期望
如何让程序生成多个模式,但必须是否为对称形式?例如左右是对称的。我试图制作Loop但到目前为止它只生成1个模式。请帮助: - (
*** *** OR ** ** OR *** *** etc (as long as it is symmetrical)
*** *** ** ** * *
* *
答案 0 :(得分:1)
看看my solution to your previous question。
编辑:
修改上面链接中的示例,您可以将随机化的Polygon点替换为更加固定的点。在paintComponent
方法中,您可以替换:
for (int j = 0; j < 3; j++) {
xCoord[j] = generator.nextInt(maxCellWidth)
+ (maxCellWidth * xMultiple);
yCoord[j] = generator.nextInt(maxCellHeight)
+ (maxCellHeight * yMultiple);
}
用这个:
xCoord[0] = (maxCellWidth/2) + (maxCellWidth * xMultiple);
// use the following if you need the points to be fixed as well.
//xCoord[0] = generator.nextInt(maxCellWidth) + (maxCellWidth * xMultiple);
yCoord[0] = 5 + (maxCellHeight * yMultiple);
xCoord[1] = 5 + (maxCellWidth * xMultiple);
yCoord[1] = maxCellHeight - 5 + (maxCellHeight * yMultiple);
xCoord[2] = maxCellWidth - 5 + (maxCellWidth * xMultiple);
yCoord[2] = maxCellHeight - 5 + (maxCellHeight * yMultiple);
为了好玩,取消注释xCoord [0]的第二个设置将使得随机点中的顶点沿着x轴,但三角形的底部两个点将是固定的并且它们之间具有恒定的距离。 / p>
alt text http://img127.imageshack.us/img127/5809/picture5v.png
答案 1 :(得分:0)
如果您的三角形的大小,形状和方向(或仅大约)不同,那么您可以将它们放置在一个精确的网格上,使它们具有“等距”间距的近似值。您可以尝试其他点,例如九点圆的中心,看看是否可以找到视觉上更令人愉悦的排列。
有关这些要点的更多信息,请参阅[维基百科关于三角形的文章] [1]。
[1]:http://en.wikipedia.org/wiki/Triangle“关于三角形的维基百科文章”