java - 按网格顺序排列三角形

标签 java geometry

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

最佳答案

看看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

关于java - 按网格顺序排列三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1572168/

相关文章:

java - 使用 .txt 文件中的对象填充数组?

java - 如何查找txt文件中某个字母出现了多少次?

r - 沿一个方向偏移多段线

Java 将 BufferedImage 作为内联图像直接发送到电子邮件中

java - urlconnection javax.net.ssl.SSLException : java. lang.IllegalStateException

java.lang.RuntimeException : Spurious serialisation error

c++ - 三角形不渲染

展平 3D 三角形带的算法

C++使用for循环绘制三角形带 - 顶点,索引

java - 长方体碰撞