SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
‣
‣


‣
‣
‣


‣
‣
‣
‣
‣
‣
‣


‣
‣
#pragma	 once

#include	 "ofMain.h"

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	 


 ofVec2f	 pos;	 //位置を記録するための変数(正確にはオブジェクト)
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

     //更新を秒間60コマに(fps)


 ofBackgroundHex(0x000000);	 //背景色を黒に


 pos.x	 =	 ofGetWidth()/2;

 /初期位置を画面の中心に:x
                             /


 pos.y	 =	 ofGetHeight()/2;	 //初期位置を画面の中心に:y
}

void	 testApp::update(){


 pos.x	 +=	 4.0;	 //位置を更新:x


 pos.y	 +=	 3.0;	 //位置を更新:y


 //画面の端まできたら、反対方向から出現
	  if	 (pos.x	 >	 ofGetWidth())	 {pos.x	 =	 0;}
	  if	 (pos.x	 <	 0)	 {pos.x	 =	 ofGetWidth();}
	  if	 (pos.y	 >	 ofGetHeight())	 {pos.y	 =	 0;}
	  if	 (pos.y	 <	 0)	 {pos.y	 =	 ofGetHeight();}
}

void	 testApp::draw(){


 ofSetHexColor(0x3399ff);	 //描画する色を指定


 ofCircle(pos.x,	 pos.y,	 20);	 //更新された値を利用して円を描く
}
‣
‣
‣
‣
‣
‣
‣
#pragma	 once

#include	 "ofMain.h"

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	 


 ofVec2f	 pos;	 //位置を記録するための変数(正確にはオブジェクト)


 ofVec2f	 vel;	 //パーティクルの速度(Velocity)
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

   //更新を秒間60コマに(fps)


 ofBackgroundHex(0x000000);	 //背景色を黒に



   //初期位置を画面の中心に
	    pos.x	 =	 ofGetWidth()/2;
	    pos.y	 =	 ofGetHeight()/2;



   //速度をランダムに決定
	    vel.x	 =	 ofRandom(-10,	 10);
	    vel.y	 =	 ofRandom(-10,	 10);
}

void	 testApp::update(){


 //位置を更新する
	  pos	 +=	 vel;



   //画面の端に来たら反対側へ


   if	 (pos.x	 >	 ofGetWidth())	 pos.x	 =	 0;	 	 //右


   if	 (pos.x	 <	 0)	 pos.x	 =	 ofGetWidth();	 	 //左


   if	 (pos.y	 >	 ofGetHeight())	 pos.y	 =	 0;	 //下


   if	 (pos.y	 <	 0)	 pos.y	 =	 ofGetHeight();	 //上
}
‣

void	 testApp::draw(){


 ofSetHexColor(0x3399ff);	 //描画する色を指定


 ofCircle(pos.x,	 pos.y,	 4);

 //更新された値を利用して円を描く
}
‣
‣
‣
‣
‣

      (      )

    pos[0]
    pos[1]
    pos[2]       NUM
‣



      (pos)     (vel)

    pos[0]    vel[0]

    pos[1]    vel[1]

    pos[2]    vel[2]
‣
‣

ofVec2f	 pos[100];	 //位置の配列
ofVec2f	 vel[100];	 //パーティクルの速度(Velocity)




‣
‣

pos[0],	 pos[1],	 pos[2],	 pos[3]	 ...
‣
‣

for	 (【初期化】;【ループの継続条件】;【カウンタ変数の更新】;)	 {

	 	 	 	 	 	 	 	 	 	 	 【くりかえし実行する処理】

}	 


‣

for	 (int	 i	 =	 0;	 i	 <	 100;	 i++)	 {

	 	 	 	 【くりかえし実行する処理】

}
‣
‣


for	 (int	 i	 =	 0;	 i	 <	 100;	 i++)	 {	 //100回くりかえし



 //速度をランダムに決定
	  vel[i].x	 =	 ofRandom(-10,	 10);
	  vel[i].y	 =	 ofRandom(-10,	 10);	  	 

}


‣
‣
#pragma	 once
#include	 "ofMain.h"
#define	 NUM	 100

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	 


 ofVec2f	 pos[NUM];	 //位置の配列


 ofVec2f	 vel[NUM];	 //パーティクルの速度(Velocity)
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

 //更新を秒間60コマに(fps)


 ofBackgroundHex(0x000000);	 //背景色を黒に


 for	 (int	 i	 =	 0;	 i	 <	 NUM;	 i++)	 {	 //NUM回くりかえし


 

      //初期位置を画面の中心に
	  	       pos[i].x	 =	 ofGetWidth()/2;
	  	       pos[i].y	 =	 ofGetHeight()/2;


 

      //速度をランダムに決定
	  	       vel[i].x	 =	 ofRandom(-10,	 10);
	  	       vel[i].y	 =	 ofRandom(-10,	 10);	       	 
	  }
}

void	 testApp::update(){


 for	 (int	 i	 =	 0;	 i	 <	 NUM;	 i++)	 {	 //NUM回くりかえし


 

      //位置を更新する
	  	       pos[i]	 +=	 vel[i];


 

      //画面の端に来たら反対側へ


 

      if	 (pos[i].x	 >	 ofGetWidth())	 pos[i].x	 =	 0;	 	 //右


 

      if	 (pos[i].x	 <	 0)	 pos[i].x	 =	 ofGetWidth();	 	 //左


 

      if	 (pos[i].y	 >	 ofGetHeight())	 pos[i].y	 =	 0;	 //下


 

      if	 (pos[i].y	 <	 0)	 pos[i].y	 =	 ofGetHeight();	 //上
	  }
}
‣

void	 testApp::draw(){


 ofSetHexColor(0x3399ff);	 //描画する色を指定


 for	 (int	 i	 =	 0;	 i	 <	 NUM;	 i++)	 {	 //NUM回くりかえし


 

     ofCircle(pos[i].x,	 pos[i].y,	 4);	 //更新された値を利用して円を描く
	  }
}
‣
‣



‣
‣
‣


‣
‣



‣
‣
Particle	 p[100];



‣
‣

vector	 <Particle>	 p;
‣


‣
‣
    particles.push_back(p);

‣
    particles.pop_back();

‣
    particles.clear();
‣


‣
‣
#pragma	 once
#include	 "ofMain.h"

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	  void	 mouseDragged(int	 x,	 int	 y,	 int	 button);
	  void	 keyReleased(int	 key);
	 


 vector<ofVec2f>	 pos;	 //位置の可変配列


 vector<ofVec2f>	 vel;	 //パーティクルの速度の可変配列
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

   //更新を秒間60コマに(fps)


 ofEnableBlendMode(OF_BLENDMODE_ADD);	 //色を加算合成に


 ofBackgroundHex(0x000000);	 //背景色を黒に
}

void	 testApp::update(){


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし


 

     //位置を更新する
	  	      pos[i]	 +=	 vel[i];


 

     //画面の端に来たら反対側へ


 

     if	 (pos[i].x	 >	 ofGetWidth())	 pos[i].x	 =	 0;	 	 //右


 

     if	 (pos[i].x	 <	 0)	 pos[i].x	 =	 ofGetWidth();	 	 //左


 

     if	 (pos[i].y	 >	 ofGetHeight())	 pos[i].y	 =	 0;	 //下


 

     if	 (pos[i].y	 <	 0)	 pos[i].y	 =	 ofGetHeight();	 //上
	  }
}
‣

void	 testApp::draw(){


 ofSetHexColor(0x3399ff);	 //描画する色を指定


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし


 

     ofCircle(pos[i].x,	 pos[i].y,	 4);	 //更新された値を利用して円を描く
	  }


 //現在の数とフレームレートを表示
	  string	 log;
	  log	 =	 "particle	 num	 =	 "	 +	 ofToString(pos.size(),	 0)	 +	 "n";
	  log	 +=	 "framerate	 =	 "	 +	 ofToString(ofGetFrameRate(),	 4);
	  ofSetHexColor(0xffffff);
	  ofDrawBitmapString(log,	 20,	 20);
}

void	 testApp::mouseDragged(int	 x,	 int	 y,	 int	 button)	 {


 ofVec2f	 p;	 //位置の変数を一時的に生成


 p.set(x,	 y);	 //位置をマウスをクリックした場所に設定


 pos.push_back(p);	 //可変配列の末尾に位置を追加


 ofVec2f	 v;	 //速度の変数を一時的に生成


 v.set(ofRandom(-1,	 1),	 ofRandom(-1,	 1));	 //速度を設定


 vel.push_back(v);	 //可変配列の末尾に速度を追加
}
‣

void	 testApp::keyReleased(int	 key)	 {


 if	 (key	 ==	 'c')	 {	 //「c」キーを押したら


 

     pos.clear();	 //位置の配列を初期化


 

     vel.clear();	 //速度の配列を初期化
	  }


 if	 (key	 ==	 'f')	 {	 //「f」キーを押したら


 

     ofToggleFullscreen();	 //フルスクリーンon/off
	  }
}
‣
‣
‣


‣


‣
ofColor	 col;	 //色のオブジェクトをインスタンス化
col.r	 =	 31;	 	 //redを設定
col.g	 =	 127;	 //greenを設定
col.b	 =	 255;	 //blueを設定
‣
#pragma	 once
#include	 "ofMain.h"

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	  void	 mouseDragged(int	 x,	 int	 y,	 int	 button);
	  void	 keyReleased(int	 key);
	 


 vector<ofVec2f>	 pos;	 //位置の可変配列


 vector<ofVec2f>	 vel;	 //パーティクルの速度の可変配列


 vector<ofColor>	 col;	 //色の可変配列
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

   //更新を秒間60コマに(fps)


 ofEnableBlendMode(OF_BLENDMODE_ADD);	 //色を加算合成に


 ofBackgroundHex(0x000000);	 //背景色を黒に
}

void	 testApp::update(){


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし


 

     //位置を更新する
	  	      pos[i]	 +=	 vel[i];


 

     //画面の端に来たら反対側へ


 

     if	 (pos[i].x	 >	 ofGetWidth())	 pos[i].x	 =	 0;	 	 //右


 

     if	 (pos[i].x	 <	 0)	 pos[i].x	 =	 ofGetWidth();	 	 //左


 

     if	 (pos[i].y	 >	 ofGetHeight())	 pos[i].y	 =	 0;	 //下


 

     if	 (pos[i].y	 <	 0)	 pos[i].y	 =	 ofGetHeight();	 //上
	  }
}
‣
void	 testApp::draw(){


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし


 

     ofSetColor(col[i].r,	 col[i].g,	 col[i].b);//ランダムな色で描画


 

     ofCircle(pos[i].x,	 pos[i].y,	 4);	 //更新された値を利用して円を描く
	  }



   //現在の数とフレームレートを表示
	    string	 log;
	    log	 =	 "particle	 num	 =	 "	 +	 ofToString(pos.size(),	 0)	 +	 "n";
	    log	 +=	 "framerate	 =	 "	 +	 ofToString(ofGetFrameRate(),	 4);
	    ofSetHexColor(0xffffff);
	    ofDrawBitmapString(log,	 20,	 20);
}
‣
void	 testApp::mouseDragged(int	 x,	 int	 y,	 int	 button)	 {


 ofVec2f	 p;	 //位置の変数を一時的に生成


 p.set(x,	 y);	 //位置をマウスをクリックした場所に設定


 pos.push_back(p);	 //可変配列の末尾に位置を追加


 ofVec2f	 v;	 //速度の変数を一時的に生成


 v.set(ofRandom(-1,	 1),	 ofRandom(-1,	 1));	 //速度を設定


 vel.push_back(v);	 //可変配列の末尾に速度を追加


 ofColor	 c;	 //色を一時的に生成


 c.r	 =	 ofRandom(255);	 //red成分をランダムに


 c.g	 =	 ofRandom(255);	 //green成分をランダムに


 c.b	 =	 ofRandom(255);	 //blue成分をランダムに
	  col.push_back(c);
}

void	 testApp::keyReleased(int	 key)	 {


 if	 (key	 ==	 'c')	 {	 //「c」キーを押したら


 

     pos.clear();	 //位置の配列を初期化


 

     vel.clear();	 //速度の配列を初期化
	  }


 if	 (key	 ==	 'f')	 {	 //「f」キーを押したら


 

     ofToggleFullscreen();	 //フルスクリーンon/off
	  }
}
‣
‣


‣
‣


‣
‣
‣
‣
#pragma	 once
#include	 "ofMain.h"

class	 testApp	 :	 public	 ofBaseApp{
	 
public:
	  void	 setup();
	  void	 update();
	  void	 draw();
	  void	 mouseDragged(int	 x,	 int	 y,	 int	 button);
	  void	 keyReleased(int	 key);
	 


 vector<ofVec3f>	 pos;	 //位置の可変配列(3D)


 vector<ofVec3f>	 vel;	 //パーティクルの速度の可変配列(3D)
};
‣
#include	 "testApp.h"

void	 testApp::setup(){


 ofSetFrameRate(60);

   //更新を秒間60コマに(fps)


 ofEnableBlendMode(OF_BLENDMODE_ADD);	 //色を加算合成に


 ofBackgroundHex(0x000000);	 //背景色を黒に
}

void	 testApp::update(){


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし


 

     //位置を更新する
	  	      pos[i]	 +=	 vel[i];
	  }
}

void	 testApp::draw(){


 glEnable(GL_DEPTH_TEST);	 //奥行の判定をする
	  ofSetHexColor(0x3399ff);


 for	 (int	 i	 =	 0;	 i	 <	 pos.size();	 i++)	 {	 //NUM回くりかえし
	  	      ofPushMatrix();


 

     ofTranslate(pos[i]);	 //位置を設定


 

     ofCircle(0,	 0,	 4);	 //更新された値を利用して円を描く
	  	      ofPopMatrix();
	  }
	  glDisable(GL_DEPTH_TEST);
‣


   //現在の数とフレームレートを表示
	    string	 log;
	    log	 =	 "particle	 num	 =	 "	 +	 ofToString(pos.size(),	 0)	 +	 "n";
	    log	 +=	 "framerate	 =	 "	 +	 ofToString(ofGetFrameRate(),	 4);
	    ofSetHexColor(0xffffff);
	    ofDrawBitmapString(log,	 20,	 20);
}

void	 testApp::mouseDragged(int	 x,	 int	 y,	 int	 button)	 {


 ofVec3f	 p;	 //位置の変数を一時的に生成


 p.set(x,	 y);	 //位置をマウスをクリックした場所に設定


 pos.push_back(p);	 //可変配列の末尾に位置を追加



   ofVec3f	 v;	 //速度の変数を一時的に生成


   v.set(ofRandom(-1,	 1),	 ofRandom(-1,	 1),	 ofRandom(-1,	 1));//速度を設定


   vel.push_back(v);	 //可変配列の末尾に速度を追加
}
‣
void	 testApp::keyReleased(int	 key)	 {


 if	 (key	 ==	 'c')	 {	 //「c」キーを押したら


 

     pos.clear();	 //位置の配列を初期化


 

     vel.clear();	 //速度の配列を初期化
	  }



   if	 (key	 ==	 'f')	 {	 //「f」キーを押したら


   

     ofToggleFullscreen();	 //フルスクリーンon/off
	    }
}
‣
‣


‣


‣
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B

Weitere ähnliche Inhalte

Was ist angesagt?

Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するAtsushi Tadokoro
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvAtsushi Tadokoro
 
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門Atsushi Tadokoro
 
OpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能についてOpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能についてFumiya Nozaki
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)HironoriKanazawa
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1hirokazutanaka
 
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...Deep Learning JP
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングSho Hosoda
 
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...Deep Learning JP
 
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionSIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionYusuke Uchida
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~ProjectAsura
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!historia_Inc
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-Fumiya Nozaki
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせLiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせTakuya Minagawa
 

Was ist angesagt? (20)

Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用する
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
 
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
 
OpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能についてOpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能について
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
 
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
[DL輪読会]Clebsch–Gordan Nets: a Fully Fourier Space Spherical Convolutional Neu...
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
 
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionSIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
Visual slam
Visual slamVisual slam
Visual slam
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせLiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせ
 

Andere mochten auch

openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIopenFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIAtsushi Tadokoro
 
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」teamLab Inc.
 
チームラボでアートをつくる展示カタリストとは. [Japanese only]
チームラボでアートをつくる展示カタリストとは. [Japanese only]チームラボでアートをつくる展示カタリストとは. [Japanese only]
チームラボでアートをつくる展示カタリストとは. [Japanese only]Kento Takemura
 
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習BopenFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習BAtsushi Tadokoro
 
チームラボ流 デジタルマーケティングにおけるクラウド活用術
チームラボ流 デジタルマーケティングにおけるクラウド活用術チームラボ流 デジタルマーケティングにおけるクラウド活用術
チームラボ流 デジタルマーケティングにおけるクラウド活用術Keisuke Kadoyama
 
ゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみたゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみた秀和 福永
 

Andere mochten auch (6)

openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIopenFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
 
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」
 
チームラボでアートをつくる展示カタリストとは. [Japanese only]
チームラボでアートをつくる展示カタリストとは. [Japanese only]チームラボでアートをつくる展示カタリストとは. [Japanese only]
チームラボでアートをつくる展示カタリストとは. [Japanese only]
 
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習BopenFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B
 
チームラボ流 デジタルマーケティングにおけるクラウド活用術
チームラボ流 デジタルマーケティングにおけるクラウド活用術チームラボ流 デジタルマーケティングにおけるクラウド活用術
チームラボ流 デジタルマーケティングにおけるクラウド活用術
 
ゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみたゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみた
 

Ähnlich wie openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B

Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイントYohei Munesada
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようRyota Shiroguchi
 
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceupHtml canvas shooting_and_performanceup
Html canvas shooting_and_performanceupYohei Munesada
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2dHiroshi Oyamada
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルTakashi Yoshinaga
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0Wataru Kani
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本reona396
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現するiTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現するAtsushi Tadokoro
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるShinichiAoyagi
 
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンenchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンRyota Shiroguchi
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3yaju88
 
寺子屋クスール @STATION5
寺子屋クスール @STATION5寺子屋クスール @STATION5
寺子屋クスール @STATION5biscuitjam
 
PBL1-v1-006j.pptx
PBL1-v1-006j.pptxPBL1-v1-006j.pptx
PBL1-v1-006j.pptxNAIST
 

Ähnlich wie openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B (20)

Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
 
P5utda day3
P5utda day3P5utda day3
P5utda day3
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceupHtml canvas shooting_and_performanceup
Html canvas shooting_and_performanceup
 
Ssaw08 0916
Ssaw08 0916Ssaw08 0916
Ssaw08 0916
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現するiTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
 
CG2013 05
CG2013 05CG2013 05
CG2013 05
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみる
 
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョンenchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
 
寺子屋クスール @STATION5
寺子屋クスール @STATION5寺子屋クスール @STATION5
寺子屋クスール @STATION5
 
PBL1-v1-006j.pptx
PBL1-v1-006j.pptxPBL1-v1-006j.pptx
PBL1-v1-006j.pptx
 

Mehr von Atsushi Tadokoro

「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望Atsushi Tadokoro
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようAtsushi Tadokoro
 
Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Atsushi Tadokoro
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2Atsushi Tadokoro
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Atsushi Tadokoro
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションAtsushi Tadokoro
 
Interactive Music II Processing基本
Interactive Music II Processing基本Interactive Music II Processing基本
Interactive Music II Processing基本Atsushi Tadokoro
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Atsushi Tadokoro
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス Atsushi Tadokoro
 
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Atsushi Tadokoro
 
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くiTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くAtsushi Tadokoro
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリAtsushi Tadokoro
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使うAtsushi Tadokoro
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Atsushi Tadokoro
 
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得Atsushi Tadokoro
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングAtsushi Tadokoro
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Atsushi Tadokoro
 
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するiTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するAtsushi Tadokoro
 
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!Atsushi Tadokoro
 

Mehr von Atsushi Tadokoro (20)

「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめよう
 
Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
 
Interactive Music II Processing基本
Interactive Music II Processing基本Interactive Music II Processing基本
Interactive Music II Processing基本
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
 
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
 
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くiTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
 
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
 
Tamabi media131118
Tamabi media131118Tamabi media131118
Tamabi media131118
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
 
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するiTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
 
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
 

openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B

  • 1.
  • 3.
  • 6. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); ofVec2f pos; //位置を記録するための変数(正確にはオブジェクト) };
  • 7. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofBackgroundHex(0x000000); //背景色を黒に pos.x = ofGetWidth()/2; /初期位置を画面の中心に:x / pos.y = ofGetHeight()/2; //初期位置を画面の中心に:y } void testApp::update(){ pos.x += 4.0; //位置を更新:x pos.y += 3.0; //位置を更新:y //画面の端まできたら、反対方向から出現 if (pos.x > ofGetWidth()) {pos.x = 0;} if (pos.x < 0) {pos.x = ofGetWidth();} if (pos.y > ofGetHeight()) {pos.y = 0;} if (pos.y < 0) {pos.y = ofGetHeight();} } void testApp::draw(){ ofSetHexColor(0x3399ff); //描画する色を指定 ofCircle(pos.x, pos.y, 20); //更新された値を利用して円を描く }
  • 8.
  • 9.
  • 11. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); ofVec2f pos; //位置を記録するための変数(正確にはオブジェクト) ofVec2f vel; //パーティクルの速度(Velocity) };
  • 12. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofBackgroundHex(0x000000); //背景色を黒に //初期位置を画面の中心に pos.x = ofGetWidth()/2; pos.y = ofGetHeight()/2; //速度をランダムに決定 vel.x = ofRandom(-10, 10); vel.y = ofRandom(-10, 10); } void testApp::update(){ //位置を更新する pos += vel; //画面の端に来たら反対側へ if (pos.x > ofGetWidth()) pos.x = 0; //右 if (pos.x < 0) pos.x = ofGetWidth(); //左 if (pos.y > ofGetHeight()) pos.y = 0; //下 if (pos.y < 0) pos.y = ofGetHeight(); //上 }
  • 13. ‣ void testApp::draw(){ ofSetHexColor(0x3399ff); //描画する色を指定 ofCircle(pos.x, pos.y, 4); //更新された値を利用して円を描く }
  • 14.
  • 15.
  • 16. ‣ ‣ ‣ ‣ ( ) pos[0] pos[1] pos[2] NUM
  • 17. (pos) (vel) pos[0] vel[0] pos[1] vel[1] pos[2] vel[2]
  • 18. ‣ ‣ ofVec2f pos[100]; //位置の配列 ofVec2f vel[100]; //パーティクルの速度(Velocity) ‣ ‣ pos[0], pos[1], pos[2], pos[3] ...
  • 19. ‣ ‣ for (【初期化】;【ループの継続条件】;【カウンタ変数の更新】;) { 【くりかえし実行する処理】 } ‣ for (int i = 0; i < 100; i++) { 【くりかえし実行する処理】 }
  • 20. ‣ ‣ for (int i = 0; i < 100; i++) { //100回くりかえし //速度をランダムに決定 vel[i].x = ofRandom(-10, 10); vel[i].y = ofRandom(-10, 10); } ‣
  • 21. ‣ #pragma once #include "ofMain.h" #define NUM 100 class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); ofVec2f pos[NUM]; //位置の配列 ofVec2f vel[NUM]; //パーティクルの速度(Velocity) };
  • 22. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofBackgroundHex(0x000000); //背景色を黒に for (int i = 0; i < NUM; i++) { //NUM回くりかえし //初期位置を画面の中心に pos[i].x = ofGetWidth()/2; pos[i].y = ofGetHeight()/2; //速度をランダムに決定 vel[i].x = ofRandom(-10, 10); vel[i].y = ofRandom(-10, 10); } } void testApp::update(){ for (int i = 0; i < NUM; i++) { //NUM回くりかえし //位置を更新する pos[i] += vel[i]; //画面の端に来たら反対側へ if (pos[i].x > ofGetWidth()) pos[i].x = 0; //右 if (pos[i].x < 0) pos[i].x = ofGetWidth(); //左 if (pos[i].y > ofGetHeight()) pos[i].y = 0; //下 if (pos[i].y < 0) pos[i].y = ofGetHeight(); //上 } }
  • 23. ‣ void testApp::draw(){ ofSetHexColor(0x3399ff); //描画する色を指定 for (int i = 0; i < NUM; i++) { //NUM回くりかえし ofCircle(pos[i].x, pos[i].y, 4); //更新された値を利用して円を描く } }
  • 24.
  • 25.
  • 28. ‣ ‣ ‣ particles.push_back(p); ‣ particles.pop_back(); ‣ particles.clear();
  • 30. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); void mouseDragged(int x, int y, int button); void keyReleased(int key); vector<ofVec2f> pos; //位置の可変配列 vector<ofVec2f> vel; //パーティクルの速度の可変配列 };
  • 31. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofEnableBlendMode(OF_BLENDMODE_ADD); //色を加算合成に ofBackgroundHex(0x000000); //背景色を黒に } void testApp::update(){ for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし //位置を更新する pos[i] += vel[i]; //画面の端に来たら反対側へ if (pos[i].x > ofGetWidth()) pos[i].x = 0; //右 if (pos[i].x < 0) pos[i].x = ofGetWidth(); //左 if (pos[i].y > ofGetHeight()) pos[i].y = 0; //下 if (pos[i].y < 0) pos[i].y = ofGetHeight(); //上 } }
  • 32. ‣ void testApp::draw(){ ofSetHexColor(0x3399ff); //描画する色を指定 for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし ofCircle(pos[i].x, pos[i].y, 4); //更新された値を利用して円を描く } //現在の数とフレームレートを表示 string log; log = "particle num = " + ofToString(pos.size(), 0) + "n"; log += "framerate = " + ofToString(ofGetFrameRate(), 4); ofSetHexColor(0xffffff); ofDrawBitmapString(log, 20, 20); } void testApp::mouseDragged(int x, int y, int button) { ofVec2f p; //位置の変数を一時的に生成 p.set(x, y); //位置をマウスをクリックした場所に設定 pos.push_back(p); //可変配列の末尾に位置を追加 ofVec2f v; //速度の変数を一時的に生成 v.set(ofRandom(-1, 1), ofRandom(-1, 1)); //速度を設定 vel.push_back(v); //可変配列の末尾に速度を追加 }
  • 33. ‣ void testApp::keyReleased(int key) { if (key == 'c') { //「c」キーを押したら pos.clear(); //位置の配列を初期化 vel.clear(); //速度の配列を初期化 } if (key == 'f') { //「f」キーを押したら ofToggleFullscreen(); //フルスクリーンon/off } }
  • 34.
  • 35.
  • 36. ‣ ‣ ‣ ‣ ofColor col; //色のオブジェクトをインスタンス化 col.r = 31; //redを設定 col.g = 127; //greenを設定 col.b = 255; //blueを設定
  • 37. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); void mouseDragged(int x, int y, int button); void keyReleased(int key); vector<ofVec2f> pos; //位置の可変配列 vector<ofVec2f> vel; //パーティクルの速度の可変配列 vector<ofColor> col; //色の可変配列 };
  • 38. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofEnableBlendMode(OF_BLENDMODE_ADD); //色を加算合成に ofBackgroundHex(0x000000); //背景色を黒に } void testApp::update(){ for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし //位置を更新する pos[i] += vel[i]; //画面の端に来たら反対側へ if (pos[i].x > ofGetWidth()) pos[i].x = 0; //右 if (pos[i].x < 0) pos[i].x = ofGetWidth(); //左 if (pos[i].y > ofGetHeight()) pos[i].y = 0; //下 if (pos[i].y < 0) pos[i].y = ofGetHeight(); //上 } }
  • 39. ‣ void testApp::draw(){ for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし ofSetColor(col[i].r, col[i].g, col[i].b);//ランダムな色で描画 ofCircle(pos[i].x, pos[i].y, 4); //更新された値を利用して円を描く } //現在の数とフレームレートを表示 string log; log = "particle num = " + ofToString(pos.size(), 0) + "n"; log += "framerate = " + ofToString(ofGetFrameRate(), 4); ofSetHexColor(0xffffff); ofDrawBitmapString(log, 20, 20); }
  • 40. ‣ void testApp::mouseDragged(int x, int y, int button) { ofVec2f p; //位置の変数を一時的に生成 p.set(x, y); //位置をマウスをクリックした場所に設定 pos.push_back(p); //可変配列の末尾に位置を追加 ofVec2f v; //速度の変数を一時的に生成 v.set(ofRandom(-1, 1), ofRandom(-1, 1)); //速度を設定 vel.push_back(v); //可変配列の末尾に速度を追加 ofColor c; //色を一時的に生成 c.r = ofRandom(255); //red成分をランダムに c.g = ofRandom(255); //green成分をランダムに c.b = ofRandom(255); //blue成分をランダムに col.push_back(c); } void testApp::keyReleased(int key) { if (key == 'c') { //「c」キーを押したら pos.clear(); //位置の配列を初期化 vel.clear(); //速度の配列を初期化 } if (key == 'f') { //「f」キーを押したら ofToggleFullscreen(); //フルスクリーンon/off } }
  • 41.
  • 42.
  • 45. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); void mouseDragged(int x, int y, int button); void keyReleased(int key); vector<ofVec3f> pos; //位置の可変配列(3D) vector<ofVec3f> vel; //パーティクルの速度の可変配列(3D) };
  • 46. ‣ #include "testApp.h" void testApp::setup(){ ofSetFrameRate(60); //更新を秒間60コマに(fps) ofEnableBlendMode(OF_BLENDMODE_ADD); //色を加算合成に ofBackgroundHex(0x000000); //背景色を黒に } void testApp::update(){ for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし //位置を更新する pos[i] += vel[i]; } } void testApp::draw(){ glEnable(GL_DEPTH_TEST); //奥行の判定をする ofSetHexColor(0x3399ff); for (int i = 0; i < pos.size(); i++) { //NUM回くりかえし ofPushMatrix(); ofTranslate(pos[i]); //位置を設定 ofCircle(0, 0, 4); //更新された値を利用して円を描く ofPopMatrix(); } glDisable(GL_DEPTH_TEST);
  • 47. //現在の数とフレームレートを表示 string log; log = "particle num = " + ofToString(pos.size(), 0) + "n"; log += "framerate = " + ofToString(ofGetFrameRate(), 4); ofSetHexColor(0xffffff); ofDrawBitmapString(log, 20, 20); } void testApp::mouseDragged(int x, int y, int button) { ofVec3f p; //位置の変数を一時的に生成 p.set(x, y); //位置をマウスをクリックした場所に設定 pos.push_back(p); //可変配列の末尾に位置を追加 ofVec3f v; //速度の変数を一時的に生成 v.set(ofRandom(-1, 1), ofRandom(-1, 1), ofRandom(-1, 1));//速度を設定 vel.push_back(v); //可変配列の末尾に速度を追加 }
  • 48. ‣ void testApp::keyReleased(int key) { if (key == 'c') { //「c」キーを押したら pos.clear(); //位置の配列を初期化 vel.clear(); //速度の配列を初期化 } if (key == 'f') { //「f」キーを押したら ofToggleFullscreen(); //フルスクリーンon/off } }
  • 49.
  • 50.