今見てくれてる人の数

ホンキートンク・スーダラブルース

ゆるコラム、oF、邦ロックや歌謡曲、小説の感想。ドラクエ、JavaScript、ドラゴンボール超など。湘南あたりを転がってる石コロのゆるゆる生きてく超雑多な軌跡です。

【openFrameworks 冒険記6】優しいsin波入門。あと8の字も描いてみる。

さて、今回はsin波描いてみます。

まずはこちらの基礎からどうぞ!

www.sudara-bluse.tokyo

 

 

 

まずはxの値のみ動かして移動。

(上下は変わらず横一直線の動き。)

こんな感じです。

 

ついにsin波に挑戦!

f:id:sudara_bluse:20171110095451p:plain

参照:4.2 三角関数 | Yasushi Noguchi Class

 

できました!

 

 

先ほどのプログラムのyの値をsin()でいじくります。
ofGetFrameNum()というその時のフレームの値を常に取得し返してくれる関数を使用します。

sinの振動はsin()の中の値が0~6.28で完結。

sin(ofGetFrameNum() *0.05)くらいをかけてsinの中の値を小さくしましょう。

sinの値が大きすぎると上下運動が極端になります。

一波の揺れの大きさは、amplitude = 100.0; //振幅 で調節。

 

コード

 

 

八の字もできたー!

f:id:sudara_bluse:20171110103220p:plain

y座標の動きのスピードだけ2倍にしたら八の字もできました!

ofApp.cpp
//--------------------------------------------------------------
void ofApp::update(){
    
   float amplitude = 100.0; //振幅
float frequency = 0.05; // 角周波数


pos.x = amplitude * cos(frequency * ofGetFrameNum());
pos.y = amplitude * sin(frequency * ofGetFrameNum() * 2); } //-------------------------------------------------------------- void ofApp::draw(){ //原点を画面の中心点に
ofTranslate(ofGetWidth()/2, ofGetHeight()/2);

//青色に
ofSetColor(0, 0, 255,100);
ofDrawCircle(pos, 10); }

qiita.com

参考:わかりやすいです、あざっす!

 

 

 

理解は怪しいですが、螺旋もできました、、、

間隔調整のとこはようわからん。。

 

f:id:sudara_bluse:20171110155216p:plain

 

 

 

ofApp.cpp
void ofApp::draw(){
//原点を画面の中心点に ofTranslate(ofGetWidth()/2, ofGetHeight()/2); /* 螺旋を書く */
//螺旋の間隔調整 float r = 10 + (0.02 * ofGetFrameNum()) * 2;
ofVec2f pos; pos.x = cos(ofGetFrameNum()*0.01) * r; pos.y = sin(ofGetFrameNum()*0.01) * r;
//青色に
ofSetColor(0, 0, 255,100);
// 点を書く ofDrawCircle(pos, 1); }

 

 

あと音量取得してこれと組み合わせたいな!

ではまたー