您好,我对编程相当陌生,我正在尝试在 Java 中创建一个函数,该函数从角之间的较大三角形中点创建递归三角形,其中新三角形点偏离 y 值中的正常位置。请参阅下面的图片以进行可视化。
第一张图显示了没有任何偏差的递归算法的进程(顺序 0,1,2),第二张图显示了(顺序 0,1)。
我已经设法生成了一段工作代码,它为前几个订单创建了我想要的东西,但是当我们达到订单 2 及以上时,我遇到了较小的三角形不使用相同中点的问题,因此看起来像下图。
所以我需要一种方法来存储和调用每个三角形的正确中点。我一直在考虑实现一个新的类来控制中点的计算并存储它们等等,但正如我所说我需要帮助。
以下是我当前的代码
点类存储一个点的 ax 和 y 值
lineBetween 在选定点之间创建一条线
void fractalLine(TurtleGraphics turtle, int order, Point ett, Point tva, Point tre, int dev) {
if(order == 0){
lineBetween(ett,tva,turtle);
lineBetween(tva,tre,turtle);
lineBetween(tre,ett,turtle);
} else {
double deltaX = tva.getX() - ett.getX();
double deltaY = tva.getY() - ett.getY();
double deltaXtre = tre.getX() - ett.getX();
double deltaYtre = tre.getY() - ett.getY();
double deltaXtva = tva.getX() - tre.getX();
double deltaYtva = tva.getY() - tre.getY();
Point one;
Point two;
Point three;
double xt = ((deltaX/2))+ett.getX();
double yt = ((deltaY/2))+ett.getY() +RandomUtilities.randFunc(dev);
one = new Point(xt,yt);
xt = (deltaXtre/2)+ett.getX();
yt = (deltaYtre/2)+ett.getY() +RandomUtilities.randFunc(dev);
two = new Point(xt,yt);
xt = ((deltaXtva/2))+tre.getX();
yt = ((deltaYtva/2))+tre.getY() +RandomUtilities.randFunc(dev);
three = new Point(xt,yt);
fractalLine(turtle,order-1,one,tva,three,dev/2);
fractalLine(turtle,order-1,ett,one,two,dev/2);
fractalLine(turtle,order-1,two,three,tre,dev/2);
fractalLine(turtle,order-1,one,two,three,dev/2);
}
}
提前致谢
胜利者