Processing Bild erstellen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Striker, 11. November 2014 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 11. November 2014
    Hi, ich möchte mit Processing eigentlich ein ganz einfaches Bild erstellen.
    Leider klappt das nicht so wie ich mir das vorstelle.

    Das Bild hier möchte ich gerne erstellen:

    [​IMG]

    In einem Koordinatensystem 100x100.

    Die Linien sollen oben links anfangen und nach unten rechts gehen und sich drehen.
    Dazu habe ich folgenden Code geschrieben, aber leider kommt da nicht das bei rum was ich mir wünsche :p

    Code:

    int i1;
    int i2;

    void setup(){
    size(1000,1000);
    background(#F5F5F5);

    int i1 = 20;
    int i2 = 90;
    }

    void draw(){
    background(#F5F5F5);


    for (int i1 = 20; i1 < 90; i1 = i1+2) {
    for(int i2 = 90; i2 > 20; i2 = i2-2)

    stroke(#F71111);

    line(i1,20,i2,90);


    }}


    Line () beinhaltet (x1,y1,x2,y2), mein y1 und y2 sollen konstant bleiben und mit der schleife sollen sich meine x-koordinaten ändern. Das klappt leider nicht.

    Ich weiß mit diesem Code wird es nicht genauso aussehen wie oben abgebildet da meine Y-Koordinate konstant ist, aber ihr wisst was ich meine. Wenn ihr euch das Bild anseht bzw. den Code seht ihr mein Problem, wenn ihr es nicht schon vorher seht :p

    Vielen Dank schon mal für eure Hilfe.

    Gruß

    Striker
     

  2. Anzeige
  3. #2 11. November 2014
    AW: Processing Bild erstellen

    Was heißt es klappt nicht? Wie genau sieht dein Ergebnis aus? Was für Argumente nimmt size() genau an? Ist 1000 korrekt für einen 100x100 Graphen? Deine Initialisierung von den x-Werten bzw. die globale Definition ist obsolet (Siehe for(...)).

    Nach deinen Angaben bezügl. des gewünschten Algorithmus' ist die Umsetzung insofern nicht korrekt, da deine äußere for-Schleife mit i1=20 solange den Wert behält bis i2=20 ist, d.h. einmal seine Bedigung erreicht hat. Nimm entweder eine 2. Variable mit in eine einzelne Schleife oder regel es mit einer einzigen Koordinate und leite die andere ab (z.b. i1=90 - (i2-20)).

    PS: Nutze bitte den CODE-Tag
     
  4. #3 11. November 2014
    AW: Processing Bild erstellen

    Danke schon mal für deine Antwort,mein Bild bis jetzt sieht so aus:

    [​IMG]

    (Was man beim Bild nicht so gut sieht, die Linien treffen unten alle auf den Punkt 0 der x-koordinaten und habe mal ein paar weniger Schritte eingebaut zur besseren Übersicht)

    aber ich habe doch 2 Schleifen und 2 Bedingungen, in der ersten sage ich das er bei 20 anfängt und solange kleiner als 90 ist +2 und bei der 2. schleife Anfang bei 90 und i2 kleiner wird solange es über 20 ist.

    Ich verstehe gerade nicht was daran falsch ist. Ich meine es ist ja falsch, aber ich finde es vollkommen logisch ^^.

    Ich habe mir das nochmal in der Referenz von Processing angeschaut wo die Schleife mit Punkten gemacht wird:

    for (int i = 30; i < 80; i = i+5) {
    for (int j = 0; j < 80; j = j+5) {
    point(i, j);
    }
    }

    ist ja das selbe Prinzip. Er setzt solange die Punkte bis er bei 80 auf der x und y koordinate ist. Deshalb verstehe ich es umso weniger wieso er mit meine Linien nicht zieht.
     
  5. #4 11. November 2014
    AW: Processing Bild erstellen

    Dort werden jedoch Punkte gezeichnet und keine Linien. Vielleicht hilft es dir eine Tabelle mit den generierten Koordinaten zu erstellen?

    Code:
    for(int i=0; i<5; i++)
     for(int j=0; j<5; j++)
    Wert i: 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
    Wert j: 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4

    Was Du jedoch erreichen möchtest sind Werte:

    Wert i: 4 3 2 1 0
    Wert j: 0 1 2 3 4

    Das heißt entweder, wie schon erwähnt, eine entsprechende Formel zu benutzen (Oben erwähnt) oder eine einzelne Schleife zu verwenden die beide Werte generiert:


    Code:
    for(int i=0, j=4; i<5; i++, j--)
     
  6. #5 11. November 2014
    AW: Processing Bild erstellen

    for (int i1 = 20; i1 < 90; i1 = i1+2) {
    for(int i2 = 90; i2 > 20; i2 = i2-2)


    aber hier steht es doch so wie du es in deiner letzten zeile erwähnt hast, 20 immer + 2 bis 90 und 90 - 2 bis 20,
    also dein erstes Beispiel nutze ich ja gar nicht.

    Schreib mir doch mal den Code bzw. die schleife auf wie du es meinst. Ich sehe einfach immer noch nicht den Fehler, ich will es genauso machen wie du es im zweiten beispiel hast: i= 0,1,2,3,4 j=4,3,2,1,0 und ich dachte das habe ich mit meiner Schleife.

    Bitte korrigiere mich, einfach Schleife umstellen :)

    und das erste Beispiel müsste dann i und j nicht gleich sein, also i + j = 0,1,2,3,4..?
     
  7. #6 11. November 2014
    AW: Processing Bild erstellen

    Ich sehe gerade, Du hast recht. Bei dir wirkt sich die 2. for-Schleife nur auf die Färbung des Pinsels aus. Dennoch wäre der Code, wenn Du anstelle dessen line() verwenden würdest, falsch - aus eben den schon genannten Gründen.

    Nein. Die erste Schleife läuft und ruft die zweite auf, die dann durchläuft. Das heißt konkret das i1=20 ist, i2=90 bis i2=20 läuft, i1 dann um 2 erweitert, und dann fängt das Spiel von vorne an.
     
  8. #7 14. November 2014
    AW: Processing Bild erstellen


    Ich danke dir, ich habs jetzt nochmal gemacht und auch verstanden was du gemeint hast. Ich stand einfach nur aufm Schlauch :D
     

  9. Videos zum Thema
Die Seite wird geladen...