ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

Java Source Code in Recursion: Recursive Koch SnowFlake

Updated on November 1, 2013

Get A Website Plus a Free Domain Name in Just 1 Hour!

Bring the new technology in your hands! Share your skills, improve and impress. Get Your Own Website and a Free Domain Name Here!

Below is the free java source code of a recursive Koch Snow Flakes. Have fun with it by trying it in your java compiler and also I suggest that you study its algorithm and make other java applet applications using it as a reference. This recursive koch snow flakes program use the recursive Serpienski Gasket as its main reference as well as used the formula below in forming its source code.

Java Source Code: Recursive Koch Snow Flakes Formula:

Given the 2 Points (X1, Y1) and (X5, Y5)

------Let------

deltaX = X5 - X1,

deltaY = Y5 - Y1

X2 = x1 + deltaX / 3,

Y2 = Y1 + deltaY / 3

X3 = 0.5 * (X1 + X5) + squareRootOf(3) * (Y1 - Y5) / 6,

Y3 = 0.5 * (Y1 + Y5) + squareRootOf(3) * (X5 - X1) / 6

X4= X1 + 2 * deltaX / 3,

Y4 = Y1 + 2 * deltaY / 3

Java Source Code For Recursive Koch Snow Flakes:

//java source code for a recursive koch snow flakes

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

Here are the Snapshots for the Sample Output of this Program.

Enter the depth of recursion: 0

Recursive Koch Snowflake's Snapshot 1
Recursive Koch Snowflake's Snapshot 1

Enter the depth of recursion: 1

Recursive Koch Snow Flake's Snapshot 2
Recursive Koch Snow Flake's Snapshot 2

Enter the depth of recursion: 3

Recursive Koch Snow Flake's Snapshot 3
Recursive Koch Snow Flake's Snapshot 3

Enter the depth of recursion: 5

Koch Snow Flake's Snapshot 4
Koch Snow Flake's Snapshot 4

Do you find it amazing?

See results

Comments

    0 of 8192 characters used
    Post Comment

    • nicomp profile image

      nicomp really 5 years ago from Ohio, USA

      Yay, now I know 3 applications for recursion: Towers of Hanoi, calculating factorials, and Koch snowflakes. Very cool. I will use this tomorrow evening in my Java class.

    • aisha91 profile image
      Author

      Rasna Aisha 5 years ago from Manila, Philippines

      hello nicomp,

      I hope you enjoyed it...Thank you for stopping by :)

    • profile image

      Ɓukasz 20 months ago

      I'm fresh in programing and i spent couple of hours to figure out how can i make a "snowflake" without using rotate methods....

      After my first fail i spent another couple fo hours to try to understand your program but i fail again.

      Did you reduce every line and "rotate" in special sequence ?

      Greetings ;D

    Click to Rate This Article