我需要创建一个程序来绘制n阶的Sierpinski三角形。为此,我有几种方法。高度,filledTriangle和sierpinski。我在左下角递归打印三角形方面取得了一些进展,但是现在我试图在右边创建三角形,但向上的效果不佳。我认为我的问题出在filledTriangle方法上,因为我不确定如何容纳所有具有不同顶点的三角形。
UrlFetchApp.fetch
3阶的Sierpinski三角形应如下所示:https://imgur.com/a/SOk8PBr 我的输出是这样的:https://imgur.com/a/i70uwgV
答案 0 :(得分:0)
看看这个方法:
public static void sierpinski(int n, double x, double y, double length)
{
filledTriangle(x, y, length);
if (n == 1) {
System.out.println("Done!");
} else {
filledTriangle(x, height(length)/2, length/2);
x = x/2;
length = length/2;
filledTriangle(x, y, length);
filledTriangle(3*x, y, length);
n--;
sierpinski(n, x, y, length);
}
}
您将减小的n
和减半的length
传递给sierpinski
,但是您没有更改x
和y
。这不是一个好方法。传递“当前”三角形的坐标会更好,并且您会知道每次绘制的三角形数量是原来的3倍。您每次都需要调用sierpinski
3次(除非必须结束该过程),绘制了一个sierpinski
三角形。您只有一个sierpinski调用,这说明了为什么三角形的数量在每个深度上都不会增加三倍。您应该知道三角形点的事物坐标,并且知道每边的一半将是下一个深度中的点。