Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.09 KB | None | 0 0
  1.  
  2. import javafx.application.Application;
  3. import javafx.scene.Group;
  4. import javafx.scene.Scene;
  5. import javafx.scene.canvas.Canvas;
  6. import javafx.scene.canvas.GraphicsContext;
  7. import javafx.stage.Stage;
  8.  
  9. public class Aufgabe83a extends Application {
  10.  
  11.     double angle = 90;
  12.     double oldX = 0;
  13.     double oldY = 300;
  14.     double x = 0;
  15.     double y = 300;
  16.    
  17.     GraphicsContext gc;
  18.    
  19.     public static void main(String[] args) {
  20.        
  21.        
  22.         launch(args);
  23.        
  24.        
  25.     }
  26.    
  27.      public void start(Stage primaryStage) {
  28.          
  29.             primaryStage.setTitle("Schildkroeten und Fraktale <3");
  30.             Group root = new Group();
  31.             Canvas canvas = new Canvas(600, 600);
  32.             gc = canvas.getGraphicsContext2D();
  33.             root.getChildren().add(canvas);
  34.             primaryStage.setScene(new Scene(root));
  35.             primaryStage.show();
  36.  
  37.             //Methodenaufruf
  38.            
  39.             koch(600,5);
  40.  
  41.            
  42.         }
  43.      
  44.      
  45.       public void koch(int deep, double len)
  46.       {
  47.           if(deep == 0)                         //wenn die Streckenlänge == 0, dann rufe die Methode forward auf
  48.           {
  49.               forward(len);
  50.           }
  51.          
  52.           else                                  //ansonsten füre die Befehle vom Übungsblatt aus
  53.           {
  54.               koch(deep - 1, len / 3);          //Methode ruft sich selber auf, erniedrigt deep um eins und teilt die Streckenlänge immer in drei Teile
  55.               turn(-60);                        //dreht die Strecke um 60° _/
  56.               koch(deep - 1, len / 3);          //zeichnet wieder Strecke
  57.               turn(120);                        //dreht die Strecke um 120°, damit sich eine Spitze bildet _/\
  58.               koch(deep - 1, len / 3);         
  59.               turn(-60);                       
  60.               koch(deep - 1, len / 3);
  61.              
  62.           }
  63.          
  64.          
  65.          
  66.       }
  67.    
  68.      public  void turn( double degree ){            //Vorgegebene Methode
  69.             if ( (angle += degree) > 360 )
  70.                 angle %= 360;
  71.         }
  72.      
  73.       public  void forward( double step ){          //Vorgegebene Methode
  74.             oldX = x;
  75.             oldY = y;
  76.  
  77.             x += step * Math.sin( Math.toRadians( angle ) );
  78.             y -= step * Math.cos( Math.toRadians( angle ) );
  79.  
  80.             gc.strokeLine( (int) x, (int) y, (int) oldX, (int) oldY );
  81.         }
  82.      
  83.      
  84.  
  85.    
  86.        
  87.    
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement