眠れない夜に
寝苦しい夜に、ふと見かけた歯車を書く記事。
なんかいい感じにならないかなぁと思ったけれど、ならなかったという話。
Gear g; void setup() { size(400, 400); g = new Gear(width/2.0, height/2.0, 150, 180); } void draw() { background(-1); g.display(); g.update(); } class Gear { float px, py, inR, outR, rotateR; Gear(float _px, float _py, float _inR, float _outR) { px = _px; py = _py; inR = _inR; outR = _outR; rotateR = 0; } void update() { rotateR++; } void display() { translate(px, py); rotate(radians(rotateR)); stroke(50); strokeWeight(1); fill(50); ellipse(0, 0, inR*2, inR*2); float div=8; for (int i=0; i<div; i++) { beginShape(); vertex(v(inR, 360*(i/div)-360/(div*4)).x, v(inR, 360*(i/div)-360/(div*4)).y); vertex(v(outR, 360*(i/div)-360/(div*6)).x, v(outR, 360*(i/div)-360/(div*6)).y); vertex(v(outR, 360*(i/div)+360/(div*6)).x, v(outR, 360*(i/div)+360/(div*6)).y); vertex(v(inR, 360*(i/div)+360/(div*4)).x, v(inR, 360*(i/div)+360/(div*4)).y); endShape(); } fill(255); ellipse(0, 0, inR/3, inR/3); } PVector v(float _r, float _deg) { PVector pv = new PVector(_r*cos(radians(_deg)), _r*sin(radians(_deg))); return pv; } }