not good but great

プログラミング、アート、映画・本の感想について書きます。

動的配列を用いて、マウスドラッグしたところからパーティクルを生成する

demo


ドラッグしたところからパーティクルを生成しています。「c」キーを押すとクリアになります。
・参考
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF

パーティクルの数がわからない

パーティクルの数が定数ではないときはどうすれば良いのでしょうか。vector(動的配列)を使います。

宣言の仕方

//可変長配列
vector<Particle> particle;

vectorの後にかっこをつけてクラス名を書けば、宣言できます。

クラスの説明は前のエントリを参照してください。
openFrameworksでクラスを作成して、個々のパーティクルに異なる大きさ、速度、色を設定する - not good but great

配列の操作

array.push_back(hoge);//hogeを末尾に追加
array.pop_back();//末尾の要素を削除
array.clear();//全ての要素をクリア

シンプルでわかりやすいです。

code

ofApp.cpp

void ofApp::mouseDragged(int x, int y, int button){
    Particle p;
    p.setup();
    p.position.x = x;
    p.position.y = y;
    particle.push_back(p);
}

マウスドラッグして、座標をそのままパーティクルの中心に設定します。

クリアキーの設定

void ofApp::keyReleased(int key){
    if(key == 'c'){
        particle.clear();
    }
}

暖色系の色にする

void Particle::setup(){
    //半径
    radius = ofRandom(10, 25);
    
    //円の位置
    velocity.x = ofRandom(-10, 10);
    velocity.y = ofRandom(-10, 10);
    
    //円の色
    r = 255;
    g = ofRandom(91, 202);
    b = 64;
}

redとblueを定数にして、greenの範囲を設定して乱数を作成すれば、暖色系っぽくなります。