SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
‣
‣


‣


‣
‣

‣
‣
‣
‣



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


‣
‣


‣

‣

Mais conteúdo relacionado

Mais procurados

メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門Atsushi Tadokoro
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略祐司 伊藤
 
Design by contractとホーア論理
Design by contractとホーア論理Design by contractとホーア論理
Design by contractとホーア論理Takuya Matsunaga
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころMasayuki Wakizaka
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門Kyoko Kadowaki
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingTakashi Yoshinaga
 
Qgis2.18 基礎編
Qgis2.18 基礎編Qgis2.18 基礎編
Qgis2.18 基礎編Jyun Tanaka
 
大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話Hitoshi Kikuchi
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みMorioImai
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~Daisuke Morishita
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)OSgeo Japan
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎ken_kitahara
 
SmartARの使い方(基本編)
SmartARの使い方(基本編)SmartARの使い方(基本編)
SmartARの使い方(基本編)Takashi Yoshinaga
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 

Mais procurados (20)

メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
 
Design by contractとホーア論理
Design by contractとホーア論理Design by contractとホーア論理
Design by contractとホーア論理
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
 
Nreal Lightハンズオン
Nreal LightハンズオンNreal Lightハンズオン
Nreal Lightハンズオン
 
Qgis2.18 基礎編
Qgis2.18 基礎編Qgis2.18 基礎編
Qgis2.18 基礎編
 
大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
SmartARの使い方(基本編)
SmartARの使い方(基本編)SmartARの使い方(基本編)
SmartARの使い方(基本編)
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 

Mais 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の連携 -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
 

Mais 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と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.
  • 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.