儚さ
四角をたくさん書いて、大きくしたり小さくしたりしています。色は小さくなる度にランダムで変わり、良い感じの色になってもすぐに変わってしまう様子が儚かったのでこの題名に。
儚さ
— ごつちやん (@gotutiyan_kapi) 2018年4月10日
良い感じの色ができてもすぐに変わってしまう様子からこの題名に。
四角の数も変わります。#openframeworks
コードは以下から。https://t.co/8gEZQOgCu9 pic.twitter.com/rmYv6XJ1tK
変数sizeが0になる度に、色と描く四角の個数を変化させているところがポイントです。
色は四角達がグラデーションになるように、HSBのHを5ずつずらして描画しています。色を変えるためには、5ずつ足す対象となる基準となる値をランダムにして毎回決めるべきです。これには今回colorCenterを使っています。
#include "ofApp.h" #define rep(i,j,k) for(int i=j;i<k;i++) int size=0,speed=2; int num=20,colorCenter=ofRandom(255); void ofApp::setup(){ ofSetFrameRate(60); ofSetBackgroundColor(0); ofSetColor(255); ofSetCircleResolution(32); ofNoFill(); } void ofApp::update(){ } void ofApp::draw(){ rep(i,0,num){ int pic=colorCenter+i*5; if(pic<510)pic%=255; else pic%=510; ofColor c; c.setHsb(pic,255,255); ofSetColor(c); ofPushMatrix(); ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ofRotate(ofGetFrameNum()/2.0+i*5); ofDrawRectangle(-size/2,-size/2,size,size); ofPopMatrix(); } size+=speed; if(size<0){ speed*=-1; num-=6; if(num<0)num=abs(20+num); colorCenter=ofRandom(255); } if(size>300)speed*=-1; }