Spirale

Neondream

Aktives Mitglied
so muss in meiner aufgabe eine Spirale ausgeben lassen

meine erste idee war diese hier:

Java:
	StdDraw.line(0.5, 0.5, 0.55, 0.5);   
		StdDraw.line(0.55, 0.5, 0.55, 0.55);  
		StdDraw.line(0.55, 0.55, 0.45, 0.55);
		StdDraw.line(0.45, 0.55, 0.45, 0.45);
		StdDraw.line(0.45, 0.45, 0.6, 0.45);
		StdDraw.line(0.6, 0.45, 0.6, 0.6);
		StdDraw.line(0.6, 0.6, 0.4, 0.6);
		StdDraw.line(0.4, 0.6, 0.4, 0.4);
		StdDraw.line(0.4, 0.4, 0.65, 0.4);
		StdDraw.line(0.65, 0.4, 0.65, 0.65);
usw.....

wollte diese idee dann weiter führen um sie zu verallgemeinern.... aber irgendwie klappt dann gar nix mehr und das system streikt :shock:

Java:
                        x1,x2,y1,y2 = 0.5

                        x2+=0.5;
			StdDraw.line(x1, y1, x2, y2);   
			x1=x2;
			y2+=0.5;
			StdDraw.line(x1, y1, x2, y2);  
			y1=y2;
			x2-=0.5;
			StdDraw.line(x1, y1, x2, y2);  
			y2-=0.5;
			StdDraw.line(x1, y1, x2, y2);  
			y2=y1;
			x2+=0.1;
			StdDraw.line(x1, y1, x2, y2);   
			x1=x2;
			y2+=0.1;
			StdDraw.line(x1, y1, x2, y2);  
			y1=y2;
			x2-=0.1;
			StdDraw.line(x1, y1, x2, y2);  
			y2-=0.1;
			StdDraw.line(x1, y1, x2, y2);  
			y2=y1;
			x2+=1.5;
			StdDraw.line(x1, y1, x2, y2);   
			x1=x2;
			y2+=1.5;
			StdDraw.line(x1, y1, x2, y2);  
			y1=y2;
			x2-=1.5;
			StdDraw.line(x1, y1, x2, y2);  
			y2-=1.5;
			StdDraw.line(x1, y1, x2, y2);  
			y2=y1;
usw....

so 1st weiß irgendjmnd. wieso er mir in der 2 variante nichts ausspuckt ist ja das selbe prinzip wie bei variante 2

2nd versuche ich erfolgslos eine for schleife zu basteln was ich nicht hinbekomme da ja abwechselnd die werte + und - genommen werden müssen und dann wieder angeglichen....

wäre echt super wenn mir da jmnd helfen könnte
die lösung ist ebstimmt super einfach aber ich kriege es iwie gerade absolut nicht auf die reihe :oops:

nicegreetz & thx
neon
 
Zuletzt bearbeitet:

Lirave

Aktives Mitglied
müsste da nicht immer +0.05 addiert werden anstatt 0.5 ?

muss es so eine "Spirale" werden ?
kfbwhr9d.png


oder eine runde ?


wenn ja kann das hier klappen (ungetestet)

Java:
		 int n = 100; //schritte
		 double xa,ya = 0;	//startpunkt der Spirale
		 double a = 0.05; 	// schrittweite der Spirale
		 int i,j = 1;
		 for (int z=0;z<n;z++){
			 if ( z % 2 == 0){
				 StdDraw.line(xa, ya, xa, ya+i*a*Math.pow(-1, i+1));
				 ya += +i*a*Math.pow(-1, i+1); 	// aktuellen Punkt aktualisieren
				 i++;
				  
			 }else{
				 StdDraw.line(xa, ya, xa+j*a*Math.pow(-1, j+1), ya);
				 xa += +j*a*Math.pow(-1, j+1); 	// aktuellen Punkt aktualisieren
				 j++;
			 }
		 }
 
Zuletzt bearbeitet:

akaimpc

Neues Mitglied
Ich bin mir ziemlich sicher, dass es sich um eine "quadratische Spirale", wie gezeichnet, handelt, sitze gerade auch noch an der Aufgabe, Inspirationen wären nicht schlecht :)
 

LoR

Bekanntes Mitglied
Wie würdest du denn einen Kreis zeichnen (ohne Graphics#drawCircle)? Wenn du das gelöst und verstanden hast, dann wirst du sehen das die Spirale kein Problem mehr darstellt ;).

//Edit
Mein Post war zu langsam. Quadratisch ist ein wenig anders.

//Edit 2
In diesem Fall würde die Frage lauten, wie du ein Quadrat zeichnen würdest?
 
Zuletzt bearbeitet:

Neondream

Aktives Mitglied
@ Lirave

super idee :applaus:

hab das ganze kurz überarbeitet jetzt kommt die gesuchte spirale bei raus:

Java:
public class test 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

        int n = Integer.parseInt(args[0]); //schritte
        double xa = 0.5;
        double ya = 0.5;//startpunkt der Spirale
        double a = 0.005;   // schrittweite der Spirale
        int i = 1;
        int j = 0;
        for (int z=0;z<n;z++){
            if ( z % 2 == 0){
                StdDraw.line(xa, ya, xa, ya+i*a*Math.pow(-1, i+1));
                ya += +i*a*Math.pow(-1, i+1);  // aktuellen Punkt aktualisieren
                i++;
                 
            }else{
                StdDraw.line(xa, ya, xa+j*a*Math.pow(-1, j+1), ya);
                xa += +j*a*Math.pow(-1, j+1);  // aktuellen Punkt aktualisieren
                j++;
            }
        }

	}
}
(args[500])

Danke :toll:
 

Lirave

Aktives Mitglied
np, aber wenn du j = 0 setzt, dann gibt es am Anfang (also in der Mitte) einen Fehler, besser wäre es wenn du willst, dass sich die Schleife in eine andere Richtung dreht, an der Potenz zu drehen.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben