Incom ist die Kommunikations-Plattform der Hochschule Hof Kommunikationsdesign

In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre

Incom ist die Kommunikations-Plattform der Hochschule Hof Kommunikationsdesign mehr erfahren

PIXELPRINT - Jeder Tag ein Pixelmarathon

PIXELPRINT - Jeder Tag ein Pixelmarathon

“Pixelprint” measures what no fitness tracker does: stillness. It captures the digital imprint of a workday—every mouse movement, every scroll, every keystroke—and makes tangible what we never notice. The cursor traveled hundreds of meters, steered by a hand moving across just ten centimeters of trackpad. It is movement that feels like activity, even as the body remains at rest. For the first time, stillness has a number and an image.

P R O J E K T

PIXELPRINT - JEDER TAG EIN PIXELMARATHON

MacOS-App: Pixelprint

Interaktion_Mockup.pngInteraktion_Mockup.png

Website: Pixelmarathon

Free MacBook Pro Mockup.pngFree MacBook Pro Mockup.png

Kurzbeschreibung

The Problem

A workday at the computer consists of tens of thousands of micro-movements: the mouse travels across distances, fingers scroll endlessly, and hands type rhythmically—yet none of this leaves a visible trace. Ironically, our most intense daily activity remains invisible, and existing tools merely count time or clicks rather than revealing what a day at the computer actually looks like.

The Solution

„pixelprint“ bridges this gap: a standalone macOS app that records mouse movements, clicks, scrolling, and keystrokes, translating raw interaction data into visual imagery.

The Tool

A single session generates thirteen coordinated perspectives on the same dataset—ranging from a time-lapse of the mouse path and attention heatmaps to a stress indicator that visualizes frantic activity as a curve. Recording takes place directly within the app—either in real-time or retrospectively—and everything remains local: no servers, no cloud, no tracking. The same data simultaneously gives rise to generative data art; thus, the tool does not merely analyze but creates a portrait of one’s workday.

The Website

The website „Pixelmarathon“ explains the project, offers the app for download, and places it within the broader context of digital versus physical movement.

In this way, the most fleeting aspects of our digital existence become visible—pixelprint serves as both a tool and a mirror.

Präsentationsvideo

Website Screencast

Bilder

Das Tool: pixelprint

Frame 15454.jpgFrame 15454.jpg

2D Zeitraffer

Bildschirmfoto 2026-07-22 um 02.36.01.pngBildschirmfoto 2026-07-22 um 02.36.01.png
Bildschirmfoto 2026-07-23 um 12.33.27.pngBildschirmfoto 2026-07-23 um 12.33.27.png
Bildschirmfoto 2026-07-23 um 12.33.41.pngBildschirmfoto 2026-07-23 um 12.33.41.png
Bildschirmfoto 2026-07-23 um 12.33.50.pngBildschirmfoto 2026-07-23 um 12.33.50.png
Bildschirmfoto 2026-07-23 um 12.34.00.pngBildschirmfoto 2026-07-23 um 12.34.00.png

3D-Tunnel

Bildschirmfoto 2026-07-22 um 02.36.23.pngBildschirmfoto 2026-07-22 um 02.36.23.png
Bildschirmfoto 2026-07-23 um 12.32.32.pngBildschirmfoto 2026-07-23 um 12.32.32.png
Bildschirmfoto 2026-07-23 um 13.02.19.pngBildschirmfoto 2026-07-23 um 13.02.19.png

Mausklicks

Bildschirmfoto 2026-07-22 um 02.36.36.pngBildschirmfoto 2026-07-22 um 02.36.36.png
Bildschirmfoto 2026-07-23 um 12.34.34.pngBildschirmfoto 2026-07-23 um 12.34.34.png

Tastendrücke

Bildschirmfoto 2026-07-22 um 02.36.56.pngBildschirmfoto 2026-07-22 um 02.36.56.png
Bildschirmfoto 2026-07-23 um 12.34.45.pngBildschirmfoto 2026-07-23 um 12.34.45.png
Bildschirmfoto 2026-07-23 um 12.34.52.pngBildschirmfoto 2026-07-23 um 12.34.52.png

Klick+Tastatur

Bildschirmfoto 2026-07-22 um 02.37.03.pngBildschirmfoto 2026-07-22 um 02.37.03.png

Bewegung dx/dy

Bildschirmfoto 2026-07-22 um 02.37.12.pngBildschirmfoto 2026-07-22 um 02.37.12.png
Bildschirmfoto 2026-07-23 um 12.35.05.pngBildschirmfoto 2026-07-23 um 12.35.05.png
Bildschirmfoto 2026-07-23 um 12.35.11.pngBildschirmfoto 2026-07-23 um 12.35.11.png
Bildschirmfoto 2026-07-23 um 12.35.18.pngBildschirmfoto 2026-07-23 um 12.35.18.png
Bildschirmfoto 2026-07-23 um 12.35.24.pngBildschirmfoto 2026-07-23 um 12.35.24.png

Programme

Bildschirmfoto 2026-07-23 um 13.12.36.pngBildschirmfoto 2026-07-23 um 13.12.36.png
Bildschirmfoto 2026-07-23 um 12.35.32.pngBildschirmfoto 2026-07-23 um 12.35.32.png
Bildschirmfoto 2026-07-23 um 12.35.39.pngBildschirmfoto 2026-07-23 um 12.35.39.png
Bildschirmfoto 2026-07-23 um 12.35.46.pngBildschirmfoto 2026-07-23 um 12.35.46.png

Übergänge

Bildschirmfoto 2026-07-22 um 02.37.47.pngBildschirmfoto 2026-07-22 um 02.37.47.png

Rhythmus / Pausen

Bildschirmfoto 2026-07-22 um 02.38.05.pngBildschirmfoto 2026-07-22 um 02.38.05.png

Screenregionen

Bildschirmfoto 2026-07-22 um 02.38.21.pngBildschirmfoto 2026-07-22 um 02.38.21.png
Bildschirmfoto 2026-07-23 um 12.36.10.pngBildschirmfoto 2026-07-23 um 12.36.10.png
Bildschirmfoto 2026-07-23 um 12.36.18.pngBildschirmfoto 2026-07-23 um 12.36.18.png

Stress-Indikator

Bildschirmfoto 2026-07-22 um 02.38.29.pngBildschirmfoto 2026-07-22 um 02.38.29.png

Gesten

Bildschirmfoto 2026-07-22 um 02.38.40.pngBildschirmfoto 2026-07-22 um 02.38.40.png
Bildschirmfoto 2026-07-23 um 12.36.32.pngBildschirmfoto 2026-07-23 um 12.36.32.png
Bildschirmfoto 2026-07-23 um 12.36.39.pngBildschirmfoto 2026-07-23 um 12.36.39.png
Bildschirmfoto 2026-07-23 um 12.36.45.pngBildschirmfoto 2026-07-23 um 12.36.45.png

Scrollen

Bildschirmfoto 2026-07-22 um 02.38.49.pngBildschirmfoto 2026-07-22 um 02.38.49.png
Bildschirmfoto 2026-07-23 um 12.36.52.pngBildschirmfoto 2026-07-23 um 12.36.52.png
Bildschirmfoto 2026-07-23 um 12.36.58.pngBildschirmfoto 2026-07-23 um 12.36.58.png
Bildschirmfoto 2026-07-23 um 12.37.04.pngBildschirmfoto 2026-07-23 um 12.37.04.png

App Icon

Group 47.pngGroup 47.png
Bildschirmfoto 2026-07-22 um 00.20.02 1.jpgBildschirmfoto 2026-07-22 um 00.20.02 1.jpg
Bildschirmfoto 2026-07-22 um 00.24.00.pngBildschirmfoto 2026-07-22 um 00.24.00.png
Bildschirmfoto 2026-07-22 um 00.26.28 1.jpgBildschirmfoto 2026-07-22 um 00.26.28 1.jpg

Die Website: Pixelmarathon

Web Screen PSD Mockup.pngWeb Screen PSD Mockup.png

IMG_1112.jpegIMG_1112.jpeg

Bildschirmfoto 2026-07-22 um 03.26.05.pngBildschirmfoto 2026-07-22 um 03.26.05.png
Bildschirmfoto 2026-07-22 um 03.26.19.pngBildschirmfoto 2026-07-22 um 03.26.19.png
Bildschirmfoto 2026-07-22 um 03.26.32.pngBildschirmfoto 2026-07-22 um 03.26.32.png
Bildschirmfoto 2026-07-22 um 03.26.40.pngBildschirmfoto 2026-07-22 um 03.26.40.png
Bildschirmfoto 2026-07-22 um 03.26.49.pngBildschirmfoto 2026-07-22 um 03.26.49.png
Bildschirmfoto 2026-07-22 um 03.27.05.pngBildschirmfoto 2026-07-22 um 03.27.05.png
Bildschirmfoto 2026-07-22 um 03.27.36.pngBildschirmfoto 2026-07-22 um 03.27.36.png
Bildschirmfoto 2026-07-22 um 03.27.46.pngBildschirmfoto 2026-07-22 um 03.27.46.png
Bildschirmfoto 2026-07-22 um 03.27.56.pngBildschirmfoto 2026-07-22 um 03.27.56.png
Bildschirmfoto 2026-07-22 um 03.28.21.pngBildschirmfoto 2026-07-22 um 03.28.21.png
Bildschirmfoto 2026-07-22 um 03.29.09.pngBildschirmfoto 2026-07-22 um 03.29.09.png
Bildschirmfoto 2026-07-22 um 03.29.25.pngBildschirmfoto 2026-07-22 um 03.29.25.png
Bildschirmfoto 2026-07-22 um 03.28.36.pngBildschirmfoto 2026-07-22 um 03.28.36.png
Bildschirmfoto 2026-07-22 um 03.29.37.pngBildschirmfoto 2026-07-22 um 03.29.37.png
Bildschirmfoto 2026-07-22 um 03.29.47.pngBildschirmfoto 2026-07-22 um 03.29.47.png
Bildschirmfoto 2026-07-22 um 03.30.02.pngBildschirmfoto 2026-07-22 um 03.30.02.png
Bildschirmfoto 2026-07-22 um 03.30.27.pngBildschirmfoto 2026-07-22 um 03.30.27.png

Ausstellung

IMG_0963.jpgIMG_0963.jpg
IMG_0964.jpgIMG_0964.jpg
IMG_0965.jpgIMG_0965.jpg

Pitch Deck Final

pitch_deck_pixelprint_final.pdf PDF pitch_deck_pixelprint_final.pdf

Userjourney

MacBook Pro 14_ - 37.jpgMacBook Pro 14_ - 37.jpg

_______________________________________

P R O Z E S S

1.) Ideen

Bildschirmfoto 2026-03-29 um 23.39.15.pngBildschirmfoto 2026-03-29 um 23.39.15.png

2.) Recorder Tool

Maus- und Tastatur-Recorder für macOS

Zeichnet Mausbewegungen, Klicks, Scrolls und Tasteneingaben auf und speichert alles als CSV-Datei und als Tageszusammenfassung ebenfalls als CSV_Datei.

Zusätzlich:

- Distanz pro Tag (kumulativ in tagesstatistik.csv)

- Scroll-Strecke (dx/dy Summen)

- Aktive App pro Event

- App-Statistik pro Tag (app_statistik.csv) - Zeit + Klicks + Scrolls + Tasten + Bewegung pro App - Gesten-Verteilung pro Tag (in der tagesstatistik.csv)

Starten: python recorder.py Stoppen: ESC-Taste drücken

recorder.pdf PDF recorder.pdf

Bildschirmfoto 2026-05-17 um 18.59.57.pngBildschirmfoto 2026-05-17 um 18.59.57.png

Vergleiche

Mausdistanz — 334,75 Meter:

- 3,3× der Höhe des Eiffelturms (324 m)

- Einer Runde um einen typischen Stadtblock

- Der Länge von ~3 Fußballfeldern (je ~105 m)

Klicks — 1.134:

- Anzahl der Fenster des Empire State Buildings auf einer Seite

- 13x alle Tasten einer Klaviatur (88)

Tastenanschläge — 2.307:

- Anzahl der Stufen auf den Eiffelturm (1.665 Stufen bis zur Spitze) — plus 642 extra

Dauer — 490 Minuten (~8,2 Stunden):

- Der Flugzeit von Frankfurt nach New York (~8,5 Std.)

- ~25 Folgen einer 20-Minuten-Serie (z. B. The Office)

3.) Pitch Deck

Interaktion_Pitch_Deck.pdf PDF Interaktion_Pitch_Deck.pdf

4.) Test: Visualisierungstool 1

https://openprocessing.org/@u449495/2921698

zu unübersichtlich und praktisch nicht auslesebar plus bei längeren Aufnahmen nicht performant

Vibe-Coding mit Claude Code

Bildschirmfoto 2026-07-22 um 15.33.52.pngBildschirmfoto 2026-07-22 um 15.33.52.png
Bildschirmfoto 2026-07-22 um 15.35.15.pngBildschirmfoto 2026-07-22 um 15.35.15.png
Bildschirmfoto 2026-07-22 um 15.37.37.pngBildschirmfoto 2026-07-22 um 15.37.37.png

5.) Test: Visualisierungstool 2

https://openprocessing.org/@u449495/2926747

nicht benutzerfreundlich was den CSV-Datei Upload angeht.

Visuell nicht sehr ansprechend.

Vibe-Coding mit Claude Code

Bildschirmfoto 2026-07-22 um 15.43.29.pngBildschirmfoto 2026-07-22 um 15.43.29.png

6.) Test: Visualisierungstool 3

https://openprocessing.org/@u449495/2926787

Feinschliff von der 2. Variante aber immer noch die gleichen Probleme wie bei 2.

Vibe-Coding mit Claude Code

Bildschirmfoto 2026-07-22 um 15.46.10.pngBildschirmfoto 2026-07-22 um 15.46.10.png

7.) Prototyp

Vibe-Coding mit Claude Code

Prototyp 1

Bildschirmfoto 2026-05-04 um 01.38.36.pngBildschirmfoto 2026-05-04 um 01.38.36.png
Bildschirmfoto 2026-05-04 um 01.40.39.pngBildschirmfoto 2026-05-04 um 01.40.39.png
Bildschirmfoto 2026-05-04 um 01.39.10.pngBildschirmfoto 2026-05-04 um 01.39.10.png

Prototyp 2

Bildschirmfoto 2026-07-22 um 16.00.41.pngBildschirmfoto 2026-07-22 um 16.00.41.png
Bildschirmfoto 2026-07-22 um 16.07.36.pngBildschirmfoto 2026-07-22 um 16.07.36.png
Bildschirmfoto 2026-07-22 um 16.07.43.pngBildschirmfoto 2026-07-22 um 16.07.43.png

Prototyp 3

Bildschirmfoto 2026-07-22 um 16.10.42.pngBildschirmfoto 2026-07-22 um 16.10.42.png
Bildschirmfoto 2026-07-22 um 16.10.52.pngBildschirmfoto 2026-07-22 um 16.10.52.png
Bildschirmfoto 2026-07-22 um 16.11.05.pngBildschirmfoto 2026-07-22 um 16.11.05.png
Bildschirmfoto 2026-07-22 um 16.11.14.pngBildschirmfoto 2026-07-22 um 16.11.14.png
Bildschirmfoto 2026-07-22 um 16.11.20.pngBildschirmfoto 2026-07-22 um 16.11.20.png
Bildschirmfoto 2026-07-22 um 16.11.27.pngBildschirmfoto 2026-07-22 um 16.11.27.png
Bildschirmfoto 2026-07-22 um 16.11.34.pngBildschirmfoto 2026-07-22 um 16.11.34.png
Bildschirmfoto 2026-07-22 um 16.11.40.pngBildschirmfoto 2026-07-22 um 16.11.40.png

Neuerungen: Stress–Indikator

Richtungswechsel zählt nur noch wenn X und Y gleichzeitig die Richtung wechseln — das filtert normale Geradeausbewegungen mit kleinen Korrekturen heraus und erkennt nur echte Zickzack-Unruhe.

Geschwindigkeit nutzt jetzt den Median statt des Durchschnitts — ein einzelner schneller Ausreißer kann den Score nicht mehr alleine hochtreiben.

App-Wechsel wurde von 15% auf 25% angehoben, weil es das stärkste Kontextwechsel-Signal ist.

Synergie-Bonus — der entscheidende Unterschied: einzelne hohe Signale reichen nicht. Erst wenn 2 oder mehr Faktoren gleichzeitig erhöht sind gibt es einen Multiplikator (×1.15 bei 2, ×1.35 bei 3+). Das verhindert dass jemand der einfach schnell tippt aber konzentriert arbeitet einen hohen Score bekommt.

Pausen dämpfen den Score — Stillstandszeit im Fenster reduziert proportional den Gesamtscore. Wer kurze Denkpausen einlegt arbeitet strukturierter.

Präzisions-Dämpfung — langsame Bewegung mit wenig Unruhe halbiert den Score, unabhängig davon was die anderen Faktoren messen.

Prototyp 4

Bildschirmfoto 2026-07-22 um 16.31.42.pngBildschirmfoto 2026-07-22 um 16.31.42.png
Bildschirmfoto 2026-07-22 um 16.31.51.pngBildschirmfoto 2026-07-22 um 16.31.51.png
Bildschirmfoto 2026-07-22 um 16.31.58.pngBildschirmfoto 2026-07-22 um 16.31.58.png

Prototyp 5

redesign

Bildschirmfoto 2026-07-22 um 16.34.17.pngBildschirmfoto 2026-07-22 um 16.34.17.png

Prototyp 6

mit Logo

pixelprint_logo_v3.jpgpixelprint_logo_v3.jpg

Bildschirmfoto 2026-07-22 um 16.36.55.pngBildschirmfoto 2026-07-22 um 16.36.55.png

Prototyp 7

light/dark mode

Bildschirmfoto 2026-07-22 um 16.41.51.pngBildschirmfoto 2026-07-22 um 16.41.51.png

Prototyp 8

Info Overlay

Bildschirmfoto 2026-07-22 um 16.44.09.pngBildschirmfoto 2026-07-22 um 16.44.09.png

Prototyp 9

Vergleiche Funktion

Bildschirmfoto 2026-07-22 um 16.47.01.pngBildschirmfoto 2026-07-22 um 16.47.01.png

Prototyp 10

Zeitmarke setzten Funktion

Bildschirmfoto 2026-07-22 um 16.49.58.pngBildschirmfoto 2026-07-22 um 16.49.58.png

Prototyp 11

Sitzungstitel hinzufügen

Bildschirmfoto 2026-07-22 um 16.53.19.pngBildschirmfoto 2026-07-22 um 16.53.19.png
Bildschirmfoto 2026-07-22 um 16.53.10.pngBildschirmfoto 2026-07-22 um 16.53.10.png

Prototyp 12

Auswahl von Beispielsitzung für Schnellstart

Download-Button für Recorder 

Anleitung zum durchlesen/downloaden für Einrichtung und Nutzung des Recorders -> erste eigene User Aufnahmen

Bildschirmfoto 2026-07-22 um 16.55.56.pngBildschirmfoto 2026-07-22 um 16.55.56.png
Bildschirmfoto 2026-07-22 um 16.56.15.pngBildschirmfoto 2026-07-22 um 16.56.15.png
Bildschirmfoto 2026-07-22 um 16.56.36.pngBildschirmfoto 2026-07-22 um 16.56.36.png

8.) Live Recorder

Maus- und Tastatur-Recorder für macOS

Zeichnet Mausbewegungen, Klicks, Scrolls und Tasteneingaben auf

und speichert alles als CSV-Datei.

Zusätzlich:

- Distanz pro Tag (kumulativ in tagesstatistik.csv)

- Scroll-Strecke (dx/dy Summen)

- Aktive App pro Event

- App-Statistik pro Tag (app_statistik.csv) - Zeit + Klicks + Scrolls + Tasten + Bewegung pro App

- Gesten-Verteilung pro Tag (in der tagesstatistik.csv)

Starten: python3 recorder.py

Starten mit Live: python3 recorder.py --live

(zusätzlich ws://localhost:8765 — pixelprint kann sich live verbinden

und alle Tabs in Echtzeit mitlaufen lassen, während die CSV wie gewohnt

im Hintergrund weitergeschrieben wird)

Stoppen: ESC-Taste drücken

live_recorder.pdf PDF live_recorder.pdf

9.) Prototyp mit Live Modus

Prototyp 13

Live Modus

Prototyp 14

Responsiv

Bildschirmfoto 2026-07-22 um 17.55.20.pngBildschirmfoto 2026-07-22 um 17.55.20.png
Bildschirmfoto 2026-07-22 um 17.55.27.pngBildschirmfoto 2026-07-22 um 17.55.27.png

Prototyp 15

Beispiel Datensätze direkt erreichbar über Startbildschirm

Bildschirmfoto 2026-07-22 um 17.59.18.pngBildschirmfoto 2026-07-22 um 17.59.18.png

Prototyp 16

Letzte Datei öffnen Funktion

Bildschirmfoto 2026-07-22 um 18.01.55.pngBildschirmfoto 2026-07-22 um 18.01.55.png

Prototyp 17

UI-Optimierung:

Dateien laden

- Dateien laden CSV

- Beispiele

- Letzte Dateien

Bildschirmfoto 2026-07-22 um 18.04.46.pngBildschirmfoto 2026-07-22 um 18.04.46.png

10.) Prototyp mit Recorder-App

Vorgehen: Recorder-App für macOS

- Ziel & Datenmodell: Aufzeichnung von Maus, Klicks, Scroll, Tastatur mit Zeitstempel + aktiver App; Ausgabe als CSV

- Technologie: Python, „pynput“ (Eingaben mitlesen), „pyobjc“ (macOS-Integration)

- Umgebung: virtuelle Umgebung („.venv“) wegen „externally managed„ Python, Abhängigkeiten installiert

- Eingabe-Listener – Maus- und Tastatur-Listener für “on_move„, “on_click„, “on_scroll„, “on_press„

- Aktive App erfassen: über “NSWorkspace„ das Vordergrund-Programm auslesen

- CSV-Ausgabe: Ereignisse in Datei schreiben (Zeit, x, y, Typ, Taste/Button, App)

- Menüleisten-Steuerung: “NSStatusItem„ zum Starten/Stoppen der Aufnahme

- Berechtigungen: „Eingabeüberwachung“ + „Bedienungshilfen„ in Systemeinstellungen erteilen, App neu starten

- Absturz beheben: Tastatur-Layout-Wert im Haupt-Thread cachen, “pyobjc„ aktualisieren

- Verpacken: mit PyInstaller (“--windowed„, Hidden-Imports) zur eigenständigen “.app„

- Verteilung: als DMG verpacken; unsigniert → erster Start per Rechtsklick → „Öffnen“

Bildschirmfoto 2026-07-22 um 18.09.34 1.jpgBildschirmfoto 2026-07-22 um 18.09.34 1.jpg

Prototyp 18

Download der Recorder-App und angepasste Anleitung zur Einrichtung

Bildschirmfoto 2026-07-22 um 18.57.52.pngBildschirmfoto 2026-07-22 um 18.57.52.png

Prototyp 19

Anleitung und Download der Recorder-App in einem (UI-Optimierung)

Bildschirmfoto 2026-07-22 um 19.01.25.pngBildschirmfoto 2026-07-22 um 19.01.25.png

11.) Pixelprint

Recorder und Visualisierung alles in einer macOS-App vereint

Bildschirmfoto 2026-07-22 um 19.07.30.pngBildschirmfoto 2026-07-22 um 19.07.30.png

_______________________________________

E X P E R I M E N T E

Vibe-Coding 1

Bildschirmfoto 2026-03-29 um 23.09.54.pngBildschirmfoto 2026-03-29 um 23.09.54.png

function setup() {

createCanvas(500, 500);

noLoop();

}

function draw() {

background(255);

let cx = width / 2;

let cy = height / 2;

let circleR = 200;

// --- Kreis: nur Outline ---

noFill();

stroke(0);

strokeWeight(2);

ellipse(cx, cy, circleR * 2, circleR * 2);

// --- 4 Plus-Zeichen im Kreis ---

// Positionen: oben, rechts, unten, links

let dist = 100; // Abstand vom Mittelpunkt

let positions = [

[cx, cy - dist], // oben

[cx + dist, cy], // rechts

[cx, cy + dist], // unten

[cx - dist, cy], // links

]

for (let [px, py] of positions) {

drawPlus(px, py, 35, 12);

}

}

function drawPlus(cx, cy, armL, armW) {

fill(0);

noStroke();

// Horizontaler Balken

rect(cx - armL, cy - armW / 2, armL * 2, armW);

// Vertikaler Balken

rect(cx - armW / 2, cy - armL, armW, armL * 2);

}

Vibe-Coding 2

Bildschirmfoto 2026-03-29 um 23.09.22.pngBildschirmfoto 2026-03-29 um 23.09.22.png
Bildschirmfoto 2026-03-29 um 23.09.29.pngBildschirmfoto 2026-03-29 um 23.09.29.png

let countSlider;

function setup() {

createCanvas(500, 550);

countSlider = createSlider(1, 20, 4, 1);

countSlider.position(150, 520);

countSlider.style('width', '200px');

noLoop();

countSlider.input(() => redraw());

}

function draw() {

background(255);

let cx = width / 2;

let cy = 250;

let circleR = 200;

let count = countSlider.value();

// --- Label ---

fill(0);

noStroke();

textAlign(CENTER);

textSize(14);

text('Anzahl: ' + count, width / 2, 515);

// --- Kreis: nur Outline ---

noFill();

stroke(0);

strokeWeight(2);

ellipse(cx, cy, circleR * 2, circleR * 2);

// --- Plus-Zeichen gleichmäßig verteilt ---

let dist = 120;

for (let i = 0; i < count; i++) {

let angle = TWO_PI / count * i - HALF_PI;

let px = cx + cos(angle) * dist;

let py = cy + sin(angle) * dist;

drawPlus(px, py, 28, 10);

}

}

function drawPlus(cx, cy, armL, armW) {

fill(0);

noStroke();

rect(cx - armL, cy - armW / 2, armL * 2, armW);

rect(cx - armW / 2, cy - armL, armW, armL * 2);

}

Vibe-Coding 3

Bildschirmfoto 2026-03-29 um 23.05.31.pngBildschirmfoto 2026-03-29 um 23.05.31.png
Bildschirmfoto 2026-03-29 um 23.05.42.pngBildschirmfoto 2026-03-29 um 23.05.42.png

let countSlider;

function setup() {

createCanvas(500, 550);

countSlider = createSlider(1, 20, 4, 1);

countSlider.position(150, 520);

countSlider.style('width', '200px');

noLoop();

countSlider.input(() => redraw());

}

function draw() {

background(255);

let cx = width / 2;

let cy = 250;

let circleR = 200;

let armL = 28;

let count = countSlider.value();

// --- Label ---

fill(0);

noStroke();

textAlign(CENTER);

textSize(14);

text('Anzahl: ' + count, width / 2, 515);

// --- Kreis: nur Outline ---

noFill();

stroke(0);

strokeWeight(2);

ellipse(cx, cy, circleR * 2, circleR * 2);

// --- Plus-Zeichen tangential, innerhalb des Kreises ---

let dist = circleR - armL - 10; // Abstand vom Mittelpunkt: Rand minus Arm-Länge minus Puffer

for (let i = 0; i < count; i++) {

let angle = TWO_PI / count * i - HALF_PI;

let px = cx + cos(angle) * dist;

let py = cy + sin(angle) * dist;

push();

translate(px, py);

rotate(angle + HALF_PI);

drawPlus(0, 0, armL, 10);

pop();

}

}

function drawPlus(cx, cy, armL, armW) {

fill(0);

noStroke();

rect(cx - armL, cy - armW / 2, armL * 2, armW);

rect(cx - armW / 2, cy - armL, armW, armL * 2);

}

Vibe-Coding 4

Bildschirmfoto 2026-03-29 um 23.05.08.pngBildschirmfoto 2026-03-29 um 23.05.08.png
Bildschirmfoto 2026-03-29 um 23.05.20.pngBildschirmfoto 2026-03-29 um 23.05.20.png

let countSlider;

function setup() {

createCanvas(500, 550);

countSlider = createSlider(1, 20, 4, 1);

countSlider.position(150, 520);

countSlider.style('width', '200px');

noLoop();

countSlider.input(() => redraw());

}

function draw() {

background(255);

let cx = width / 2;

let cy = 250;

let circleR = 200;

let count = countSlider.value();

// --- Label ---

fill(0);

noStroke();

textAlign(CENTER);

textSize(14);

text('Anzahl: ' + count, width / 2, 515);

// --- Kreis: nur Outline ---

noFill();

stroke(0);

strokeWeight(2);

ellipse(cx, cy, circleR * 2, circleR * 2);

// --- Plus-Zeichen tangential ausgerichtet ---

for (let i = 0; i < count; i++) {

let angle = TWO_PI / count * i - HALF_PI;

let px = cx + cos(angle) * circleR;

let py = cy + sin(angle) * circleR;

push();

translate(px, py);

// Tangente = Winkel + 90°

rotate(angle + HALF_PI);

drawPlus(0, 0, 28, 10);

pop();

}

}

function drawPlus(cx, cy, armL, armW) {

fill(0);

noStroke();

rect(cx - armL, cy - armW / 2, armL * 2, armW);

rect(cx - armW / 2, cy - armL, armW, armL * 2);

}

Vibe-Coding 5

let countSlider;

let angle = 0;

function setup() {

createCanvas(500, 550);

countSlider = createSlider(1, 20, 4, 1);

countSlider.position(150, 520);

countSlider.style('width', '200px');

}

function draw() {

background(255);

let cx = width / 2;

let cy = 250;

let circleR = 200;

let armL = 28;

let count = countSlider.value();

angle += 0.02; // Rotationsgeschwindigkeit

// --- Label ---

fill(0);

noStroke();

textAlign(CENTER);

textSize(14);

text('Anzahl: ' + count, width / 2, 515);

// --- Kreis: nur Outline ---

noFill();

stroke(0);

strokeWeight(2);

ellipse(cx, cy, circleR * 2, circleR * 2);

// --- Plus-Zeichen tangential, innerhalb des Kreises ---

let dist = circleR - armL - 10;

for (let i = 0; i < count; i++) {

let a = TWO_PI / count * i - HALF_PI;

let px = cx + cos(a) * dist;

let py = cy + sin(a) * dist;

push();

translate(px, py);

rotate(a + HALF_PI + angle); // Tangente + eigene Rotation

drawPlus(0, 0, armL, 10);

pop();

}

}

function drawPlus(cx, cy, armL, armW) {

fill(0);

noStroke();

rect(cx - armL, cy - armW / 2, armL * 2, armW);

rect(cx - armW / 2, cy - armL, armW, armL * 2);

}

Blender Vibe-Coding

Bildschirmfoto 2026-04-20 um 09.22.25.pngBildschirmfoto 2026-04-20 um 09.22.25.png

Ein Projekt von

Fachgruppe

Kommunikationsdesign

Art des Projekts

Keine Angabe

Zugehöriger Workspace

Designprojekt 3 - Interaction / Information Design

Entstehungszeitraum

Sommersemester 2026