Formen und Farben (25 Minuten)

Wir beginnen nun, mit p5.js das DHBW-Logo zu zeichnen.

p5.js-Editor

Dabei gehen wir schrittweise vor, indem wir verschiedene p5.js-Funktionen zur Erstellung von Formen in passenden Farben benutzen.

💡

Spickzettel (cheat sheet) für p5.js:

https://bmoren.github.io/p5js-cheat-sheet/de.html

Quadrate (5 Minuten)

Zuerst erstellen wir das rote Quadrat auf der linken Seite des Logos. Dazu können wir die Funktion square() benutzen, die drei Parameter hat:

square(x,y,length);

Mit x und y legen wir die Koordination der linken oberen Ecke des Quadrats fest und width bestimmt die Seitenlänge des Quadrats.

👨🏻‍💻

Quadrat mit folgenden Eigenschaften erstellen:

  • Position auf der x-Achse etwas links von der Mitte
  • Position auf der y-Achse genau in der Mitte
  • Seitenlänge von 120

Quadrat

Siehe Code

Farben und Ränder (4 Minuten)

Die Funktion fill() funktioniert ähnlich wie background(). Durch Angabe eines Farbwerts in fill() wird die Farbe festgelegt, mit der Formen aufgefüllt werden. Für das DHBW-Logo verwenden wir einen bestimmten Wert für die passende rote Farbe:

fill("#EA1E26");

⟶ Vor dem Aufruf von square() einfügen.

💡

Der Wert "#EA1E26" legt einzelne Werte für den Anteil von rot (EA), blau (1E) und grün (26) fest. Mit # wird signalisiert, dass es sich um einen hexadezimalen Wert handelt (Basis 16).
⟶ Zahlendarstellung (binär, hexadezimal, …) werden im 1. Semester behandelt.

Bemerkung: In p5.pjs stehen uns alle Möglichkeiten der Farbbestimmung aus CSS zur Verfügung.

Nun haben wir noch einen schwarzen Rand um das Quadrat herum, den wir nicht benötigen. Durch den Aufruf von

noStroke();

vor square deaktivieren wir die Ränder der dargestellten Formen.

Quadrate mit „runden“ Ecken (1 Minute)

Ein vierter Parameter im Aufruf von square() legt die Abrundung der Ecken fest:

square(75, 140, 120, 4);

Somit haben wir bereits das rote Quadrat des Logos erzeugt.

Graues Quadrat (5 Minuten)

Nun soll rechts vom roten Quadrat ein entsprechendes graues Quadrat dargestellt werden.

👨🏻‍💻

Quadrat mit folgenden Eigenschaften erstellen:

  • Position auf der x-Achse etwas rechts von der Mitte
  • Position auf der y-Achse genau in der Mitte
  • Seitenlänge von 120
  • Wert des Grautons: #73818D

Zwei Quadrate nebeneinander

Siehe Code

Dreiecke (5 Minuten)

Als Zwischenschritt für die Weiterenwicklung des DHBW-Logos sollen zwei kleinere Dreiecke an den Quadraten gezeichnet werden.

Zunächst ein graues Dreieck unterhalb des roten Quadrats:

fill("#73818D");
triangle(135, 260, 195, 260, 135, 320);

triangle() erwartet 6 Parameter:

triangle(x1, y1, x2, y2, x3, y3);

(x1,y1), (x2,y2) und (x3,y3) legen die Koordinaten der drei Ecken des Dreiecks fest.

👨🏻‍💻

Dreieck mit folgenden Eigenschaften erstellen:

  • Farbe: #EA1E26 (rot)
  • Position: oberhalb des grauen Quadrats
  • Größe wie das graue Dreieck unter dem roten Quadrats(s.o.)
  • Siehe folgende Abbildung für das gewünschte Aussehen

Quadrate mit Dreicken

Siehe Code

Vierecke (10 Minuten)

Durch ein Viereck innerhalb des roten Quadrats soll der nächste Teil des DHBW-Logos wie folgt erscheinen:

Viereck im roten Quadrat

Die Farbe ist ein dunkles Rot mit dem Wert "#86171C".

Wir zeichnen ein Viereck (engl. „quadrangle“) mit der p5.js-Funktion quad(), die vier Koordinaten und daher acht Parameter benötigt (beim Dreieck waren es drei Koordinaten bzw. sechs Parameter):

fill("#86171C");
quad(195, 145, 195, 260, 135, 260, 135, 200);
// Die ersten Koordinaten des Vierecks stehen hier für die Ecke
// „rechts oben“ und die folgenden verlaufen im Uhrzeigersinn
💡

Tipp: Manchmal hilft es, die sich an den Koordinaten bereits vorhandener Formen zu orientieren. Bei uns ist dies das rote Quadrat (square(75, 140, 120)) mit diesen Werten:

Rotes Quadrat:
x1: 75
y1: 140
Länge: 120

Wenn wir diese Werte verwenden, wird der Programmcode leichter nachvollziehbar:

// Die ersten Koordinaten des Vierecks stehen hier für die Ecke
// rechts oben“ und die folgenden verlaufen im Uhrzeigersinn
quad(
    75 + 120, // x1 rotes Quadrat + Länge (Quadrat)
    140 + 5, // y1 rotes Quadrat + kleiner Abstand
    75 + 120, // x1 rotes Quadrat + Länge
    140 + 120, // y1 rotes Quadrat + Länge
    75 + 120 / 2, // x1 rotes Quad. + halbe Länge
    140 + 120, // y1 rotes Quad. + Länge
    75 + 120 / 2, // x1 rotes Quad. + halbe Länge
    140 + 120 / 2 // y1 rotes Quad. + halbe Länge
  );

Die Werte oben entsprechen dem vorigen Aufruf von quad():

quad(195, 145, 195, 260, 135, 260, 135, 200);

Ausblick: Mit Variablen bzw. Konstanten können bestimmte Werte leichter wiederverwendet und für ganze Bereiche des Codes angepasst werden:

const canvasWidth = 600;
const canvasHeight = 600;
const squareSize = 180;
const squareGap = squareSize / 30;
const redSquareStartX = canvasWidth / 2 - squareSize - squareGap;
const redSquareStartY = canvasHeight / 2 - squareSize / 2;
// usw. 
👨🏻‍💻

Versuchen Sie, im grauen Quadrat ein Viereck zu zeichnen, das wie in der folgenden Abbildung aussieht (gleiche Farbe wie das Viereck im roten Quadrat).

Vierecke in beiden Quadraten

Siehe Code

Nun haben wir fast das DHBW-Logo erstellt. Was fehlt noch?

Siehe 👉

Dreiecke durch Vierecke ersetzen (Optional)

Wer schnell ist bzw. wenn es genügend Zeit gibt, dann besteht eine gute Übung darin, den Code so anzupassen, dass die Hilfslinien für die Koordinaten mit Kommentaren ausgeblendet und die Dreiecke im Code in Vierecke umgewandelt werden. Unser Entwurf sollte entsprechend folgender Abbildung aussehen:

Dreiecke als Vierecke

💡

Hier muss bestehender Code verändert bzw. angepasst werden. Dies kommt im Alltag der Programmierung viel häufiger vor als das Schreiben neuen Codes.

⚠️

Im echten DHBW-Logo sind auch die Ecken der Vierecke abgerundet…

👉

DHBW Logo mit Konstanten