Contenu connexe
Similaire à iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
Similaire à iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する (20)
Plus de Atsushi Tadokoro (20)
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
- 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));
}
}
- 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
温度 (内部)
- 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. 取得された値で表現する
‣
角速度を取得 - 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. 取得された値で表現する
‣
角速度を取得 - 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);
}
- 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();