Vollständige Version anzeigen : Processing Bild erstellen


Striker
11.11.2014, 13:17

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:

;img5;fotos-hochladen~net/thumbnail/linienfyt6s7e45c_thumb;jpg (;;;fotos-hochladen~net/view/linienfyt6s7e45c;jpg)

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

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
terraNova
11.11.2014, 15:47

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


Striker
11.11.2014, 16:01

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

;img5;fotos-hochladen~net/thumbnail/linien2pveo9aj4fc_thumb;jpg (;;;fotos-hochladen~net/view/linien2pveo9aj4fc;jpg)

(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.


terraNova
11.11.2014, 16:17

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

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:


for(int i=0, j=4; i<5; i++, j--)


Striker
11.11.2014, 19:39

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

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:


for(int i=0, j=4; i<5; i++, j--)


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.;?


terraNova
11.11.2014, 21:06

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.

und das erste Beispiel müsste dann i und j nicht gleich sein, also i + j = 0,1,2,3,4.;?

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.


Striker
14.11.2014, 16:28

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;



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


Ähnliche Themen zu Processing Bild erstellen
  • Bild erstellen
    Hey Leute, ich wollte fragen, ob mir jemand das Startbild von dieser Seite (;cowland~de/) als ein einziges Bild erstellen kann. Das sind 4 Bilder oder so, nebeneinander gemacht, aber kann mir das jemand als ein Bild machen? 10er wäre sicher, ist selbstverständlich! mfg €dit Bitte in 1024*768 [...]

  • [Java] Processing Problem/Frage - Video Expoortierung.
    hallo, ich habe ein kleines problem bei processing. ich hab ein visual für musik programmiert und will das ganze jetz als video aufnehmen ( am besten mit sound ) und exportieren. ich hab schon diese Moviemaker library eingefügt mit addFrame() und finish(). wenn ich dann das programm sta [...]

  • [Java] are only accepted if annotation processing is explicitly requested
    Hallo, wollte mir den Java-Editor, den wir in der Schule benutzen, daheim installieren, um auch hier arbeiten zu können. Compiler habe ich vom JDK und jetzt eröffnet sich mir ein Problem: Wir arbeiten in der Schule mit Turtle (zum Zeichnen) und wenn ich die Datei, die in der Schule funktioni [...]

  • Parallel Processing/Echtzeitprogramierung?
    Hallo ich würde gern wissen ob es sowas wie ein tut gibt um Prozesse "Parallel" laufen zu lassen oder ob mir jemand dabei helfen kann aus einer Schleife einen Tastendruck zu erkennen. Problem: Eine Fkt. die ein Canvas immer aktualisiert um einen Ball auf einem Bild zu bewegen. Gleichzeitig sollte [...]



raid-rush.ws | Imprint & Contact pr