logo CoderDojo

Processing - Spiekbriefje

Spiekbriefje met veelgebruikte Processing-instructies.

Het spiekbriefje is ook als Processing_spiekbriefje.pdf te downloaden.

Als je eerst nog wat meer uitleg wil over kunst maken met Processing, kun je deze uitleg downloaden: Processing3-Coderdojo-Nm.pdf.

Basis van een Processing-script

void setup() {  // één keer doen
}
void draw() {   // steeds opnieuw
}

Vormen

Rechthoek

rechthoek

rect(20, 20, 40, 40);
rechthoek

Ellips

ellips

ellipse(0, 0, 80, 40);  
ronde vorm van 80 pixels breed en 40 hoog

Lijn

lijn

line(20, 20, 80, 50);
rechte lijn met beginpunt 20,20 en eindpunt 80,50

Vierhoek

vierhoek

quad(152, 124, 344, 80, 276, 252, 120, 304);
vierhoek

Andere vormen

Kleur

Voorbeelden:

Grootte van het Processing-scherm

Het midden van het scherm vind je door width en height door tweeën te delen:

Muis en toetsenbord

Deze woorden kun je gebruiken in een if-statement of als functie:

Variabelen

In verschillende variabelen kun je verschillende soorten informatie bewaren:

Vragen stellen

// zijn het er meer dan 10?
if (aantal > 10) {
    // zo ja, doe dan hier iets
}

Iets meerdere keren doen

Steeds anders

Het canvas verschuiven of draaien

float r;        // variabele

void setup() {
    rectMode(CENTER);
}

void draw() {
    background(51);
    translate(width/2, height/2);
    rotate(r);  // draaiing
    rect(0, 0, 60, 60);

    // klein beetje verder draaien
    r += 0.02;
}

Nummers passend maken met map()

Waarde (bijvoorbeeld de muispositie) ‘vertalen’ naar een ander bereik:
float h = map(mouseX, 0, width, 40, 300);

Afstand tot een bepaald punt met dist()

void draw() {
    float d = dist(50, 50, mouseX, mouseY);
    float gray = map(d, 0, 100, 0, 255);
    fill(gray);
    rect(0, 0, width, height);
}

Tekst invoegen

tekst komt hier

textSize(20);
text("tekst komt", 6, 20);
textSize(50);
text("hier", 6, 70);

Plaatjes inladen

PImage foto;    // variabele

void setup() {
    size(400, 400);
    // laad een plaatje in die in
    // dezelfde map staat als dit script
    foto = loadImage("foto.jpg");
}

void draw() {
    // laat het plaatje zien
    image(foto, 0, 0);
}

Golfbewegingen met sinus

Gebruik sin() en cos() om golvende veranderingen te krijgen:

float hoek = 0; // variabele void draw( ) {
background(0);
// sinus gebruiken als grootte circle(50, 50, sin(hoek)*100);
// hoek een klein beetje veranderen hoek += 0.02;
}

Meer informatie en inspiratie

Dit zijn nog lang niet alle functies in Processing! Op https://processing.org/reference vind je alle functies mét uitleg.

Mooie voorbeelden van wat er allemaal kan met Processing zie je op

Probeer het!

  1. Maak een vierkant dat steeds opnieuw getekend wordt op de plek van je muis. Teken steeds een nieuwe achtergrond in draw() met een kleur die verandert met de muispositie.

  2. Teken een puntje op de plek waar de muis is. Zet geen background() in draw(). Probeer het ook met andere vormen en kleuren, ook met half-doorzichtige. Kun je een tweede vorm maken die in omgekeerde richting beweegt?

  3. Teken een vorm die van heel klein steeds een beetje groter wordt (met een variabele, niet op basis van de muis). Laat hem opnieuw klein beginnen als je op de muis klikt óf als hij groter wordt dan de breedte van het scherm. Gebruik dezelfde variabele ook om de positie en kleur te veranderen.

  4. Teken een stuk of 10 vierkantjes onder elkaar. Laat ze horizontaal mee-veranderen met de muispositie, maar zorg dat elk vierkantje dat nèt iets anders doet. (Tip: je kunt getallen bij mouseX optellen, maar mouseX ook vermenigvuldigen en delen! Vermenigvulden doe je met * en delen met /.)

  5. Maak confetti! Teken steeds een nieuwe kleine cirkel op steeds een andere plek met steeds een andere kleur. (Tip: gebruik random() voor de x- en y-positie én voor de kleuren. Probeer ook een donkere achtergrond!)

  6. Teken een bijna helemaal doorzichtig rondje met dikke rand op een lichte achtergrond. Teken die achtergrond niet in draw().

  7. Maak een bloem met overlappende cirkels!

  8. Schrijf een woord steeds ergens anders op het scherm, met steeds een andere kleur.

  9. Schrijf smileys met tekst (:-)) met een gele cirkel eromheen, steeds op een andere plek. (Probeer het eerst op de simpelste manier. Als je daarna ook nog translate() en rotate() gebruikt, dan kun je de smileys ook nog om hun as laten draaien!)

  10. Teken een vorm die steeds van plek verandert. Als hij bij de randen aankomt, laat hem dan van kleur veranderen en een andere kant op gaan. (Hier heb je variabelen bij nodig om de x- en y-positie van je vorm op te slaan, en een paar if-statements.)

  11. Teken twee vormen naast elkaar. De grootte van de ene is afhankelijk van de muispositie, die van de andere van de muispositie min ongeveer de helft van de breedte van het scherm.

  12. Teken een cirkel die van kleur verandert als je dichterbij komt.
(Tip: dit is het makkelijkst met dist().)

  13. Teken 8 cirkels die in elkaar zitten. (Tip: gebruik een while-loop of for-loop.)

  14. Maak een spiraal! Gebruik translate() en rotate() om vormen niet alleen verder weg te laten bewegen, maar ook steeds verder van een middelpunt af te tekenen.

  15. Teken een bijna helemaal doorzichtige lijn helemaal van bovenaan het scherm naar onderaan. Gebruik je muis als horizontale positie. Teken geen achtergrond in draw().

  16. Verplaats het beginpunt van je canvas naar ergens met translate(), laat het canvas steeds een klein beetje ronddraaien met rotate() en teken een of meer rechthoeken.

  17. Teken heel veel kleine rondjes naast elkaar en verander elke keer de kleur een klein beetje. Probeer ze in een cirkel te laten tekenen met rotate()!

  18. Teken meerdere vormen waarvan je de positie (of draaiing) met een sinus-functie bepaalt.

  19. Maak een soort zon door driehoeken en lijnen rond een middelpunt te tekenen. (Tip: gebruik translate() en rotate().)

Verder variëren met

Probeer ook tekst, image, video, webcam en sound! Zie de voorbeeld-scripts in Processing onder het menu Bestand > Voorbeelden.

Licentie

Deze instructies worden, net als alle andere instructies van CoderDojo Nijmegen, aangeboden onder een Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Licentie.

Creative Commons License