紙吹雪
久々の投稿になります。
クリックすればするほど色とりどりの四角が現れます。動く様子が紙吹雪に見えることからこの題名に。
紙吹雪
— ごつちやん (@gotutiyan_kapi) 2018年4月5日
クリックする位置によって違う場所に四角が現れます。一瞬揃うところも良いですねえ。コードは以下のページから。https://t.co/IC9aLC1vDi#openframeworks pic.twitter.com/OsGjQv2W8Y
画面中央で一瞬重なる瞬間が気持ち良いですね〜
easyCamもついでに導入しているので、色々な角度から見ることもできます。
今回は初めて、mousePressed関数で押された瞬間のマウスの座標を使用しました。
現状、Processingと同じようにやっているつもりですが、ofTranslateとofRotateが思うように行かないというところがあるので、もう少し検証を重ねていきたいです。
コードは以下の通り。
#include "ofApp.h" #define rep(i,j,k) for(int i=j;i<k;i++) ofEasyCam cam; class Hako{ int x,y,size,color; public: void init(int ex,int ey,int esize,int ecolor){ x=ex; y=ey; size=esize; color=ecolor; } void move(){ ofColor c; //色はHSBで指定します c.setHsb(color,255,255); ofSetColor(c); ofPushMatrix(); ofTranslate(x,y); ofRotate(ofGetFrameNum()); ofDrawRectangle(x-size/2,y-size/2,size,size); ofPopMatrix(); } }; vector<Hako> v; //インスタンスを入れる配列 void ofApp::setup(){ ofSetFrameRate(60); ofNoFill(); ofSetBackgroundColor(0); ofSetColor(255); } void ofApp::update(){ } void ofApp::draw(){ cam.begin(); //配列に追加されたインスタンスはひたすら描画されます rep(i,0,v.size()){ v[i].move(); } cam.end(); } void ofApp::mousePressed(int x, int y, int button){ //マスウが押される度にその座標を使って、新たにインスタンスを生成、配列に追加する Hako h; h.init(x,y,100,ofGetFrameNum()%255); v.push_back(h); }