More Related Content
PDF
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション PDF
Media Art II openFrameworks 複数のシーンの管理・切替え PDF
20分くらいでわかった気分になれるC++20コルーチン PPTX
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models PDF
PDF
PPTX
DjangoでさくっとWeb アプリケーション開発をする話 PDF
What's hot
PDF
PDF
PDF
PDF
PDF
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習 PDF
PPTX
PPTX
RLSを用いたマルチテナント実装 for Django PDF
PDF
PDF
Java開発の強力な相棒として今すぐ使えるGroovy PDF
PPTX
【修正版】Django + SQLAlchemy: シンプルWay PPTX
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ... PDF
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版) PDF
Introduction to Prioritized Experience Replay PDF
PDF
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機 PDF
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料) Viewers also liked
PDF
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII PDF
PDF
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII PDF
チームラボでアートをつくる展示カタリストとは. [Japanese only] PDF
teamLab Meet-up #6「チームラボ、工作室と現場で仕事をするエンジニアが次にすること」 PDF
チームラボ流 デジタルマーケティングにおけるクラウド活用術 PDF
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B PDF
openFrameworksとは何か? - 芸大 グラフィクスプログラミング演習B Similar to openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
PDF
Media Art II 2013 第5回:openFrameworks Addonを使用する PDF
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL PDF
PDF
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」 PDF
メディア・アート II 第1回: ガイダンス openFrameworks入門 PDF
板ポリだけで めちゃカッコいい グラフィックスを出す! PDF
openFrameworks Workshop in Kanazawa v001 PDF
Interactive Music II Processingによるアニメーション PDF
Androidプログラミング初心者のためのゲームアプリ開発入門 PDF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF PPTX
PPTX
PDF
cocos2d-xにおけるBox2Dの利用方法および便利なツール PDF
Cocos2d-xで画像周りを自由自在に表示してみよう PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる PDF
PDF
とことんF#よぷよ! F# + XNA ゲームプログラミング入門 PDF
iTamabi 13 第3回:iPhoneアプリ実践開発講座 1 画像ファイルの読み込み 画像でアニメーションを作成する KEY
More from Atsushi Tadokoro
PDF
Interactive Music II ProcessingとSuperColliderの連携 -2 PDF
Interactive Music II ProcessingとSuperColliderの連携1 PDF
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス PDF
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control) PDF
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング PDF
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携 PDF
PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望 PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1 PDF
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く PDF
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得 PDF
PDF
coma Creators session vol.2 PDF
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2 PDF
Interactive Music II Processing基本 PDF
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う PDF
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ PDF
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう! PDF
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
- 2.
- 4.
- 5.
- 6.
- 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.
- 10.
- 11.
- 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.
- 14.
- 16.
‣
‣
‣
‣
( )
pos[0]
pos[1]
pos[2] NUM
- 17.
‣
(pos) (vel)
pos[0] vel[0]
pos[1] vel[1]
pos[2] vel[2]
- 18.
- 19.
- 20.
‣
‣
for (int i = 0; i < 100; i++) { //100回くりかえし
//速度をランダムに決定
vel[i].x = ofRandom(-10, 10);
vel[i].y = ofRandom(-10, 10);
}
‣
- 21.
- 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.
- 24.
- 26.
- 27.
- 28.
‣
‣
‣
particles.push_back(p);
‣
particles.pop_back();
‣
particles.clear();
- 29.
- 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.
- 36.
- 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.
- 43.
- 44.
- 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.
- 51.