Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javafx.application.Application;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.canvas.Canvas;
- import javafx.scene.canvas.GraphicsContext;
- import javafx.stage.Stage;
- public class Aufgabe83a extends Application {
- double angle = 90;
- double oldX = 0;
- double oldY = 300;
- double x = 0;
- double y = 300;
- GraphicsContext gc;
- public static void main(String[] args) {
- launch(args);
- }
- public void start(Stage primaryStage) {
- primaryStage.setTitle("Schildkroeten und Fraktale <3");
- Group root = new Group();
- Canvas canvas = new Canvas(600, 600);
- gc = canvas.getGraphicsContext2D();
- root.getChildren().add(canvas);
- primaryStage.setScene(new Scene(root));
- primaryStage.show();
- //Methodenaufruf
- koch(600,5);
- }
- public void koch(int deep, double len)
- {
- if(deep == 0) //wenn die Streckenlänge == 0, dann rufe die Methode forward auf
- {
- forward(len);
- }
- else //ansonsten füre die Befehle vom Übungsblatt aus
- {
- koch(deep - 1, len / 3); //Methode ruft sich selber auf, erniedrigt deep um eins und teilt die Streckenlänge immer in drei Teile
- turn(-60); //dreht die Strecke um 60° _/
- koch(deep - 1, len / 3); //zeichnet wieder Strecke
- turn(120); //dreht die Strecke um 120°, damit sich eine Spitze bildet _/\
- koch(deep - 1, len / 3);
- turn(-60);
- koch(deep - 1, len / 3);
- }
- }
- public void turn( double degree ){ //Vorgegebene Methode
- if ( (angle += degree) > 360 )
- angle %= 360;
- }
- public void forward( double step ){ //Vorgegebene Methode
- oldX = x;
- oldY = y;
- x += step * Math.sin( Math.toRadians( angle ) );
- y -= step * Math.cos( Math.toRadians( angle ) );
- gc.strokeLine( (int) x, (int) y, (int) oldX, (int) oldY );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement