(Koch snowflake fractal) The text presented the Sierpinski triangle fractal. In
ID: 3569478 • Letter: #
Question
(Koch snowflake fractal) The text presented the Sierpinski triangle fractal. In
this exercise, you will write an applet to display another fractal, called the Koch
snowflake, named after a famous Swedish mathematician. A Koch snowflake is
created as follows:
1. Begin with an equilateral triangle, which is considered to be the Koch fractal
of order (or level) 0, as shown in Figure 20.14a.
2. Divide each line in the shape into three equal line segments and draw an outward
equilateral triangle with the middle line segment as the base to create a
Koch fractal of order 1, as shown in Figure 20.14b.
3. Repeat Step 2 to create a Koch fractal of order 2, 3, . . . , and so on, as shown
in Figure 20.14c
Explanation / Answer
import java.awt.*;
import javax.swing.*;
public class recursiveKochSnowFlakes extends JApplet{
int level = 0;
public void init(){
String levelStr = JOptionPane.showInputDialog("Enter the depth of recursion");
level = Integer.parseInt(levelStr);
}
public void paint(Graphics g){
drawSnow(g,level,20,280,280,280);
drawSnow(g,level,280,280,150,20);
drawSnow(g,level,150,20,20,280);
}
private void drawSnow (Graphics g, int lev, int x1, int y1, int x5, int y5){
int deltaX, deltaY, x2, y2, x3, y3, x4, y4;
if (lev == 0){
g.drawLine(x1, y1, x5, y5);
}
else{
deltaX = x5 - x1;
deltaY = y5 - y1;
x2 = x1 + deltaX / 3;
y2 = y1 + deltaY / 3;
x3 = (int) (0.5 * (x1+x5) + Math.sqrt(3) * (y1-y5)/6);
y3 = (int) (0.5 * (y1+y5) + Math.sqrt(3) * (x5-x1)/6);
x4 = x1 + 2 * deltaX /3;
y4 = y1 + 2 * deltaY /3;
drawSnow (g,lev-1, x1, y1, x2, y2);
drawSnow (g,lev-1, x2, y2, x3, y3);
drawSnow (g,lev-1, x3, y3, x4, y4);
drawSnow (g,lev-1, x4, y4, x5, y5);
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.