not good but great

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

update()を使って円を回転させるアニメーションを作成する

アニメーションさせてみる

f:id:naoyashiga:20140330200021p:plain
キャプチャ画像なので動きがわかりませんが、画面を中心として、円が回転します。
・参考
yoppa org – openFrameworks入門

Code

変数定義

double angle;//傾きの角度

testApp.cpp内で使える変数として、angleを定義します。

setup

void testApp::setup(){
    //背景色
    ofBackground(0, 0, 0);
    //フレームレート
    ofSetFrameRate(60);
    //角度を初期化
    angle = 0;
}

setup()は最初に実行される関数です。背景色、フレームレートを定義します。

update

void testApp::update(){
    //角度増加
    angle += 1;
}

update()は繰り返し実行される関数です。update()された後にdraw()が実行されます。ここではangleの値を増加させています。

draw

void testApp::draw(){
    //現在の座標系を保存
    ofPushMatrix();
    //座標系の(0,0)を画面の中心に
    ofTranslate(ofGetWidth() / 2, ofGetHeight() / 2);
    //z軸回転
    ofRotateZ(angle);
    //透明度を使用可能にする
    ofEnableAlphaBlending();
    //混色を加算混食に
    glBlendFunc(GL_ONE, GL_ONE);
    //塗り
    ofSetColor(100, 100, 100);
    //円
    ofEllipse(30, 30, 100, 100);
    //座標系を復元
    ofPopMatrix();
}

draw()では描画に関係ある命令を書きます。ここでは座標系を移動させて、相対的に円の位置を決めています。座標の変換ができるのはoFの強みなのかもしれません。円の位置を定義するのがわかりやすいです。