๐ŸŽ‡ Color box grid

BamgasiJMยท2026๋…„ 1์›” 23์ผ

p5.js Art

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

๐Ÿ“ p5.js

// ์บ”๋ฒ„์Šค ํฌ๊ธฐ ์„ค์ • (16:9 ๊ฐ€๋กœํ˜•)
let canvasW = 1280;
let canvasH = 720;

// ์‚ฌ์šฉํ•  ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ
// ๋Œ€๋น„๊ฐ€ ๋А๊ปด์ง€๋Š” ์ƒ‰ ์œ„์ฃผ๋กœ ๊ตฌ์„ฑ
let colors = [
  "#F94144", // ๊ฐ•ํ•œ ๋ถ‰์€์ƒ‰
  "#F3722C", // ์ฃผํ™ฉ
  "#F9C74F", // ๋…ธ๋ž‘
  "#90BE6D", // ์—ฐ๋‘
  "#577590", // ํ‘ธ๋ฅธ ํšŒ์ƒ‰
];

function setup() {
  // ์บ”๋ฒ„์Šค ์ƒ์„ฑ
  createCanvas(canvasW, canvasH);

  // ๋ฐฐ๊ฒฝ์„ ์–ด๋‘์šด ํ†ค์œผ๋กœ ์„ค์ •
  background(20);

  // ์™ธ๊ณฝ์„  ์ œ๊ฑฐ
  noStroke();

  // ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฌ๋Ÿฌ ์ค„์„ ๋งŒ๋“ค์–ด
  // ๊ฐ ์ค„๋งˆ๋‹ค ๊ฐ์ •์˜ ํ๋ฆ„์„ ํ‘œํ˜„
  let rows = 14;

  // ํ•œ ์ค„์˜ ๋†’์ด ๊ณ„์‚ฐ
  let rowHeight = height / rows;

  // ๊ฐ ์ค„์„ ๋ฐ˜๋ณต
  for (let r = 0; r < rows; r++) {
    // ํ˜„์žฌ ์ค„์˜ y ์œ„์น˜
    let y = r * rowHeight + rowHeight / 2;

    // ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋„ํ˜•์„ ๋ฐฐ์น˜
    for (let x = 0; x < width; x += random(30, 80)) {
      // ๋„ํ˜•์˜ ๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ๋žœ๋ค์œผ๋กœ ์„ค์ •
      let w = random(20, 100);
      let h = random(6, rowHeight * 0.6);

      // ์ƒ‰์ƒ ๋ฐฐ์—ด์—์„œ ๋žœ๋ค ์„ ํƒ
      let c = random(colors);

      // ํˆฌ๋ช…๋„๋ฅผ ์ฃผ์–ด ๊ฒน์นจ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณด์ด๋„๋ก ์„ค์ •
      fill(red(c), green(c), blue(c), 180);

      // ์•ฝ๊ฐ„์˜ ์„ธ๋กœ ํ”๋“ค๋ฆผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ
      // ๊ธฐ๊ณ„์ ์ธ ์ •๋ ฌ์„ ํ”ผํ•จ
      let offsetY = random(-10, 10);

      // ์–‡์€ ์‚ฌ๊ฐํ˜•์„ ์‚ฌ์šฉํ•ด
      // ๊ฐ์ •์˜ ํ๋ฆ„์„ ์„ ์ฒ˜๋Ÿผ ํ‘œํ˜„
      rect(x, y + offsetY, w, h);
    }
  }

  // ์ •์ ์ธ ์ด๋ฏธ์ง€์ด๋ฏ€๋กœ ๋ฐ˜๋ณต ์ค‘๋‹จ
  noLoop();
}

function draw() {
  // ์ •์  ์ž‘์—…์ด๋ฏ€๋กœ draw์—์„œ๋Š” ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š์Œ
}

profile
Coding Art with Blender / oF / Processing / p5.js / nannou

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