スクリーンショット_2019-10-31_18

Wallpaper Group#1 p1

亀の歩み#17
亀の歩みと称して、ジェネラティブアートの練習を投稿しているのですが、今回からはWallpaper Groupシリーズを始めたいと思います!

(もはや、ジェネラティブアートではなく、ただの実装とはなるのですが、「模様」に興味があるため、一旦寄り道します。)

まず、Wallpaper Groupとは何か。
日本語で言うと、文様群と言いますが、「2次元模様の繰り返しパターンを17個のカテゴリに分けたもの」を指します。

言い換えると、全ての2次元模様はたった17種類のパターンのみから成り立っている、ということです!
これが数学的に証明もされているというのだから、面白い!!

というわけで、ちまちまと17種類のパターンを実装していきたいと思います。
(車輪の再開発をしている気がしてならないのですが、Processingにはそのようなことを実現する標準関数やライブラリがパッと見なさげだったので、自己開発してみました...。もっと良い手があれば、コメント大歓迎です!!)


まず、p1と呼ばれるパターンから。
基本的には以下のように平行四辺形が並進しているようなものとなっています。

スクリーンショット 2019-10-31 17.49.56

この1単位として、2本の線を引いてあげたものがこちら

スクリーンショット 2019-10-31 18.11.35

シンプルなのに、「模様」と呼べるようなものが出来ている!

ソースコード

void setup() {
 size(800, 800);
 background(255);
 smooth();
}
void draw() {
 p1(width, height, 90, 60, PI/3);
}
void p1(int w, int h, float x, float y,float arg) {
 float countX = w/x;
 float countY = h/(y*sin(arg));
 int gap = 10;
 
 for (int gridY=-1; gridY<countY; gridY++) {
   for (int gridX=-1; gridX<countX; gridX++) {
    noFill();
    
    line(gridX*x+(y*cos(arg) + gap), gridY*y*sin(arg),
         (gridX+0.8)*x+(y*cos(arg) + gap), gridY*y*sin(arg) - gap);
    line((gridX+0.8)*x, (gridY+1)*y*sin(arg) - gap,
         gridX*x, (gridY+1)*y*sin(arg));
    
    //quad(gridX*x+y*cos(arg), gridY*y*sin(arg),
    //     (gridX+1)*x+y*cos(arg), gridY*y*sin(arg),
    //     (gridX+1)*x, (gridY+1)*y*sin(arg),
    //     gridX*x, (gridY+1)*y*sin(arg)
    //     );
         
   }
 }
}

この記事が気に入ったらサポートをしてみませんか?