ProcessingでBridget Riley風のwaveを


 ひさしぶりに Processing などをいじって遊んでいます。正式版が出てからそろそろ1年になろうとしているんですねー。

 というわけで Bridget Riley の波みたいのを作るコードを考えてみました。あんまりキレイなコードじゃないのでやや情けないですが。

 実は開発者お二人の解説書『Processing』(MIT Press)でもちょこっと紹介されているのにコードは掲載されてませんで、本を買った時から、ヒマを見て作ろうと思いつつ一年以上…。orz

 線の太さが微妙に変化していくので、単に波状の線を並べてもダメでございまして、そのへんがちとめんどくさかったです。しかし、ライリーさんご本人は手で描いているんですから、これくらいでめんどくさいとか言ってはいけません。
size(446,335);
background(255);

smooth();
noStroke();

int[] xs = new int[20];
int[] ys = new int[2];

ys[0]=-25;
ys[1]=0;

int dista = 9;
int lineWid = 5;
int tbDist = 8;
int rpNum = 50;

for (int k=0; k<xs.length; k++) {
  xs[k]=k*70-500;
}

for (int h=0; h<rpNum; h++){
  fill(h*3);
  float wave = 10;
  beginShape();
  curveVertex(xs[0]+h*wave,ys[1]+h*dista);
  for (int i=0; i<xs.length; i++) {
    int j = i % 2;
    curveVertex(xs[i]+h*wave,ys[j]+h*dista);
  }
  for (int i=xs.length-1; i>=0; i--) {
    int j = i % 2;
    curveVertex(xs[i]+tbDist+h*wave,ys[j]+lineWid+h*dista);
  }
  curveVertex(xs[0]+tbDist+h*wave,ys[1]+lineWid+h*dista);
  endShape(CLOSE);
}