我不能让这个koch雪花画递归递送。
递归方法
public void koch(int n, double size) {
if (n == 0) {
t.forward(size);
} else {
koch(n - 1, size / 3); // line 1
stdTort.rotate(60); // line 2
koch(n - 1, size/3); // line 3
stdTort.rotate(120); // line 4
koch(n - 1, size/3); // line 5
stdTort.rotate(60); // line 6
koch(n - 1, size/3); // line 7
}
}
任何帮助都将不胜感激。
答案 0 :(得分:1)
你所有的角度都是错误的,因为它们顺时针旋转,你希望它们逆时针旋转。为了获得图2中所示的角度,你实际上需要旋转120而不是60.然后要获得你想要旋转的最后一行-60,而不是60.
koch(n - 1, size / 3); // line 1
t.rotate(120); // line 2
koch(n - 1, size/3); // line 3
t.rotate(120); // line 4
koch(n - 1, size/3); // line 5
t.rotate(-60); // line 6
koch(n - 1, size/3); // line 7
考虑到这一点,我认为你感到困惑的原因是因为旋转似乎并不直观。如果你的乌龟向前走去做第一行,那么你会期望从那个方向顺时针或逆时针旋转。但似乎你的轮换都是从相反的方向开始的。
预期:
/
-60 = --
+60 = --
\
实际值:
-60 = --
/
\
+60 = --
答案 1 :(得分:0)
如果逆时针旋转它,则需要t.rotate(-120);