Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(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);

            }

        }

}