我的问题涉及可以使用混沌游戏生成的分形地址空间。这些地址空间只是一个主要形状相对于另一个的简单转换。
在这里的图像中,您可以看到标有“2”的三角形。三角形“21”、“22”和“23”与三角形 2 相关,因为您必须对其进行变换才能获得这些较小的子三角形。
这就是我想要做的.....给定以下参数:
- int s:原始形状的边数
- Int d:我们想要的形状树的深度(在图像中,d=2,因为我们生成了主三角形的 3 个较小的三角形,然后也生成了它们的子三角形)
- Polygon p:我们打算从中制作孩子的原始形状
...我想采用这些参数并开始使用计数器“i”向下迭代每个深度级别。您可以检查在第 i 层,需要 s^d 形状。这些形状中的每一个都将取决于上面级别中的多边形,所以我如何以某种方式存储它们,以便我可以以一种简单的方式创建许多深度级别,并且还可以使用 for 循环或一些其他有效和简单的方法?我最大的希望是,在每个深度级别,我都可以访问我想在这个级别创建的三角形的父级。我还想稍后引用这些形状,或者通过直接名称,因为这是一个唯一的 ID,或者其他一些简单的方式。
我最初的计划是以某种方式使用每个形状的名称(图像中看到的标签)。我可以以某种方式拥有大量形状,但仅填充索引“1”、“2”、“3”、“11”、“12”、“13”、“21”、“22”等。但这似乎不仅混乱且效率低下,而且看起来很荒谬,因为我必须设法以我可以处理的方式获得 1、2 和 3 的这些排列。一定会有更好的办法!
如果有帮助,我提供了我的源代码:
package chaosaddresses;
import java.util.ArrayList;
//import java.awt.Polygon;
public class AddressManager
{
public Address originalPoly;
public ArrayList<Address>[] array;
public int depth;
public int sides;
public AddressManager(int d, int s, Address a)
{
depth = d;
sides = s;
originalPoly = a;
initArray();
}
private void initArray()
{
//loop through each depth and get all needed polygons
//number of polys at each depth is s^d.
for (int i=1; i <= depth; i++)
{
int numPolys = (int)Math.pow(sides,i);
int numParentPolys = array[i-1].size();
ArrayList<Address> thisLevel = new ArrayList<>();
//iterate parent polys and have each generate their children
for (int j= 0; j < numParentPolys; j++)
{
Address[] babies = array[i-1].get(j).makeChildren();
//add babies to current level
for (int k=0; k < babies.length; k++)
{
thisLevel.add(babies[k]);
}
}
array[i] = thisLevel;
}
}
}