oolong32 / drawbot-exercises

DrawBot Exercises

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DrawBot Übungen

Basierend auf Armin Hofmanns Buch «Methodik der Form- und Bildgestaltung», Niggli Verlag 1965.

Vorgehensweise

Am besten ist es, die nachfolgenden Übungen zu zweit zu machen: Eine Person ist Fahrerin und schreibt Code. Die andere ist Navigatorin: Sie sagt, was zu tun ist, schaut bei Syntax-Fragen in der DrawBot- oder Python-Dokumentation nach, usw.

Jede Übung umfasst eine oder mehrere Abbildungen. Wählt eine davon aus und diskutiert die Regeln, nach denen das darin enthaltene Bild gezeichnet wurde. Notiert diese Regeln auf Papier, bevor ihr mit Coden beginnt. Meist hilft es auch, einige Skizzen zu machen.

Dann schreibt ihr – oder wie Frieder Nake sagen würde: macht ihr – mit DrawBot ein Programm, das ein Bild nach diesen Regeln generiert. Es ist dabei nicht so wichtig, den zuvor entwickelten Regeln bis ins Detail gerecht werden. Manchmal ist es notwendig, die Regeln zu vereinfachen, um vorwärts zu kommen.

Es ist übrigens nicht verkehrt, die Notizen als Kommentare ins Eingabefeld von DrawBot zu übertragen, z.B. als Überschriften für einzelne Abschnitte des Programms.

Link zur DrawBot Dokumentation.

Dokumentation

Es wird darum gebeten, oft Screenshots zu machen und sie in geeigneter Art und Weise öffentlich zu machen (Slack?).

DrawBot schreibt den Output mit der Funktion saveImage() in eine Datei.

from time import strftime

# der Zeitstempel im Dateinamen verhindert das Überschreiben der Datei
timestr = strftime('%Y%m%d-%H%M%S')

# der Dateiname definiert das Format: jpg, png, gif, mov, pdf
saveImage('~/Desktop/name_' + timestr + '.jpg')

Hofmann S. 105, Abb. 119–122

Abb. 1

Tipp

# Linie zeichnen
line((x1, y1), (x2, y2))

# Füllfarbe
fill(0)

# Linienfarbe, Wert zwischen 0 und 1
stroke(0)

# Liniendicke
strokeWidth(x)

Hofmann S. 52, Abb. 6/7

Abb. 2 Abb. 3

Tipp

Um einen Raster zu zeichnen, müssen zwei for-Loops verschachtelt werden. Einer für die Y-Achse, einer für die X-Achse.

Hofmann S. 53, Abb. 10–12

Abb. 4

Tipp

Auch hier braucht es einen Raster, gezeichnet wird aber nur, wenn bestimmte Beidngungen erfüllt werden.

Hofmann S. 56, Abb. 20/22/24

Abb. 5 Abb. 6 Abb. 7

Tipp

Kein Tipp.

Hofmann S. 59, Abb. 30

Abb. 8

Tipp

Für die zunehmende Liniendicke (Progression) könnte eine Variable mit jeder Iteration des for-Loops vergrössert werden.

sw = 1

for n in range(r):
    strokeWidth(sw)
    line((x, y), (xx, yy))
    sw += 1 # das ist eine verkürzte Schreibweise für sw = sw + 1

Hofmann S. 60, Abb. 32/33

Abb. 9

Tipp

Kein Tipp.

Hofmann S. 62, Abb. 39

Abb. 10

Tipp

Kein Tipp.

Tipp

Um zu verhindern, dass sich Kreise überlappen, müssen die Positionen aller Kreise in einer Liste gespeichert werden. Die Position jedes neuen Kreises muss mit den in der Liste enthaltenen Werte verglichen werden, bevor er akzeptiert oder verworfen wird.

Das ist für Einsteiger etwas ambitioniert, deshalb würde ich vorschlagen, Überlappungen fürs Erste als glückliche Zufälle willkommen zu heissen, oder wie es bei Bob Ross heisst: ‘happy accidents’.

Hofmann S. 80, Abb. 65–69

Abb. 11 Abb. 12 Abb. 13 Abb. 14 Abb. 15

Tipp

Kein Tipp.

Hofmann S. 96, Abb. 99–103

Abb. 16

Tipp

Kein Tipp.

About

DrawBot Exercises

License:Mozilla Public License 2.0