code:p5js:carnovsky
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
code:p5js:carnovsky [2025/03/21 13:13] – Felix Hardmood Beck | code:p5js:carnovsky [2025/03/21 13:29] (current) – Felix Hardmood Beck | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== RGB-Collage mit dynamischem Farbwechsel | + | ===== RGB-Collage mit zufälligem Farb- und Ebenenwechsel |
< | < | ||
Line 10: | Line 9: | ||
< | < | ||
- | let imgR, imgG, imgB; | + | let images = []; |
- | let layerColors; | + | let imageOrder = []; |
+ | let colors = []; | ||
function preload() { | function preload() { | ||
- | | + | |
- | imgR = loadImage(' | + | |
- | | + | |
- | | + | |
} | } | ||
Line 26: | Line 25: | ||
noLoop(); | noLoop(); | ||
- | | + | |
- | | + | |
- | [255, 0, 0], // imgR | + | |
- | [0, 255, 0], // imgG | + | |
- | [0, 0, 255] // imgB | + | |
- | ]; | + | |
} | } | ||
Line 38: | Line 33: | ||
translate(width / 2, height / 2); | translate(width / 2, height / 2); | ||
- | | + | |
- | image(imgR, 0, 0); | + | let imgIndex = imageOrder[i]; |
- | + | let col = colors[imgIndex]; | |
- | tint(...layerColors[1], 180); | + | tint(col[0], col[1], col[2], 170); |
- | | + | image(images[imgIndex], 0, 0, width, height); |
- | + | } | |
- | | + | |
- | image(imgB, 0, 0); | + | |
} | } | ||
function mousePressed() { | function mousePressed() { | ||
- | | + | |
- | | + | |
redraw(); | redraw(); | ||
+ | } | ||
+ | |||
+ | function assignRandomColors() { | ||
+ | colors = []; | ||
+ | for (let i = 0; i < 3; i++) { | ||
+ | let rand = int(random(3)); | ||
+ | if (rand === 0) { | ||
+ | colors.push([255, | ||
+ | } else if (rand === 1) { | ||
+ | colors.push([0, | ||
+ | } else { | ||
+ | colors.push([0, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function shuffleImageOrder() { | ||
+ | imageOrder = [0, 1, 2]; | ||
+ | for (let i = imageOrder.length - 1; i > 0; i--) { | ||
+ | let j = floor(random(i + 1)); | ||
+ | [imageOrder[i], | ||
+ | } | ||
} | } | ||
</ | </ | ||
Line 57: | Line 72: | ||
</ | </ | ||
- | Der obere p5.js-Sketch | + | Der folgende |
===== Funktionsweise im Detail ===== | ===== Funktionsweise im Detail ===== | ||
- | * Zu Beginn | + | * Drei Bilder |
- | * Jedes dieser Bilder wird zentriert auf die Zeichenfläche gezeichnet. | + | * Jedes Bild erhält bei jedem Klick **zufällig** eine der drei RGB-Farben (Rot, Grün oder Blau). |
- | | + | * Die Reihenfolge, |
- | * Bild 1 → Rot (255, 0, 0) | + | * Durch `tint()` werden |
- | * Bild 2 → Grün (0, 255, 0) | + | |
- | | + | |
- | * Durch die Überlagerung entsteht ein dichter, farbiger Bildeindruck, | + | |
===== Interaktive Komponente ===== | ===== Interaktive Komponente ===== | ||
- | Bei jedem Mausklick auf die Zeichenfläche | + | Mit jedem Mausklick auf die Zeichenfläche |
- | + | ||
- | Das Zusammenspiel von Farbe und Motiv wird so dynamisch erfahrbar gemacht. | + | |
===== Ziel und ästhetisches Prinzip ===== | ===== Ziel und ästhetisches Prinzip ===== | ||
- | Das System zeigt, wie stark die Farbzuweisung die Wahrnehmung von Bildebenen beeinflusst. Ähnlich wie bei den analogen | + | Der Sketch demonstriert, wie sich durch einfache Zufallslogik und additive Farbmischung eine visuelle Vielschichtigkeit erzeugen lässt. In Anlehnung an Carnovskys |
+ | |||
+ | ===== Beispiel p5.js Code ===== | ||
+ | |||
+ | < | ||
+ | let images = []; | ||
+ | let imageOrder = []; | ||
+ | let colors = []; | ||
+ | |||
+ | function preload() { | ||
+ | images[0] = loadImage(' | ||
+ | let imageOrder = []; | ||
+ | let colors = []; | ||
+ | |||
+ | function preload() { | ||
+ | // CORS-kompatible Bilder von picsum.photos | ||
+ | images[0] = loadImage(' | ||
+ | images[1] = loadImage(' | ||
+ | images[2] = loadImage(' | ||
+ | } | ||
+ | |||
+ | function setup() { | ||
+ | createCanvas(800, | ||
+ | imageMode(CENTER); | ||
+ | noLoop(); | ||
+ | |||
+ | assignRandomColors(); | ||
+ | shuffleImageOrder(); | ||
+ | } | ||
+ | |||
+ | function draw() { | ||
+ | background(0); | ||
+ | translate(width / 2, height / 2); | ||
+ | |||
+ | for (let i = 0; i < 3; i++) { | ||
+ | let imgIndex = imageOrder[i]; | ||
+ | let col = colors[imgIndex]; | ||
+ | tint(col[0], | ||
+ | image(images[imgIndex], | ||
+ | } | ||
+ | } | ||
- | Das Prinzip eignet sich besonders zur Analyse farbpsychologischer Wirkung und zur Gestaltung visuell komplexer Kompositionen mit Farbcodierung. | + | function mousePressed() { |
+ | assignRandomColors(); | ||
+ | shuffleImageOrder(); | ||
+ | redraw(); | ||
+ | } | ||
+ | function assignRandomColors() { | ||
+ | colors = []; | ||
+ | for (let i = 0; i < 3; i++) { | ||
+ | let rand = int(random(3)); | ||
+ | if (rand === 0) { | ||
+ | colors.push([255, | ||
+ | } else if (rand === 1) { | ||
+ | colors.push([0, | ||
+ | } else { | ||
+ | colors.push([0, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | function shuffleImageOrder() { | ||
+ | imageOrder = [0, 1, 2]; | ||
+ | for (let i = imageOrder.length - 1; i > 0; i--) { | ||
+ | let j = floor(random(i + 1)); | ||
+ | [imageOrder[i], | ||
+ | } | ||
+ | } | ||
+ | </ |
/var/www/vhosts/ct-lab.info/wiki.ct-lab.info/data/attic/code/p5js/carnovsky.1742562802.txt.gz · Last modified: 2025/03/21 13:13 by Felix Hardmood Beck