Your SlideShare is downloading. ×
0
iTamabi 13 
第6回:ARTSAT API 実践 2
衛星の情報で表現する
2013年10月28日
多摩美術大学 PBL科目
担当:田所 淳
今日の内容
‣

ARTSAT API - WebAPIから送出されるデータの意味につ
いて

‣

APIから取得した数値で表現してみる

‣

ディスカッション:衛星の数値を、どう表現するか?
先週のプログラムの
復習
APIの全ての内容を表示する
サンプル
先週のプログラムの復習
‣

testApp.mm

#include "testApp.h"

!

void testApp::setup(){
ofBackground(224);
ofSetFrameRate(30);
// ARTSA...
先週のプログラムの復習
‣

testApp.mm

void testApp::draw(){
ofSetColor(63);
int lineHeigt = 15;

!

// 取得した時間を表示

string available_ti...
取得された値について
取得された値について
‣

表示される値 (ax, ay, az, mx, my, mz …etc.)

‣

これらは何を意味するのか?

‣

衛星が取得したセンサーの値
取得された値について
‣

センサーの値の意味

センサー名

センサーの意味

lat

latitude : 緯度

lon

longitude : 経度

alt

altitude : 高度

ax, ay, az

衛星の角速度 (...
取得された値について
‣

センサーの値の意味

センサー名

センサーの意味

epx, emx

太陽電池発電量 (+x面、-x面)

epy, emy

太陽電池発電量 (+y面、-y面)

epz, emz

太陽電池発電量 (+z面、...
取得された値で表現する
取得された値で表現する
‣

これらの値を用いて、アプリで表現する

‣

どんな値を、何に用いれば良いのか?
取得された値で表現する
‣

サンプル 1 : 角速度で表現する

‣

取得した角速度をもとに、3Dのオブジェクトを動かす

‣

実際に宇宙にいる衛星の動きを実感できるかも(?)
取得された値で表現する
‣

角速度を取得 - testApp.h

#pragma once

!

#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSE...
取得された値で表現する
‣

角速度を取得 - testApp.mm

#include "testApp.h"

!

void testApp::setup(){
ofBackground(224);
ofSetFrameRate(30);...
取得された値で表現する
‣

角速度を取得 - testApp.mm

!

void testApp::draw(){
// 取得した角速度を表示
ofSetColor(31);
ofDrawBitmapString("angle speed...
取得された値で表現する
‣

角速度が取得できた
取得された値で表現する
‣

次に、この角速度で3Dオブジェクトを実際の速度で回転
させてみたい

‣

まずは立方体で
取得された値で表現する
‣

openFrameworksで立方体を描く方法

// 立方体のプリミティブ
ofBoxPrimitive box;

!

// 位置を指定して、立方体を描く
box.setPosition(x, y, z);
...
取得された値で表現する
‣

角速度の単位は、deg/sec つまり一秒間に変化する角度

‣

アプリケーションを実行してからの時間に、角速度をかけ
算すれば、角度(degree)が計算できる
!

‣

アプリケーションを実行してからの時間...
取得された値で表現する
‣

testApp.h

#pragma once

!

#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSExtras.h"
...
取得された値で表現する
‣

testApp.mm

#include "testApp.h"

!

void testApp::setup(){
ofBackground(0);
ofSetFrameRate(60);
// ARTSAT ...
取得された値で表現する
‣

testApp.mm

void testApp::update(){

!
}
!

void testApp::draw(){
ofVec3f angle = angleSpeed * ofGetElapsed...
取得された値で表現する
‣

宇宙空間で回転する衛星を再現
ディスカッション
ディスカッション
‣

INVADERのデータから、何が表現できるか

‣

パラメータと、それを表現する手法について話し合う

‣

「衛星芸術」の可能性について
Upcoming SlideShare
Loading in...5
×

iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する

846

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
846
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する"

  1. 1. iTamabi 13  第6回:ARTSAT API 実践 2 衛星の情報で表現する 2013年10月28日 多摩美術大学 PBL科目 担当:田所 淳
  2. 2. 今日の内容 ‣ ARTSAT API - WebAPIから送出されるデータの意味につ いて ‣ APIから取得した数値で表現してみる ‣ ディスカッション:衛星の数値を、どう表現するか?
  3. 3. 先週のプログラムの 復習 APIの全ての内容を表示する サンプル
  4. 4. 先週のプログラムの復習 ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ ofBackground(224); ofSetFrameRate(30); // ARTSAT WebAPIにアクセスしてJSONデータを取得 bool result = response.open("http://api.artsat.jp/web/v2/invader/ sensor_data.json"); // 取得結果をコンソールに出力 if (!result) { // もし取得できなかったら、エラーを出力 cout << "faild to get JSON data!" << endl; } else { // 取得に成功したら、JSONデータを出力 cout << response.getRawString() << endl; } } ! void testApp::update(){ ! }
  5. 5. 先週のプログラムの復習 ‣ testApp.mm void testApp::draw(){ ofSetColor(63); int lineHeigt = 15; ! // 取得した時間を表示 string available_time = response["results"][0] ["closest_available_time_iso_string"].asString(); ofDrawBitmapString(available_time, 10, lineHeigt*1); // センサーの全てのメンバー名を取得 ofxJSONElement::Members mem = response["results"][0] ["sensors"].getMemberNames(); // メンバーごとにセンサーの値をとりだして、画面に表示 for (int i = 0; i < mem.size(); i++) { string lavel = mem[i]; float value = response["results"][0]["sensors"][mem[i]] ["value"].asFloat(); ofDrawBitmapString(lavel + " = " + ofToString(value), 10, lineHeigt * (i + 3)); } }
  6. 6. 取得された値について
  7. 7. 取得された値について ‣ 表示される値 (ax, ay, az, mx, my, mz …etc.) ‣ これらは何を意味するのか? ‣ 衛星が取得したセンサーの値
  8. 8. 取得された値について ‣ センサーの値の意味 センサー名 センサーの意味 lat latitude : 緯度 lon longitude : 経度 alt altitude : 高度 ax, ay, az 衛星の角速度 (x, y, z軸) px, py, pz 衛星の姿勢角度 (x, y, z軸) mx, my, mz 磁気センサー (x, y, z軸) tpx, tmx 太陽電池の温度 (+x面、-x面) tpy, tmy 太陽電池の温度 (+y面、-y面) tpy, tmy 太陽電池の温度 (+z面、-z面) tin 温度 (内部)
  9. 9. 取得された値について ‣ センサーの値の意味 センサー名 センサーの意味 epx, emx 太陽電池発電量 (+x面、-x面) epy, emy 太陽電池発電量 (+y面、-y面) epz, emz 太陽電池発電量 (+z面、-z面)
  10. 10. 取得された値で表現する
  11. 11. 取得された値で表現する ‣ これらの値を用いて、アプリで表現する ‣ どんな値を、何に用いれば良いのか?
  12. 12. 取得された値で表現する ‣ サンプル 1 : 角速度で表現する ‣ 取得した角速度をもとに、3Dのオブジェクトを動かす ‣ 実際に宇宙にいる衛星の動きを実感できるかも(?)
  13. 13. 取得された値で表現する ‣ 角速度を取得 - testApp.h #pragma once ! #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxJSONElement.h" class testApp : public ofxiOSApp{ public: void void void void setup(); update(); draw(); exit(); void void void void void touchDown(ofTouchEventArgs & touch); touchMoved(ofTouchEventArgs & touch); touchUp(ofTouchEventArgs & touch); touchDoubleTap(ofTouchEventArgs & touch); touchCancelled(ofTouchEventArgs & touch); void void void void lostFocus(); gotFocus(); gotMemoryWarning(); deviceOrientationChanged(int newOrientation); ofxJSONElement response; ofVec3f angleSpeed; };
  14. 14. 取得された値で表現する ‣ 角速度を取得 - testApp.mm #include "testApp.h" ! void testApp::setup(){ ofBackground(224); ofSetFrameRate(30); // ARTSAT WebAPIにアクセスしてJSONデータを取得 bool result = response.open("http://api.artsat.jp/web/v2/invader/sensor_data.json"); // 取得結果をコンソールに出力 if (!result) { // もし取得できなかったら、エラーを出力 cout << "faild to get JSON data!" << endl; } else { // 取得に成功したら、JSONデータを出力 cout << response.getRawString() << endl; angleSpeed.x = response["results"][0]["sensors"]["ax"]["value"].asFloat(); angleSpeed.y = response["results"][0]["sensors"]["ay"]["value"].asFloat(); angleSpeed.z = response["results"][0]["sensors"]["az"]["value"].asFloat(); } } ! void ! } testApp::update(){
  15. 15. 取得された値で表現する ‣ 角速度を取得 - testApp.mm ! void testApp::draw(){ // 取得した角速度を表示 ofSetColor(31); ofDrawBitmapString("angle speed x = " + ofToString(angleSpeed.x, 8), 10, 15); ofDrawBitmapString("angle speed y = " + ofToString(angleSpeed.y, 8), 10, 30); ofDrawBitmapString("angle speed z = " + ofToString(angleSpeed.z, 8), 10, 45); }
  16. 16. 取得された値で表現する ‣ 角速度が取得できた
  17. 17. 取得された値で表現する ‣ 次に、この角速度で3Dオブジェクトを実際の速度で回転 させてみたい ‣ まずは立方体で
  18. 18. 取得された値で表現する ‣ openFrameworksで立方体を描く方法 // 立方体のプリミティブ ofBoxPrimitive box; ! // 位置を指定して、立方体を描く box.setPosition(x, y, z); box.draw();
  19. 19. 取得された値で表現する ‣ 角速度の単位は、deg/sec つまり一秒間に変化する角度 ‣ アプリケーションを実行してからの時間に、角速度をかけ 算すれば、角度(degree)が計算できる ! ‣ アプリケーションを実行してからの時間を求める方法 // プログラムが開始してからの時間を求める float sec = ofGetElapsedTimef();
  20. 20. 取得された値で表現する ‣ testApp.h #pragma once ! #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxJSONElement.h" class testApp : public ofxiOSApp{ public: void void void void setup(); update(); draw(); exit(); … (中略) … ofxJSONElement response; ofVec3f angleSpeed; ofLight light; ofEasyCam cam; };
  21. 21. 取得された値で表現する ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ ofBackground(0); ofSetFrameRate(60); // ARTSAT WebAPIにアクセスしてJSONデータを取得 bool result = response.open("http://api.artsat.jp/web/v2/invader/sensor_data.json"); // 取得結果をコンソールに出力 if (!result) { // もし取得できなかったら、エラーを出力 cout << "faild to get JSON data!" << endl; } else { // 取得に成功したら、JSONデータを出力 cout << response.getRawString() << endl; // 角速度を取得 } angleSpeed.x = response["results"][0]["sensors"]["ax"]["value"].asFloat(); angleSpeed.y = response["results"][0]["sensors"]["ay"]["value"].asFloat(); angleSpeed.z = response["results"][0]["sensors"]["az"]["value"].asFloat(); // 3D表示設定 } ofEnableDepthTest(); ofEnableLighting(); light.setPosition(200, 300, 50); light.enable();
  22. 22. 取得された値で表現する ‣ testApp.mm void testApp::update(){ ! } ! void testApp::draw(){ ofVec3f angle = angleSpeed * ofGetElapsedTimef(); // カメラ開始 ! cam.begin(); // 回転 ofPushMatrix(); ofRotateX(ofRadToDeg(angle.x)); ofRotateY(ofRadToDeg(angle.y)); ofRotateZ(ofRadToDeg(angle.z)); // 立方体を描く ! } ofBoxPrimitive box; box.draw(); ofPopMatrix(); // カメラ終了 cam.end();
  23. 23. 取得された値で表現する ‣ 宇宙空間で回転する衛星を再現
  24. 24. ディスカッション
  25. 25. ディスカッション ‣ INVADERのデータから、何が表現できるか ‣ パラメータと、それを表現する手法について話し合う ‣ 「衛星芸術」の可能性について
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×