Op Art

In dit project, ga je code schrijven om gereedschap te maken voor het verkennen van de kunstvorm genaamd Op Art.
Geen Afbeelding

Eerst wordt de muis gebruikt om rechthoeken te tekenen, dit is de tekenfase. Daarna wanneer de gebruiker op de spatiebalk drukt, eindigt de tekenfase en krijgt de muis de functie van een verf-emmer zoals in een tekenprogramma. Als nu met de muis ergens wordt geklikt krijgt het hele begrensde gebied om deze plek dezelfde kleur. Hieronder staan twee voorbeelden van deze 2 fases.

Voorbeeld van de tekenfase: Geen Afbeelding Geen Afbeelding

Voorbeeld van de vulfase: Geen Afbeelding Geen Afbeelding

  1. "H3-OpArt"Geen Afbeelding
  2. In de tekenfase, ga je veel rechthoeken tekenen door eerst te klikken en dan van de linkerbovenhoek naar de rechteronderhoek te slepen. Het is handig om hiervoor een Abstract Data-Type (ADT) te maken om de coördinaten van deze hoeken op te slaan.
    Het hoek-ADT zal werken net als het punt-ADT dat je gemaakt hebt in Hoofdstuk 2.
    Geen Afbeelding
    1. Maak een hoek-constructor, die een lijst rapporteert met de x- en y-coördinaten van een hoek.
      Geen Afbeelding
    2. Maak twee selectors, x van hoek and y van hoek die als invoer een hoek hebben en respectievelijk de x- of y-waardes geven van de ingevoerde hoek.
      Geen Afbeelding Geen Afbeelding
  3. Maak twee globale variabelen om tijdelijk de twee punten van de huidige rechthoek op te slaan:
    • huidige hoek 1: om de coördinaten op te slaan van waar de linker muisknop ingedrukt wordt
    • huidige hoek 2: om de coördinaten op te slaan van waar de linker muisknop weer losgelaten wordt
  4. Maak nu een rechthoek-ADT om de twee tegenovergestelde hoeken op te slaan van één rechthoek.
    Geen Afbeelding
    Geen Afbeelding Geen Afbeelding

Net als in het Animatie Studio-project van de vorige pagina, moet het tekenveld vaak leeg worden gemaakt en opnieuw getekend zodat de gebruiker kan zien hoe iedere nieuwe rechthoek van grootte verandert terwijl hij getekend wordt. Het programma heeft een manier nodig om alle rechthoeken die al getekend zijn op te slaan, zodat ze opnieuw getekend worden nadat het tekenveld leeg gemaakt is.

  1. Maak een globale variabele rechthoeklijst om alle rechthoeken die al getekend zijn op te slaan.
  2. Je programma heeft een manier nodig om te weten of de gebruiker klaar is met tekenen. Maak een globale variabele klaar met tekenen? die een Boolean waarde (waar of niet waar) opslaat om bij te houden in welke fase het programma zit (de tekenfase of vulfase).
  3. Het programma heeft ook een manier nodig om een rechthoek te tekenen, met als invoer de twee tegenovergestelde hoeken. Maak een teken rechthoek-blok en test of het correct werkt.
    Geen Afbeelding
  4. Gebruik de zeven blokken en vier variabelen die je gemaakt hebt om een programma te maken dat:
    • herhaaldelijk rechthoeken opslaat tot de gebruiker klaar is met tekenen, door middel van:
      • het opslaan van de coördinaten van de eerste hoek wanneer de gebruiker begint met het tekenen van een rechthoek
      • het opslaan van de coördinaten van de tweede hoek en het opnieuw tekenen van deze rechthoek samen met alle vorige rechthoeken tot de gebruiker stopt met het tekenen van rechthoeken
      • het opslaan van de uiteindelijke coördinaten vna iedere rechthoek, zodat de rechthoeken opnieuw getekend kunnen worden
    • het indrukken van een toets op het toetsenbord (bijvoorbeeld de spatiebalk) gebruikt om het programma te vertellen dat de vulfase begint en de gebieden waarin geklikt wordt met de muis te vullen
 
  1. Maak een versie van je Op Art-programma dat veelhoeken gebruikt.
    Geen Afbeelding Geen Afbeelding Geen Afbeelding
  2. Maak een versie van je Op Art-programma dat cirkels gebruikt.
    Geen Afbeelding Geen Afbeelding Geen Afbeelding
  3. Bestudeer het werk van beroemde Op Art-kunstenaars zoals Victor Vasarely en Bridget Riley om een gevoel te krijgen voor wat er allemaal mogelijk is met deze kunstvorm.
    Geen Afbeelding Geen Afbeelding Geen Afbeelding Geen Afbeelding Geen Afbeelding
  4. Het is mogelijk om de vulfase volledig te automatiseren door gebruik te maken van het volgende algoritme:
    • Vind voor iedere pixel op het scherm in hoeveel rechthoeken het ligt.
    • maak iedere pixel wit als dit aantal even is en zwart als het oneven is (of andersom als je wil)
    To understand why this algorithm works, use paper and pencil to apply it to simple cases with few overlapping rectangles.
    Geen AfbeeldingGeen AfbeeldingGeen Afbeelding
Terug Volgende