【Processing】リサージュ曲線を描画に使う(4)〜ellipse2()をまわしてみた〜
#Processing #generative pic.twitter.com/KgBJ7pyE9G
— 94 (@_94_94) November 28, 2018
巻き貝ぽい。
float a = 360; float b = random(1,1.5); float c = random(255); void setup() { size(800, 800); background(250); } void draw() { pushMatrix(); translate(width/3, height/2); rotate(radians(a*b)); a -= 0.5; color strokeColor =color(random(c*b),a, a*b); color fillColor = color(500 - a, random(250*b), c, width - a); ellipse2(a, 0, a, a/(6*b), 1, (int)11, strokeColor, fillColor); popMatrix(); if (a < 0) { save("save/save.jpg"); stop(); } } //リサージュ設定付きのellipse()------- void ellipse2(float x, float y, float radiusX, float radiusY, int risaX, int risaY, color st, color fi) { int degree = 0; float rx, ry; float prx, pry ; if (risaX%2 == 0) { //risaX++; } //奇数にする if (risaY%2 == 0) { //risaY++; } //奇数にする pushMatrix(); translate(x, y); for (int i = 0; i < 360; i++) { degree = i; rx = radiusX*cos(radians(degree*risaX)); ry = radiusY*sin(radians(degree*risaY)); prx = radiusX*cos(radians((-1 + degree)*risaX)); pry = radiusY*sin(radians((-1+ degree)*risaY)); noStroke(); fill(fi); beginShape(); if ( risaX <= risaY ) { vertex(0, 0); vertex(prx, 0); vertex(prx, pry); vertex(rx, ry); vertex(rx, 0); vertex(0, 0); } else { vertex(0, 0); vertex(0, pry); vertex(prx, pry); vertex(rx, ry); vertex(0, ry); vertex(0, 0); } endShape(CLOSE); } for (int i = 0; i < 360; i++) { degree = i; rx = radiusX*cos(radians(degree*risaX)); ry = radiusY*sin(radians(degree*risaY)); prx = radiusX*cos(radians((-1 + degree)*risaX)); pry = radiusY*sin(radians((-1+ degree)*risaY)); noFill(); strokeWeight(0.1); stroke(st); line(prx, pry, rx, ry); } popMatrix(); }