Fulgul Koch

Fulgul de zăpadă al lui Koch se obține pornind de la un triunghi echilateral și se înlocuiește treimea din mijloc de pe fiecare latură cu două segmente astfel încât să se formeze un nou triunghi echilateral exterior. Apoi se execută aceiași pași pe fiecare segment de linie a formei rezultate, la infinit. La fiecare iterație, perimetrul acestei figuri crește cu patru treimi. Fulgul Koch este rezultatul unui număr infinit de execuții ale acestor pași, și are lungime infinită, în timp ce aria sa rămâne finită. De aceea Fulgul Koch și construcțiile similare sunt numite uneori “curbe monstru“.

Java-Logo
Cod Sursa JAVA


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 + * deltaX /3;
                y4 = y1 + * 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);
            }
        }
}

 

Rezultat:

koch rezultat

One Comment Add yours

Leave a comment