【问题标题】:Arranging triangles in grid order按网格顺序排列三角形
【发布时间】:2009-10-15 12:50:56
【问题描述】:

我的程序自动生成三角形,但是三角形的排列在 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)); 
}

已编辑:所需输出

我怎样才能让程序生成许多图案,但它必须对称形式?例如左右是对称的。我试图制作循环,但到目前为止它只生成 1 个模式。请帮忙:-(

*** ***      OR    **   **        OR  ***   ***    etc (as long as it is symmetrical)
*** ***            **   **             *     *
 *   *

【问题讨论】:

  • 在提交作业问题时,最好将自己的作品展示出来,以便人们给予指导。
  • 您想一次绘制一个三角形吗?还是三角零件?一个三角形可以包含另一个三角形的一部分吗?他们有特定的方向吗?
  • 三角形的大小相似。有10个三角形我想在JPanel上有序排列。

标签: java geometry


【解决方案1】:

看看my solution to your previous question

编辑:

修改上面链接中的示例,您可以将随机多边形点替换为一些更固定的点。在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 轴的随机点,但三角形的底部两个点将是固定的,并且它们之间的距离是恒定的。

alt text http://img127.imageshack.us/img127/5809/picture5v.png

【讨论】:

  • 谢谢,但我怎样才能使它从一个三角形到另一个三角形的空间相等?
  • 例如有 10 个三角形,我怎样才能使一个三角形彼此之间的距离是固定的,例如20
  • 你还希望它们是随机形状的吗?
  • 没有。三角形大小是固定的。只有一种尺寸。
  • 我需要三角形的排列看起来对称(网格顺序可能是最好的顺序),无论是从 JPanel 的左侧还是右侧。
【解决方案2】:

如果您的三角形的大小、形状和方向不完全相同(或仅大致相同),那么您可以将它们放置成使得它们的外心点位于精确的网格上,从而为您提供“等距”间隔的近似值。可以试试其他点,比如九点圆的中心,看看能不能找到视觉上更讨喜的排列方式。

有关这些要点的更多信息,请参阅 [Wikipedia article on triangles][1]。

[1]: http://en.wikipedia.org/wiki/Triangle"维基百科关于三角形的文章"

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2021-09-07
    • 2017-01-15
    相关资源
    最近更新 更多