2013-10-27 1 views
0

다음 코드를 가지고 있습니다. 볼 수 있듯이 pencil.forward();을 할 때마다 같은 값을 3으로 나눕니다. 코드 :사이드 길이는 동일하지만 시각적으로 동일하지 않습니다.

import gpdraw.*; 

public class buildShape { 
public SketchPad paper = new SketchPad(500,500); 
public DrawingTool pencil = new DrawingTool(paper); 

public void drawKochCurve(int level, double initialSize){ 
    if (level < 1){ 
     pencil.forward(initialSize); 
    } else { 
     drawKochCurve(level - 1, initialSize); 
     pencil.forward(initialSize/3); 
     pencil.turnLeft(60); 
     pencil.forward(initialSize/3); 
     pencil.turnRight(120); 
     pencil.forward(initialSize/3); 
     pencil.turnLeft(60); 
     pencil.forward(initialSize/3); 
    } 
    } 
} 

주요 :

public class Main { 
public static void main(String[] args){ 
    buildShape myKoch = new buildShape(); 
    myKoch.drawKochCurve(1,90); 
    } 
} 

enter image description here

+0

질문이 무엇인가에

변경 그것? – kjhughes

+0

@kjhughes 내가 디버그 할 때 사이드가 평등 해 보이지 않는 이유는 무엇입니까? –

답변

1

귀하의 재귀는 부적절하다. 재귀 적으로 각 세그먼트에 대해 그리기 곡선을 호출해야합니다. 그렇지 않으면 프랙탈 곡선이 생성되지 않습니다.

} else { 
    drawKochCurve(level - 1, initialSize/3); 
    // pencil.forward(initialSize/3); 
    pencil.turnLeft(60); 
    drawKochCurve(level - 1, initialSize/3); 
    // pencil.forward(initialSize/3); 
    pencil.turnRight(120); 
    drawKochCurve(level - 1, initialSize/3); 
    // pencil.forward(initialSize/3); 
    pencil.turnLeft(60); 
    drawKochCurve(level - 1, initialSize/3); 
    // pencil.forward(initialSize/3); 
} 
+0

와우, 이것은 시각적으로 동일하게 만듭니다! 왜 그래? 똑같은 것이 아닌가? –

+0

@ user2895567 : 동일한 것으로 보입니까? 이것은 Koch 눈송이 곡선을 만드는 기본 반복적 공식입니다. –

관련 문제