ギンの備忘録

デジタルアートやプログラミングやテクノロジー関連のこと。

青海波文様を描く【p5.jsで和柄】

青海波文様をp5.jsを使って描きます。

青海波文様

青海波文様は半円形を重ねたものを鱗状に並べた文様です。 波を表した文様で、平安時代雅楽の舞曲「青海波」が名前の由来だそうです。

作例

f:id:gin_graphic:20210424170644p:plain:w300

カラーパレット["#4267D8", "#DDDeF1"]

f:id:gin_graphic:20210424170650p:plain:w300

カラーパレット["#F3F3FA", "#D9213C"]

ソースコード

const w=720; //キャンバスサイズ
const draw_num = 4; //一方向に円を何個並べるか
const draw_size = w/draw_num; //円一個の大きさ
const mark_num = 8; //円一つ当たり何個の円で描くか
const mark_size = draw_size/mark_num;
const set_color=["#4267D8", "#DDDeF1"]; //描くための二色を指定

function setup() {
   createCanvas(w, w);
   noStroke();

   for(let j=0;j<4*(draw_num+1);j++){
      const y = draw_size/4 * j; //縦方向は円の大きさの4分の1ずつ移動させる
      const dx = (j%2==1) ? draw_size/2 : 0 ; //縦方向が奇数番目であれば横方向に円半個分移動

      for(let i=0;i<draw_num+1;i++){
         const x = draw_size * i; //横方向は円一個分ずつ移動
         push();
         translate(x+dx, y);

         //一つの描画
         for(let k=0;k<mark_num;k++){
          fill(set_color[k%2]); //二色を交互に設定する
          circle(0, 0, mark_size * (mark_num-k)); //外側の円描いていく
         }

         pop();
      }
   }
}

二色の円を順番に重ね、それを並べることで青海波を表現しました。