code:p5js:additive-farbmischung
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
code:p5js:additive-farbmischung [2025/04/08 14:46] – Felix Hardmood Beck | code:p5js:additive-farbmischung [2025/04/08 15:01] (current) – [Erklärung der additiven Farbmischung] Felix Hardmood Beck | ||
---|---|---|---|
Line 61: | Line 61: | ||
// Distance-Slider (oben) | // Distance-Slider (oben) | ||
- | distanceSlider = createSlider(50, 200, 115); | + | distanceSlider = createSlider(0, 200, 100); // 0 = weit auseinander, |
distanceSlider.parent(" | distanceSlider.parent(" | ||
distanceSlider.class(" | distanceSlider.class(" | ||
Line 93: | Line 93: | ||
let g = gSlider.value(); | let g = gSlider.value(); | ||
let b = bSlider.value(); | let b = bSlider.value(); | ||
- | let d = distanceSlider.value(); | + | |
+ | // Invertierter Abstand: bei Slider-Wert 200 → d = 0 (volle Überlagerung) | ||
+ | let sliderVal | ||
+ | let maxDistance = 200; | ||
+ | let d = maxDistance - sliderVal; | ||
let radius = 200; | let radius = 200; | ||
Line 119: | Line 123: | ||
fill(255); | fill(255); | ||
textSize(14); | textSize(14); | ||
- | text("Distance: " + d, 20, 15); | + | text("Überlagerung: " + sliderVal + " / 200", 20, 15); |
text(" | text(" | ||
text(" | text(" | ||
Line 133: | Line 137: | ||
Additive Farbmischung ist ein physikalisches Prinzip der Farberzeugung, | Additive Farbmischung ist ein physikalisches Prinzip der Farberzeugung, | ||
- | Grundprinzipien der additiven Farbmischung: | + | Grundprinzipien der additiven Farbmischung |
* Die Primärfarben der additiven Farbmischung sind: | * Die Primärfarben der additiven Farbmischung sind: | ||
* Rot | * Rot | ||
* Grün | * Grün | ||
* Blau | * Blau | ||
- | (RGB-Farbmodell) | + | |
Werden zwei dieser Farben überlagert, | Werden zwei dieser Farben überlagert, | ||
Line 147: | Line 151: | ||
* Wird kein Licht ausgesendet (alle Werte = 0) => Schwarz (dunkelste Stufe) | * Wird kein Licht ausgesendet (alle Werte = 0) => Schwarz (dunkelste Stufe) | ||
+ | Siehe auch [[code: | ||
===== Beispiel p5.js Code ===== | ===== Beispiel p5.js Code ===== | ||
Line 157: | Line 161: | ||
noStroke(); | noStroke(); | ||
- | | + | // Distance-Slider (oben): 0 = weit auseinander, |
- | const style = createElement(' | + | distanceSlider = createSlider(0, 200, 100); |
- | .custom-slider { | + | distanceSlider.position(25, 20); |
- | -webkit-appearance: | + | distanceSlider.style("width", "550px"); |
- | width: 100%; | + | |
- | height: 10px; | + | |
- | background: #888; | + | |
- | border-radius: | + | |
- | outline: none; | + | |
- | } | + | |
- | + | ||
- | .custom-slider:: | + | |
- | -webkit-appearance: | + | |
- | appearance: none; | + | |
- | width: 16px; | + | |
- | height: 16px; | + | |
- | background: #fff; | + | |
- | border-radius: | + | |
- | cursor: pointer; | + | |
- | border: 2px solid #000; | + | |
- | } | + | |
- | + | ||
- | .custom-slider:: | + | |
- | width: 16px; | + | |
- | height: 16px; | + | |
- | background: #fff; | + | |
- | border-radius: | + | |
- | cursor: pointer; | + | |
- | border: 2px solid #000; | + | |
- | } | + | |
- | `); | + | |
- | style.parent(document.head); | + | |
- | + | ||
- | | + | |
- | distanceSlider = createSlider(50, 200, 115); | + | |
- | distanceSlider.position(20, 20); | + | |
- | distanceSlider.style('width', '550px'); | + | |
- | distanceSlider.addClass(' | + | |
// RGB-Slider (unten) | // RGB-Slider (unten) | ||
rSlider = createSlider(0, | rSlider = createSlider(0, | ||
- | rSlider.position(20, | + | rSlider.position(20, |
- | rSlider.style('width', '150px'); | + | rSlider.style("width", "150px"); |
- | rSlider.addClass(' | + | |
gSlider = createSlider(0, | gSlider = createSlider(0, | ||
- | gSlider.position(220, | + | gSlider.position(220, |
- | gSlider.style('width', '150px'); | + | gSlider.style("width", "150px"); |
- | gSlider.addClass(' | + | |
bSlider = createSlider(0, | bSlider = createSlider(0, | ||
- | bSlider.position(420, | + | bSlider.position(420, |
- | bSlider.style('width', '150px'); | + | bSlider.style("width", "150px"); |
- | bSlider.addClass(' | + | |
} | } | ||
Line 219: | Line 186: | ||
let g = gSlider.value(); | let g = gSlider.value(); | ||
let b = bSlider.value(); | let b = bSlider.value(); | ||
- | let d = distanceSlider.value(); | + | |
+ | // Umgekehrte Distanz: Max-Wert (200) → volle Überlagerung (d = 0) | ||
+ | let sliderVal | ||
+ | let maxDistance = 200; | ||
+ | let d = maxDistance - sliderVal; | ||
let radius = 200; | let radius = 200; | ||
Line 225: | Line 196: | ||
let cy = height / 2 - 30; | let cy = height / 2 - 30; | ||
+ | // Positionen im gleichseitigen Dreieck | ||
let xR = cx; | let xR = cx; | ||
let yR = cy - d; | let yR = cy - d; | ||
Line 234: | Line 206: | ||
let yB = cy + d * sin(PI / 6); | let yB = cy + d * sin(PI / 6); | ||
+ | // Additive Farbmischung | ||
blendMode(ADD); | blendMode(ADD); | ||
fill(r, 0, 0); | fill(r, 0, 0); | ||
Line 243: | Line 216: | ||
blendMode(BLEND); | blendMode(BLEND); | ||
+ | // Textanzeige | ||
fill(255); | fill(255); | ||
textSize(14); | textSize(14); | ||
- | text(' | + | text(" |
- | text('Red: ' | + | text("Red: " |
- | text('Green: | + | text("Green: |
- | text('Blue: ' | + | text("Blue: " |
} | } | ||
</ | </ |
/var/www/vhosts/ct-lab.info/wiki.ct-lab.info/data/attic/code/p5js/additive-farbmischung.1744123578.txt.gz · Last modified: 2025/04/08 14:46 by Felix Hardmood Beck