gpt4 book ai didi

java - 如何制作金色分形树

转载 作者:行者123 更新时间:2023-11-30 03:00:51 25 4
gpt4 key购买 nike

我目前有一个制作分形树的程序。然而,我想在我的分形树中使用黄金比例来获得更有趣的设计。我不知道如何用坐标来实现它,特别是用java,因为(0,0)位于左上角,这让事情变得更加困惑。您可以忽略参数adderlength,它们不参与此过程。请原谅我对此事的无知,我仍在努力理解黄金比例到底是如何工作的。我做了一些研究,但我真的想要一个通俗易懂的答案。

public void paintComponent(Graphics g)
{

g.setColor(Color.RED);

draw(g, order, topX, topY,90,20, 200.00);
}


public void draw(Graphics g, int order, int x1, int y1, double angle, int adder, double length)
{
int x2, y2, x3, y3;
double newAngle = Math.toRadians(angle);

if (order == 1)
{
return;
}
else
{
x2 = (x1 - (int)Math.round(Math.cos(newAngle) * order * 10));

y2 = (y1 - (int)Math.round(Math.sin(newAngle) * order * 10));

g.drawLine(x1, y1, x2, y2);

draw(g, order-1, x2, y2, angle+30, adder+2, length+20);
draw(g, order-1, x2, y2, angle-30, adder+2, length+20);
}
}

这就是当前输出的 10 量级。 enter image description here

最佳答案

将黄金比例集成到代码中的一种方法是在分支长度的计算中使用它。在这里,虽然您有一个 length 参数,但它没有被使用。相反,长度计算为 order * 10,这样树干的长度为 100,当 order 达到 2 时,叶子的长度为 20。

如果您使用长度参数,并递归使得每个连续的分支顺序是祖先分支长度的 0.618034,您将创建一棵具有更长主干和核心分支的树,并收敛到一种类似西兰花的细节在叶子上:

Tree with 30 degree branching and each successive branch length is 0.618 times the ancestor's length.

您可以控制的另一个参数是角度,您已将其设置为 30 度。下面,我将您的代码转换为 Processing(它基本上是 Java,并且很容易用于此类事情)。您可以将其粘贴到 http://www.openprocessing.org/sketch/create 中并在浏览器中运行它来进行测试。看看用 20 到 40 之间的均匀随机数替换 30 的角度如何改变树。继续点击运行来查看不同的树。

void setup()
{
size(1000,1000);
smooth();
stroke(0);
frameRate(30);
}

void go(int order, int x1, int y1, float angle, int adder, int length)
{
int x2, y2, x3, y3;
double newAngle = angle * PI / 180;

if (order == 1)
{
return;
}
else
{
x2 = (x1 - round(cos(newAngle) * length));

y2 = (y1 - round(sin(newAngle) * length));

line(x1, y1, x2, y2);

go(order-1, x2, y2, angle+random(20,40), adder+2, 0.618034 * length);
go(order-1, x2, y2, angle-random(20,40), adder+2, 0.618034 * length);
}
}

void draw()
{
stroke(255, 0, 0);
strokeWeight(1);

go(10, 500, 999, 90, 20, 100);
exit();
}

这是由上述代码生成的一个有趣的、稍微不平衡的树:

Off balance tree

关于java - 如何制作金色分形树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com