๐ŸŒŸ p5.js ์ปฌ๋Ÿฌ Part. 2 : color() ๊ฐ์ฒด

BamgasiJMยท2025๋…„ 11์›” 29์ผ

p5.js Art

๋ชฉ๋ก ๋ณด๊ธฐ
6/65
post-thumbnail

p5.js์—์„œ๋Š” ์ปฌ๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜๊ณ , ๊ฐ์ฒด์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Color ๊ฐ์ฒด๋Š” ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

1. p5.Color( color() ) ๊ฐ์ฒด โ€” ์ƒ์„ฑ๊ณผ ๋‚ด๋ถ€ ๊ตฌ์กฐ

  • color() ํ•จ์ˆ˜๋Š” p5.Color ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ•ด์„์€ RGB(0~255)์ด๋ฉฐ colorMode()์— ๋”ฐ๋ผ ํ•ด์„ ๋ฐฉ์‹์ด ๋ฐ”๋€๋‹ˆ๋‹ค. p5.js ๊ณต์‹๋ฌธ์„œ
function setup() {
  createCanvas(400, 400);
  
  // Color ๊ฐ์ฒด ์ƒ์„ฑ
  let c1 = color(255, 0, 0);
  let c2 = color(0, 255, 0);
  let c3 = color('#0000FF');
  
  fill(c1);
  rect(50, 50, 100, 100);
  
  fill(c2);
  rect(200, 50, 100, 100);
  
  fill(c3);
  rect(125, 200, 100, 100);
  
  // Color ๊ฐ์ฒด์—์„œ ๊ฐ’ ์ถ”์ถœ
  let r = red(c1);        // 255
  let g = green(c2);      // 255
  let b = blue(c3);       // 255
}
  • ์ค‘์š”: p5.Color ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋  ๋•Œ ์ ์šฉ๋˜๋˜ color mode์™€ ๊ฐ ์ฑ„๋„์˜ ์ตœ๋Œ€๊ฐ’(max)์„ ๋‚ด๋ถ€์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‚˜์ค‘์— ๋‹ค๋ฅธ mode๋กœ ๋ฐ”๊ฟ”๋„ ์ด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ์˜ ํ•ด์„ ์ •๋ณด๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
colorMode(RGB, 255);          // ๊ธฐ๋ณธ
let c1 = color(255, 0, 0);    // ๋นจ๊ฐ• (RGB ๊ธฐ์ค€)

colorMode(HSB, 360, 100, 100);
let c2 = color(180, 50, 100); // HSB ํ•ด์„์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ p5.Color

2. p5.Color์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์œ ํ‹ธ

  • ์ปดํฌ๋„ŒํŠธ ์ฝ๊ธฐ: red(c), green(c), blue(c), alpha(c), hue(c), saturation(c), brightness(c) ๋“ฑ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๋“ค ํ•จ์ˆ˜๋Š” ํ˜„์žฌ์˜ colorMode ๋˜๋Š” ์ƒ‰ ๊ฐ์ฒด๊ฐ€ ์ €์žฅํ•œ ๋ชจ๋“œ์— ๋”ฐ๋ผ ๋ฐ˜ํ™˜๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด ๋‚ด๋ถ€ ๋ฐฐ์—ด: c.levels โ†’ [r,g,b,a]ํ˜•ํƒœ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฒ”์œ„๋Š” ์ƒ์„ฑ์‹œ์˜ mode์™€max ๊ฐ’์— ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • ํˆฌ๋ช…๋„ ๋ณ€๊ฒฝ: c.setAlpha(value)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” colorMode์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

let c = color(200, 100, 50); // ์ƒ์„ฑ์‹œ์˜ mode์— ๋”ฐ๋ผ ํ•ด์„
console.log(c.levels);      // e.g. [200,100,50,255] (์ƒ์„ฑ์‹œ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)
c.setAlpha(128);            // ์•ŒํŒŒ ์กฐ์ •
let h = hue(c);             // hue ๊ฐ’ ์–ป๊ธฐ (HSB ๊ธฐ์ค€)
profile
Coding Art with Blender / oF / Processing / p5.js / nannou

0๊ฐœ์˜ ๋Œ“๊ธ€