SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
‣
‣


‣


‣
‣

‣
‣
‣
‣



    setup( )



    update( )



    draw( )
‣
‣



    setup( )



    update( )



    draw( )
‣
‣



    setup( )



    update( )



    draw( )
‣
‣



    setup( )



    update( )



    draw( )
‣
‣



    setup( )



    update( )



    draw( )
‣
‣
‣
‣


‣
‣


‣
‣

‣
‣

#pragma once

#include "ofMain.h"

class testApp : public ofBaseApp{
!
public:
! void setup();
! void update();
! void draw();
!
! ofVec2f pos; //                   (   )
};
‣

#pragma once

#include "ofMain.h"

class testApp : public ofBaseApp{
!
public:
! void setup();
! void update();
! void draw();
!
! ofVec2f pos; //                   (   )
};
     setup, update, draw
‣

#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);!    //         60   (fps)
!   ofBackgroundHex(0x000000); //
!   //
!   pos.x = ofGetWidth()/2;
!   pos.y = ofGetHeight()/2;
}

void testApp::update(){
! //
!   pos.x += 4.0; //pos.x = pos.x + 3.0
!   pos.y += 3.0; //pos.y = pos.y + 4.0
}

void testApp::draw(){
! ofSetHexColor(0x3399ff); //
!   ofCircle(pos.x, pos.y, 20);!    //
}
‣

#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);!    //         60   (fps)
!   ofBackgroundHex(0x000000); //
!   //
!   pos.x = ofGetWidth()/2;
!   pos.y = ofGetHeight()/2;
}

void testApp::update(){
! //
!   pos.x += 4.0; //pos.x = pos.x + 3.0
!   pos.y += 3.0; //pos.y = pos.y + 4.0
}

void testApp::draw(){
! ofSetHexColor(0x3399ff); //
!   ofCircle(pos.x, pos.y, 20);!    //
}
‣
‣
 ‣
                ofGetWidth()
           0




ofGetHeight()
‣


‣
‣


‣
‣

‣
‣


‣
‣
‣


‣

if (   ) {


}
‣

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();} //
‣

#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);
! ofBackgroundHex(0x000000);
! pos.x = ofGetWidth()/2;
! pos.y = ofGetHeight()/2;
}

void testApp::update(){
! pos.x += 4.0;
! pos.y += 3.0;
! 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);
}
‣
‣



‣
‣
‣
‣




    (0, 0)
‣
‣




    (0, 0)
‣


‣
‣
‣


‣
‣
‣
‣

#pragma once

#include "ofMain.h"

class testApp : public ofBaseApp{
!
public:
! void setup();
! void update();
! void draw();
!
! float angle; //
};
‣
#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);!    //        60     (fps)
!   ofBackgroundHex(0x000000); //
!   //
!   ofSetRectMode(OF_RECTMODE_CENTER);
}

void testApp::update(){
! angle += 10; //
}

void testApp::draw(){
! //
!   ofTranslate(ofGetWidth()/2, ofGetHeight()/2);
!   ofRotateZ(angle); //
!   //
!   ofSetHexColor(0x3399ff);
!   ofRect(0, 0, 200, 200);
}
‣
‣


‣
‣
‣
‣
‣

#pragma once

#include "ofMain.h"

class testApp : public ofBaseApp{
!
public:
! void setup();
! void update();
! void draw();
!
! float angle; //
};
‣
#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);!    //        60       (fps)
!   ofSetVerticalSync(true); //
!   ofBackgroundHex(0x000000); //
!   ofEnableBlendMode(OF_BLENDMODE_ADD);//
}

void testApp::update(){
! angle += 10; //
}
‣
void testApp::draw(){
! //
!   ofTranslate(ofGetWidth()/2, ofGetHeight()/2);
!   ofRotateZ(angle); //

!   ofPushMatrix(); //
!
!   //   1
!   ofSetHexColor(0xff0000);
!   ofCircle(80, 0, 100);
!   ofRotateZ(120); //
!   //   2
!   ofSetHexColor(0x00ff00);
!   ofCircle(80, 0, 100);
!   ofRotateZ(120); //
!   //   3
!   ofSetHexColor(0x0000ff);
!   ofCircle(80, 0, 100);
!
!   ofPopMatrix(); //
}
‣
‣



‣


‣
‣
#include "testApp.h"

void testApp::setup(){
! ofSetFrameRate(60);!    //        60       (fps)
!   ofSetVerticalSync(true); //
!   ofBackgroundHex(0x000000); //
!   ofEnableBlendMode(OF_BLENDMODE_ADD);//
!   ofSetCircleResolution(64); //
}

void testApp::update(){
! angle += mouseY / 4.0; //         Y
}
‣
void testApp::draw(){
! //
!   ofTranslate(ofGetWidth()/2, ofGetHeight()/2);
!   ofRotateZ(angle); //

!   ofPushMatrix(); //
!
!   //   1
!   ofSetHexColor(0xff0000);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!   ofRotateZ(120); //
!   //   2
!   ofSetHexColor(0x00ff00);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!   ofRotateZ(120); //
!   //   3
!   ofSetHexColor(0x0000ff);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!
!   ofPopMatrix(); //
}
‣
‣


‣
‣
‣
‣
‣
void testApp::draw(){
! //
!   ofTranslate(ofGetWidth()/2, ofGetHeight()/2);

!   ofRotateX(mouseY);
!   ofRotateZ(angle);

!   ofPushMatrix();

!   ofSetHexColor(0xff0000);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!   ofRotateZ(120);
!   ofSetHexColor(0x00ff00);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!   ofRotateZ(120);
!   ofSetHexColor(0x0000ff);
!   ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0);
!
!   ofPopMatrix();
}
‣
‣
‣


‣
‣


‣

‣

Contenu connexe

Tendances

デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro
 
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
 
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
Atsushi Tadokoro
 
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1
Atsushi Tadokoro
 

Tendances (20)

デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
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を使用する
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ
二分探索法で作る再帰呼び出しできるCプリプロセッサマクロ
 
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
A Brief History of UniRx/UniTask, IUniTaskSource in DepthA Brief History of UniRx/UniTask, IUniTaskSource in Depth
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
Effective modern c++ 8
Effective modern c++ 8Effective modern c++ 8
Effective modern c++ 8
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1
 

Plus de 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の連携 -2
Atsushi Tadokoro
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2
Atsushi 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 - ライブコーディング 2
Atsushi 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 - ライブコーディング 1
Atsushi 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
 

Plus de 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によるアニメーション
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実習 オリジナルの楽器を作ろう!
 
Geidai music131107
Geidai music131107Geidai music131107
Geidai music131107
 

openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B

  • 1.
  • 3.
  • 4. ‣ ‣ setup( ) update( ) draw( )
  • 5. ‣ ‣ setup( ) update( ) draw( )
  • 6. ‣ ‣ setup( ) update( ) draw( )
  • 7. ‣ ‣ setup( ) update( ) draw( )
  • 8. ‣ ‣ setup( ) update( ) draw( )
  • 10.
  • 12. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ ! public: ! void setup(); ! void update(); ! void draw(); ! ! ofVec2f pos; // ( ) };
  • 13. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ ! public: ! void setup(); ! void update(); ! void draw(); ! ! ofVec2f pos; // ( ) }; setup, update, draw
  • 14. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60);! // 60 (fps) ! ofBackgroundHex(0x000000); // ! // ! pos.x = ofGetWidth()/2; ! pos.y = ofGetHeight()/2; } void testApp::update(){ ! // ! pos.x += 4.0; //pos.x = pos.x + 3.0 ! pos.y += 3.0; //pos.y = pos.y + 4.0 } void testApp::draw(){ ! ofSetHexColor(0x3399ff); // ! ofCircle(pos.x, pos.y, 20);! // }
  • 15. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60);! // 60 (fps) ! ofBackgroundHex(0x000000); // ! // ! pos.x = ofGetWidth()/2; ! pos.y = ofGetHeight()/2; } void testApp::update(){ ! // ! pos.x += 4.0; //pos.x = pos.x + 3.0 ! pos.y += 3.0; //pos.y = pos.y + 4.0 } void testApp::draw(){ ! ofSetHexColor(0x3399ff); // ! ofCircle(pos.x, pos.y, 20);! // }
  • 16.
  • 17. ‣ ‣ ofGetWidth() 0 ofGetHeight()
  • 19. ‣ ‣ if ( ) { }
  • 20. ‣ 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();} //
  • 21. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60); ! ofBackgroundHex(0x000000); ! pos.x = ofGetWidth()/2; ! pos.y = ofGetHeight()/2; } void testApp::update(){ ! pos.x += 4.0; ! pos.y += 3.0; ! 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); }
  • 22.
  • 23.
  • 25. ‣ ‣ (0, 0)
  • 26. ‣ ‣ (0, 0)
  • 29. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ ! public: ! void setup(); ! void update(); ! void draw(); ! ! float angle; // };
  • 30. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60);! // 60 (fps) ! ofBackgroundHex(0x000000); // ! // ! ofSetRectMode(OF_RECTMODE_CENTER); } void testApp::update(){ ! angle += 10; // } void testApp::draw(){ ! // ! ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ! ofRotateZ(angle); // ! // ! ofSetHexColor(0x3399ff); ! ofRect(0, 0, 200, 200); }
  • 31.
  • 33. ‣ #pragma once #include "ofMain.h" class testApp : public ofBaseApp{ ! public: ! void setup(); ! void update(); ! void draw(); ! ! float angle; // };
  • 34. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60);! // 60 (fps) ! ofSetVerticalSync(true); // ! ofBackgroundHex(0x000000); // ! ofEnableBlendMode(OF_BLENDMODE_ADD);// } void testApp::update(){ ! angle += 10; // }
  • 35. ‣ void testApp::draw(){ ! // ! ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ! ofRotateZ(angle); // ! ofPushMatrix(); // ! ! // 1 ! ofSetHexColor(0xff0000); ! ofCircle(80, 0, 100); ! ofRotateZ(120); // ! // 2 ! ofSetHexColor(0x00ff00); ! ofCircle(80, 0, 100); ! ofRotateZ(120); // ! // 3 ! ofSetHexColor(0x0000ff); ! ofCircle(80, 0, 100); ! ! ofPopMatrix(); // }
  • 36.
  • 38. ‣ #include "testApp.h" void testApp::setup(){ ! ofSetFrameRate(60);! // 60 (fps) ! ofSetVerticalSync(true); // ! ofBackgroundHex(0x000000); // ! ofEnableBlendMode(OF_BLENDMODE_ADD);// ! ofSetCircleResolution(64); // } void testApp::update(){ ! angle += mouseY / 4.0; // Y }
  • 39. ‣ void testApp::draw(){ ! // ! ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ! ofRotateZ(angle); // ! ofPushMatrix(); // ! ! // 1 ! ofSetHexColor(0xff0000); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ofRotateZ(120); // ! // 2 ! ofSetHexColor(0x00ff00); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ofRotateZ(120); // ! // 3 ! ofSetHexColor(0x0000ff); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ! ofPopMatrix(); // }
  • 40.
  • 43. ‣ void testApp::draw(){ ! // ! ofTranslate(ofGetWidth()/2, ofGetHeight()/2); ! ofRotateX(mouseY); ! ofRotateZ(angle); ! ofPushMatrix(); ! ofSetHexColor(0xff0000); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ofRotateZ(120); ! ofSetHexColor(0x00ff00); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ofRotateZ(120); ! ofSetHexColor(0x0000ff); ! ofCircle(mouseX / 3.0, 0, 300 - mouseX / 6.0); ! ! ofPopMatrix(); }
  • 44.