Hilbert und Peano Kurve, ich brauche Hilfe

Dicker2503

Mitglied
Hallo Leute,

ich habe in meinem Javapraktikum die Aufgabe mit MVC die Peano und die Hilbertkurve zu zeichen.
Die beiden Kurven sollen per Rekursion berechnet werden.

Die Hilbertkurve habe ich schon hinbekommen:


Java:
/*	
			orient = Drehrichtuung +1 oder -1
			angle = 0,90,180.....Grad
			level = Rekursionstiefe
			*/		
			public int Hilbert( int orient, int angle, int level){
				if ( level-- == 0) return angel;
				angel += orient *90;
				angle = Hilbert ( -orient, angle, level);
				step(angle);
				angle -= orient *90;
				angle = Hilbert (orient, angle, level);
				step(angle);
				angle = Hilbert(orient, angle, level);
				angle -= orient *90;
				step(angle);
				angle = Hilbert(orient, angle, level);
				angle -= orient *90;
				
				return angel;
			}
[code=Java]

Die "step" Methode ist zum Zeichnen da, um die kümmere ich mich aber später =) 


bei der Peano Kurve fehlt mir irgendwie schon der Ansatz. Könnt ihr mir vielleicht helfen?
[url=http://de.wikipedia.org/wiki/Peano-Kurve]Peano-Kurve ? Wikipedia[/url]
 
Zuletzt bearbeitet:

stg

Top Contributor
Zunächst einmal gibt es nicht DIE Peano-Kurve, sondern hierbei handelt es sich um eine ganze Klasse von Kurven, die gemein haben, dass sie, sofern "unendlich tief" gezeichnet, die gesamte Fläche füllen. Mit füllen ist dabei gemeint, dass es für jeden Punkt der Fläche eine Iteriertenfolge angegeben werden kann, die gegen diesen Punkt konvergiert.

Du willst nun eine bestimmte davon zeichnen. Dabei ersetzt du jedes Teilstück der Kurve rekursiv durch einen (oder mehrere ggfls auch leicht abgewandelte) rekusrive Aufrufe der selben "zecihne"-Methode. Soweit so gut. Wobei ist da nun genau deine Schwierigkeit? Das Grundprinzip ist doch immer das gleiche..
 

Dicker2503

Mitglied
Also ich meine die Peano Kurve die man im ersten Abschnitt bei Wikipedia sieht, ich habe da so meine Probleme mit der Rekursion, ich finde es schwer sich da rein zu denken, deshalb komme ich nicht voran,
im Grunde fängt es ja wieder mit

Java:
    if (n == 0)
    {
      return;
[code=Java]

an oder?
 

Dicker2503

Mitglied
Das ist nun meine Rekursion, bei der Tiefe 1 funktioniert sie aber ab der Tiefe 2 ist ein Fehler drin.
Hat jemand eine Idee?

Java:
	/*	
	orient = Drehrichtuung +1 oder -1
	angle = 0,90,180.....Grad
	level = Rekursionstiefe Beispiel = 1 
	n  = level , s = orient , w = angle
	*/
		public static int peano( int orient , int angle, int level){
			if ( level == 0){
			return angle;
			}
			angle = peano (-orient, -angle, level-1); 
			step(angle);
			step(angle); 
			angle -= orient *90; 
			angle = peano (orient, angle, level-1); 
			step(angle); // angle = 90
			angle -= orient *90;
			angle = peano(orient, angle, level-1); 
			step(angle);
			step(angle);
			System.out.println("Test");
			angle = peano(orient, angle, level-1);
			angle += orient *90;
			step(angle);
			angle = peano(orient, angle, level-1);
			angle += orient *90;
			step(angle);
			step(angle);
			angle = peano(orient, -angle, level-1);
			angle -= orient *0;
			return angle;
	}
[Java]
 

Ähnliche Java Themen

Neue Themen


Oben