
p5.js์์๋ ์์ ๋ค๋ฃจ๋ ๋ฐฉ์์ ์ปฌ๋ฌ๋ชจ๋(colorMode)๋ก ์ ์ดํ ์ ์์ต๋๋ค.
๐ 1. RGB : ๊ธฐ๋ณธ ๋ชจ๋
๐ 2. HSB : Hue, Saturation, Brightness
๐ 3. HSL : Hue, Saturation, Lightness
๐ 4. Grayscale : ํ์์กฐ
๐ 5. Hex Color : ์น ํ์ค 16์ง์ ์ปฌ๋ฌ ์ฝ๋
๐ 6. CSS : CSS ํ์ค ์ปฌ๋ฌ ์ด๋ฆ ๋ฌธ์์ด
background(color) : ์บ๋ฒ์ค์ ๋ฐฐ๊ฒฝ์fill(color) : ๋ํ์ ์ฑ์ฐ๋ ์stroke(color) : ๋ํ์ ์ค๊ณฝ์ /์ ์ ์noFill() : ๋ํ ์ฑ์ฐ์ง ์๊ธฐnoStroke() : ๋ํ ์ค๊ณฝ์ ๊ทธ๋ฆฌ์ง ์๊ธฐcolor(v1, v2, v3, alpha) : ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ณ์์ ์ ์ฅcolorMode()p5.js์ ์์ ์์คํ
์ ํต์ฌ์ colorMode() ํจ์์
๋๋ค. ์ด ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ํด์ํ๋ ๋ฐฉ์์ ์ง์ ํ ์ ์์๋๋ค.
colorMode(mode, [range1], [range2], [range3], [rangeA])
mode : ์ฌ์ฉํ ์์ ๋ชจ๋ธ์ ์ง์ ํฉ๋๋ค. (RGB, HSB, HSL ์ค ํ๋)range1~3 : ๊ฐ ์์ ๊ตฌ์ฑ์์ (R, G, B ํน์ H, S, B)์ ์ต๋๊ฐ์ ์ง์ ํฉ๋๋ค.rangeA : ์ํ๊ฐ(ํฌ๋ช
๋)์ ์ต๋๊ฐ์ ์ง์ ํฉ๋๋ค.1๋ก ์ค์ ํ์ฌ 0.0์์ 1.0 ์ฌ์ด์ ๋ถ๋ ์์์ ๊ฐ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ด๋ ์ข
์ข
์
ฐ์ด๋๋ ๋ค๋ฅธ ๊ทธ๋ํฝ API์ ์ฐ๋ํ ๋ ํธ๋ฆฌํฉ๋๋ค.colorMode(RGB, 1.0); // R, G, B์ ์ต๋๊ฐ์ 1.0์ผ๋ก ์ค์
fill(1.0, 0.0, 0.0); // ๋นจ๊ฐ์
rect(50, 50, 100, 100);
fill(0.0, 0.5, 0.5); // ์ค๊ฐ ํค์ ์ฒญ๋ก์
rect(150, 50, 100, 100);
colorMode(RGB, 255); // ์๋ 255 ๋ฒ์๋ก ๋ณต์
fill(0, 0, 255); // ํ๋์
rect(250, 50, 100, 100);
colorMode(RGB, 100, 100, 100, 1);
// R: 0-100, G: 0-100, B: 0-100, Alpha: 0-1
fill(100, 0, 0, 0.5); // ๋ฐํฌ๋ช
๋นจ๊ฐ
rect(125, 200, 100, 100);
// RGB ๋ชจ๋๋ก ๊ทธ๋ฆฌ๊ธฐ
colorMode(RGB, 255);
fill(255, 0, 0);
rect(50, 50, 100, 100);
// HSB ๋ชจ๋๋ก ์ ํ
colorMode(HSB, 360, 100, 100);
fill(120, 80, 90);
rect(200, 50, 100, 100);
// ๋ค์ RGB๋ก ์ ํ
colorMode(RGB, 255);
fill(0, 0, 255);
rect(125, 200, 100, 100);
}
์ด์ ๋ถํฐ๋ ์ฌ๋ฌ ์ปฌ๋ฌ ๋ชจ๋์ ์ฌ์ฉ๋ฒ์ ๋ํ ์ค๋ช ์ ๋๋ค.
colorMode(RGB, maxR, maxG, maxB, maxA)colorMode(RGB, 255, 255, 255, 255) ํน์ ๊ฐ๋จํ colorMode(RGB)function setup() {
createCanvas(400, 400);
// RGB ๋ชจ๋ (๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก ๋ณ๋ ํ๊ธฐ ์ํจ)
// ๋ฒ์: R(0-255), G(0-255), B(0-255)
fill(255, 0, 0); // ๋นจ๊ฐ
rect(50, 50, 100, 100);
fill(0, 255, 0); // ์ด๋ก
rect(200, 50, 100, 100);
fill(0, 0, 255); // ํ๋
rect(125, 200, 100, 100);
}
fill(gray) : ํ์ (0~255)fill(gray, alpha) : ํฌ๋ช
๋๊ฐ ์๋ ํ์fill(r, g, b) : RGB ๊ฐfill(r, g, b, alpha) : ํฌ๋ช
๋๊ฐ ์๋ RGB์์, ์ฑ๋, ๋ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋์ด ์์ ์ธ์งํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์์ ์ง์ ํฉ๋๋ค.
colorMode(HSB, maxH, maxS, maxB, maxA)colorMode(HSB, 360, 100, 100, 100)function setup() {
createCanvas(400, 400);
// HSB ๋ชจ๋๋ก ๋ณ๊ฒฝ
colorMode(HSB);
// ๊ธฐ๋ณธ ๋ฒ์: H(0-360), S(0-100), B(0-100)
fill(0, 100, 100); // ๋นจ๊ฐ (Hue 0๋)
rect(50, 50, 100, 100);
fill(120, 100, 100); // ์ด๋ก (Hue 120๋)
rect(200, 50, 100, 100);
fill(240, 100, 100); // ํ๋ (Hue 240๋)
rect(125, 200, 100, 100);
}
HSB์ ๋น์ทํ์ง๋ง ๋ฐ๊ธฐ ๋์ Lightness(๋ช ๋)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
colorMode(HSL, maxH, maxS, maxL, maxA)colorMode(HSL, 360, 100, 100, 100)function setup() {
createCanvas(400, 400);
// HSL ๋ชจ๋๋ก ๋ณ๊ฒฝ
colorMode(HSL);
// ๊ธฐ๋ณธ ๋ฒ์: H(0-360), S(0-100), L(0-100)
fill(0, 100, 50); // ๋นจ๊ฐ
rect(50, 50, 100, 100);
fill(120, 100, 50); // ์ด๋ก
rect(200, 50, 100, 100);
fill(240, 100, 50); // ํ๋
rect(125, 200, 100, 100);
}
p5.js์์ ์์ ํจ์์ ์ธ์๋ฅผ ํ๋๋ง ์ฌ์ฉํ๋ฉด ๊ทธ๋ ์ด์ค์ผ์ผ๋ก ํด์๋ฉ๋๋ค.
fill(v) ๋๋ fill(v, alpha)colorMode()์์ ์ค์ ๋ ์ต๋๊ฐ๊น์ง.0๋ถํฐ 255๊น์ง.0๋ถํฐ 100๊น์ง์
๋๋ค.colorMode(RGB);
fill(0); // ๊ฒ์์ (R, G, B ๋ชจ๋ 0)
fill(255); // ํฐ์ (R, G, B ๋ชจ๋ 255)
fill(128, 100); // ํ์ (๋ฐ๊ธฐ 128), ํฌ๋ช
๋ 100
์น ํ์ค 16์ง์ ์ปฌ๋ฌ ์ฝ๋๋ฅผ ์์ ๊ด๋ จ ํจ์์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
function setup() {
createCanvas(400, 400);
// Hex ์ปฌ๋ฌ (# ํฌํจ ๋๋ ์ ์ธ ๋ชจ๋ ๊ฐ๋ฅ)
fill('#FF0000'); // ๋นจ๊ฐ
rect(50, 50, 100, 100);
fill('#00FF00'); // ์ด๋ก
rect(200, 50, 100, 100);
fill('0000FF'); // ํ๋ (# ์์ด๋ ๊ฐ๋ฅ)
rect(125, 200, 100, 100);
// ํฌ๋ช
๋ ํฌํจ (8์๋ฆฌ hex)
fill('#FF000080'); // ๋ฐํฌ๋ช
๋นจ๊ฐ
rect(275, 200, 100, 100);
}
CSS ํ์ค ์ปฌ๋ฌ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
function setup() {
createCanvas(400, 400);
fill('red');
rect(50, 50, 100, 100);
fill('coral');
rect(200, 50, 100, 100);
fill('dodgerblue');
rect(125, 200, 100, 100);
}