SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
iTamabi 13
ARTSAT API 実践 5
衛星の軌道を描く
2013年12月2日
多摩美術大学PBL科目
田所 淳
今日の内容
‣ 衛星の軌道を計算
‣ そのデータをもとに、INVADER衛星の軌道を描画してみる!
今日の内容
‣ 前回までのサンプルは、INVADER衛星のセンサーによって取得
されたデータを、地上局で受信したものを使用していた
‣ 傾き、温度、電力 ...etc
!

‣ 今回は、また別のアプローチで衛星を視覚化したい
‣ 衛星が地球を周回している軌道を描くことはできないか?
参考:衛星軌道に関係するiOSアプリ
参考:衛星軌道に関係するiOSアプリ
‣ Orbit Architect, By a.i. solutions, Inc.
‣ http://itunes.apple.com/us/app/orbit-architect/
id392291462?mt=8
参考:衛星軌道に関係するiOSアプリ
‣ GoSatWatch - Satellite Tracking, By GoSoftWorks
‣ http://itunes.apple.com/us/app/gosatwatch-satellitetracking/id300546718?mt=8
参考:衛星軌道に関係するiOSアプリ
‣ ToriSat AR - 国際宇宙ステーションを見よう, Toriningen
Co.,Ltd.
‣ http://itunes.apple.com/jp/app/torisat/id361194118?mt=8#
参考:衛星軌道に関係するiOSアプリ
‣ 今回は、こうしたアプリの基本となる衛星軌道の算出と推定の
方法について試していきたい
どうやって、衛星軌道を取得するのか?
人工衛星の軌道要素
‣ 軌道要素
‣ 天体の周囲を運動する天体の軌道を指定するためのパラメータ
人工衛星の軌道要素
‣ 人工衛星の軌道要素
‣ 元期: Epoch(年と日)
‣ 平均運動(m): Mean Motion(周回/日)
‣ 離心率(e): Eccentricity(単位無し)
‣ 軌道傾斜角(i): Inclination(度)
‣ 昇交点赤経(Ω): RAAN (Right Ascension of Ascending Node)
(度)
‣ 近地点離角(ω): Argument of Perigee(度)
‣ 平均近点角(M): Mean Anomaly(度)
!

‣ つまりは… 非常に複雑!!
TLE(Two Line Element) - 2行軌道要素形式
‣ TLE(Two Line Element) - 2行軌道要素形式
!

‣ 軌道要素は変動するため定期的な更新が必要
‣ 人工衛星の運用にあたっては軌道の測定が重要
‣ アメリカ合衆国のNORAD(※)は定期的に大きさ10cm以上の人
工天体のレーダー観測を行って軌道を測定し、公開している
‣ このフォーマットはTLE(Two Line Element)と呼ばれる
!

‣ ※ NORAD - 北アメリカ航空宇宙防衛司令部
TLE(Two Line Element) - 2行軌道要素形式
‣ NORAD - 北アメリカ航空宇宙防衛司令部
‣ 24時間体制で人工衛星の状況や地球上の核ミサイルや戦略爆撃
機などの動向を監視
TLE(Two Line Element) - 2行軌道要素形式
‣ 実際のTLEの例
NOAA 14
1 23455U 94089A
97320.90946019 .00000140 00000-0 10191-3 0 2621
2 23455 99.0090 272.6745 0008546 223.1686 136.8816 14.11711747148495

!

MIDORI (ADEOS)
1 24277U 96046A
2 24277 98.3597

!

09116.47337938 -.00000023 00000-0 73445-5 0
432
83.2073 0002090 64.7512 295.3886 14.28595439661547

ORBCOMM FM08 [+]
1 25112U 97084A
09116.51259343 .00000203 00000-0 12112-3 0 2154
2 25112 45.0199 241.1109 0010042 194.4473 165.6089 14.34380830592834
SGP
‣ 更新から30日以上経過した2行軌道要素形式を用いて計算され
た値は、信頼性に欠ける可能性がある
‣ 2行軌道要素形式から、SGP (Simplified General Perturbations
Satellite Orbit Model) というアルゴリズムを用いて、より正確
な位置を推定
!

‣ 参考:Revisiting Spacetrack Report #3 (PDFファイル)
‣ http://www.centerforspace.com/downloads/files/pubs/
AIAA-2006-6753.pdf
ARTSAT API + ofxSGPで衛星軌道を取得
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ TLEおよびSGPを用いた軌道の推定を、自力でコーディングす
るのはかなり大変!!
‣ ARTSAT APIでは、SGPを使用した軌道推定の機能もインクルー
ドされている
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ ofxSgp - SGPを利用した軌道の計算を行う
!

‣ 例えば、ofxSgpのインスタンスをsgpとすると
!

‣ sgp.update(&現在の時刻)
‣ 軌道計算のための時間を更新
!

‣ sgp.getPos() 
‣ 現在の衛星軌道の座標(ofVec3f)を返す
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ では、ofxSgpを活用して、まずはシンプルに現在の時刻のPRISM
衛星の座標を取得してみましょう!
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.h
#pragma once

!

#include
#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSExtras.h"
"ofxARTSATAPI.h"
"ofxSgp.h"

class testApp : public ofxiOSApp, private ofxSAT::Notifier {
public:
void
void
void
void

!

setup();
update();
draw();
exit();

… (中略)…

!

};

virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time);
virtual void onNotifyData(ofxSATTime const& time);
ofxInvaderSAT invader;
ofxSgp sgp;
ofxSATTime current;
ofVec3f position;
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
#include "testApp.h"

!

void testApp::setup(){
// 画面設定
ofBackground(0);
ofSetFrameRate(30);
// INVADERのセットアップ
if (invader.setNotifier(this) == SATERROR_OK) {
if (invader.setup() == SATERROR_OK) {
cout << "Hello ARTSAT." << endl;
}
}
}

!

void testApp::update(){
// 現在の時刻を取得
current = ofxSATTime::currentTime();
// SGPに時間を設定
sgp.update(&current);
// 現在のPRISM衛星の3D座標を算出
position = sgp.getPos();
}
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
void testApp::draw(){
// 現在の衛星の座標を表示
ofSetHexColor(0xffffff);
string curretTimeStr = current.format("%YYYY/%MM/%DD %hh:%mm:%ss");
ofDrawBitmapString(curretTimeStr, 10, 15);
ofDrawBitmapString("x = " + ofToString(position.x, 4) + "n"
+ "y = " + ofToString(position.y, 4) + "n"
+ "z = " + ofToString(position.z, 4), 10, 50);
}

!
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
void testApp::onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time){
// 取得したTLEをファイルに保存

!

!

string name;
string path;
ofstream file;
name = invader.getID();
ofStringReplace(name, "://", "");
path = ofToDataPath("");
path = ofFilePath::join(ofFilePath::getEnclosingDirectory(path), "Library");
path = ofFilePath::join(path, name + ".txt");
file.open(path.c_str());
if (file.is_open()) {
file << name << endl;
file << tle.line[0] << endl;
file << tle.line[1] << endl;
file.close();
// SGPをセットアップ
sgp.setup(path.c_str());
}

}
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ 完成! - 現在の衛星位置が取得されている
ARTSAT API + ofxSGPで衛星軌道を取得 2
‣ では、取得したデータもとに実際に3D空間に描画してみましょ
う!
ARTSAT API + ofxSGPで衛星軌道を取得 2
‣ testApp.h
#pragma once

!

#include
#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSExtras.h"
"ofxARTSATAPI.h"
"ofxSgp.h"

class testApp : public ofxiOSApp, private ofxSAT::Notifier {
public:
void setup();
void update();
void draw();

!

… (中略) …

!

};

virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time);
virtual void onNotifyData(ofxSATTime const& time);
ofxInvaderSAT invader;
ofxSgp sgp;
std::vector<ofxSATTime> available;
ofEasyCam camera;
ofxSATTime epoch;
ofxSATTime current;
ofBoxPrimitive box;
static const int TIME_SCALE = 100;
ARTSAT API + ofxSGPで衛星軌道を取得 2
‣ testApp.mm
#include "testApp.h"

!

void testApp::setup(){
// 画面設定
ofBackground(0);
ofSetFrameRate(30);
// INVADERのセットアップ
if (invader.setNotifier(this) == SATERROR_OK) {
if (invader.setup() == SATERROR_OK) {
cout << "Hello ARTSAT." << endl;
}
}
// カメラ設定
camera.setFov(45);
camera.setFarClip(100000);
camera.setDistance(30000);
// 時間設定
epoch = ofxSATTime::currentTime();
current = epoch;
// 衛星設定
}

box.set(500);

!

void testApp::update(){
current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE);
sgp.update(&current);
// 衛星の位置を設定
}

box.setPosition(sgp.getPos());
ARTSAT API + ofxSGPで衛星軌道を取得 2
‣ testApp.mm
void testApp::update(){
current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE);
sgp.update(&current);
// 衛星の位置を設定
box.setPosition(sgp.getPos());
}

!

void testApp::draw(){
camera.begin();

!

// 衛星を描画
ofSetColor(255);
box.draw();
camera.end();

}
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
void testApp::onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time){
// 取得したTLEをファイルに保存

!

!

string name;
string path;
ofstream file;
name = invader.getID();
ofStringReplace(name, "://", "");
path = ofToDataPath("");
path = ofFilePath::join(ofFilePath::getEnclosingDirectory(path), "Library");
path = ofFilePath::join(path, name + ".txt");
file.open(path.c_str());
if (file.is_open()) {
file << name << endl;
file << tle.line[0] << endl;
file << tle.line[1] << endl;
file.close();
// SGPをセットアップ
sgp.setup(path.c_str());
}

}
ARTSAT API + ofxSGPで衛星軌道を取得 2
‣ 完成! 表示されている小さな点が、PRISM衛星!!
ARTSAT API + ofxSGPで衛星軌道を取得 3
‣ 衛星の点が表示されるだけでは、よくわからない
‣ 地球を実際のスケールで描いてみる
‣ 地球の赤道半径、6378km
‣ 6378kmの球を描けばよい
ARTSAT API + ofxSGPで衛星軌道を取得 3
‣ testApp.h
#pragma once

!

#include
#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSExtras.h"
"ofxARTSATAPI.h"
"ofxSgp.h"

class testApp : public ofxiOSApp, private ofxSAT::Notifier {
public:
void setup();
void update();

!

… (中略) …

!

};

virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time);
virtual void onNotifyData(ofxSATTime const& time);
ofxInvaderSAT invader;
ofxSgp sgp;
std::vector<ofxSATTime> available;
ofEasyCam camera;
ofxSATTime epoch;
ofxSATTime current;
ofBoxPrimitive box;
ofSpherePrimitive earth;
static const int EARTH_SIZE = 6378;
static const int TIME_SCALE = 100;
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
#include "testApp.h"

!

void testApp::setup(){
// 画面設定
ofBackground(0);
ofSetFrameRate(30);
// INVADERのセットアップ
if (invader.setNotifier(this) == SATERROR_OK) {
if (invader.setup() == SATERROR_OK) {
cout << "Hello ARTSAT." << endl;
}
}
// カメラ設定
camera.setFov(45);
camera.setFarClip(100000);
camera.setDistance(30000);
// 時間設定
epoch = ofxSATTime::currentTime();
current = epoch;
// 衛星設定
}

box.set(500);
ARTSAT API + ofxSGPで衛星軌道を取得 1
‣ testApp.mm
void testApp::update(){
current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE);
sgp.update(&current);
// 衛星の位置を設定
}

box.setPosition(sgp.getPos());

!

void testApp::draw(){
camera.begin();
// 地球を描画
ofSetColor(0, 127, 255);
earth.setRadius(EARTH_SIZE);
earth.setPosition(0, 0, 0);
earth.drawWireframe();
// 衛星を描画
ofSetColor(255);
box.draw();
}

!

camera.end();

… (後略) …
ARTSAT API + ofxSGPで衛星軌道を取得 3
‣ 地球の周囲を周回!
ARTSAT API + ofxSGPで衛星軌道を取得 4
‣ さらに、いろいろ工夫してみる
!

‣ 時間の経過スピードを変えてみる (例:60倍速)
‣ 指定した過去から始める
!

‣ 軌道を線で描く
ARTSAT API + ofxSGPで衛星軌道を取得 4
‣ testApp.h
#pragma once

!

#include
#include
#include
#include
#include

!

"ofMain.h"
"ofxiOS.h"
"ofxiOSExtras.h"
"ofxARTSATAPI.h"
"ofxSgp.h"

class testApp : public ofxiOSApp, private ofxSAT::Notifier {
public:
void setup();
… (中略) …

!

};

virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time);
virtual void onNotifyData(ofxSATTime const& time);
ofxInvaderSAT invader;
ofxSgp sgp;
std::vector<ofxSATTime> available;
ofEasyCam camera;
ofxSATTime epoch;
ofxSATTime current;
ofBoxPrimitive box;
ofSpherePrimitive earth;
ofImage earthTexture;
ofMesh orbit;
static const int EARTH_SIZE = 6378;
static const int TIME_SCALE = 100;
ARTSAT API + ofxSGPで衛星軌道を取得 4
‣ testApp.mm
#include "testApp.h"

!

void testApp::setup(){
// 画面設定
ofBackground(0);
ofSetFrameRate(30);
// INVADERのセットアップ
if (invader.setNotifier(this) == SATERROR_OK) {
if (invader.setup() == SATERROR_OK) {
cout << "Hello ARTSAT." << endl;
}
}
// カメラ設定
camera.setFov(45);
camera.setFarClip(100000);
camera.setDistance(30000);
// 時間設定
epoch = ofxSATTime::currentTime();
current = epoch;
// 衛星の大きさ設定
box.set(500);
// 軌道の描画モード設定
orbit.setMode(OF_PRIMITIVE_LINE_STRIP);
}
ARTSAT API + ofxSGPで衛星軌道を取得 4
‣ testApp.mm
void testApp::update(){
current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE);
sgp.update(&current);
// 衛星の位置を設定

}

box.setPosition(sgp.getPos());
orbit.addVertex(sgp.getPos());
orbit.addColor(ofFloatColor(1.0,1.0,0.0));

!

void testApp::draw(){
camera.begin();
// Zバッファー
ofEnableDepthTest();
// 地球を描画
ofSetColor(0, 0, 255);
earth.setRadius(EARTH_SIZE);
earth.drawWireframe();
// 衛星を描画
ofSetColor(255);
box.draw();
// 軌道を描画
orbit.draw();

}

ofDisableDepthTest();
camera.end();
ARTSAT API + ofxSGPで衛星軌道を取得 4
‣ 完成!!

Weitere ähnliche Inhalte

Was ist angesagt?

iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくるiTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくるAtsushi Tadokoro
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるAtsushi Tadokoro
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようNozomiIriomote
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18Koichiro Mori
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションAtsushi Tadokoro
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BAtsushi Tadokoro
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPUgos-k
 
Geolocation4 system
Geolocation4 systemGeolocation4 system
Geolocation4 systemJun Chiba
 
Corona HandsOn#6
Corona HandsOn#6Corona HandsOn#6
Corona HandsOn#6Tetsuo Ono
 

Was ist angesagt? (9)

iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくるiTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみよう
 
衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18衛星芸術Pbl 2011 10_18
衛星芸術Pbl 2011 10_18
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
 
Geolocation4 system
Geolocation4 systemGeolocation4 system
Geolocation4 system
 
Corona HandsOn#6
Corona HandsOn#6Corona HandsOn#6
Corona HandsOn#6
 

Andere mochten auch

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
 
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基本
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
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Atsushi Tadokoro
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス Atsushi Tadokoro
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようAtsushi Tadokoro
 
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望Atsushi Tadokoro
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使うAtsushi Tadokoro
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えAtsushi Tadokoro
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ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
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Atsushi Tadokoro
 
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIopenFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIAtsushi Tadokoro
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIAtsushi Tadokoro
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 

Andere mochten auch (19)

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)
 
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 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の連携
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめよう
 
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
 
Tamabi media131118
Tamabi media131118Tamabi media131118
Tamabi media131118
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替え
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
 
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
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
 
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIopenFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 

Ähnlich wie iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く

2012 07 14_osm-ws_2
2012 07 14_osm-ws_22012 07 14_osm-ws_2
2012 07 14_osm-ws_2Tom Hayakawa
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションAtsushi Tadokoro
 
FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築Yoichi Kayama
 
20140613 ロケーションビジネスジャパン osm
20140613 ロケーションビジネスジャパン osm20140613 ロケーションビジネスジャパン osm
20140613 ロケーションビジネスジャパン osmTaichi Furuhashi
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +αkobexr
 
GRASSセミナー基礎編
GRASSセミナー基礎編GRASSセミナー基礎編
GRASSセミナー基礎編Kanetaka Heshiki
 
20131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 201320131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 2013Taichi Furuhashi
 
20130417_和歌山大学授業_VGIのチカラ
20130417_和歌山大学授業_VGIのチカラ20130417_和歌山大学授業_VGIのチカラ
20130417_和歌山大学授業_VGIのチカラTaichi Furuhashi
 
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and R
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and RAn evaluation of Distributions of the Environmental pollutants by (Web)GIS and R
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and RJunji Yamakawa
 
2012 07 27_osm_project10
2012 07 27_osm_project102012 07 27_osm_project10
2012 07 27_osm_project10Tom Hayakawa
 
OpenStreetMap+MongoDBで地図情報を検索してみたい!
OpenStreetMap+MongoDBで地図情報を検索してみたい!OpenStreetMap+MongoDBで地図情報を検索してみたい!
OpenStreetMap+MongoDBで地図情報を検索してみたい!Naruhiko Ogasawara
 
自由な地図を作るオープンストリートマップの活動
自由な地図を作るオープンストリートマップの活動自由な地図を作るオープンストリートマップの活動
自由な地図を作るオープンストリートマップの活動Shu Higashi
 
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことSwiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことyohei sugigami
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Yuki Higuchi
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)Fujio Kojima
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 

Ähnlich wie iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く (20)

Gdg geo2
Gdg geo2Gdg geo2
Gdg geo2
 
2012 07 14_osm-ws_2
2012 07 14_osm-ws_22012 07 14_osm-ws_2
2012 07 14_osm-ws_2
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
 
FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築
 
20140613 ロケーションビジネスジャパン osm
20140613 ロケーションビジネスジャパン osm20140613 ロケーションビジネスジャパン osm
20140613 ロケーションビジネスジャパン osm
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +α
 
GRASSセミナー基礎編
GRASSセミナー基礎編GRASSセミナー基礎編
GRASSセミナー基礎編
 
20131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 201320131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 2013
 
20130417_和歌山大学授業_VGIのチカラ
20130417_和歌山大学授業_VGIのチカラ20130417_和歌山大学授業_VGIのチカラ
20130417_和歌山大学授業_VGIのチカラ
 
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and R
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and RAn evaluation of Distributions of the Environmental pollutants by (Web)GIS and R
An evaluation of Distributions of the Environmental pollutants by (Web)GIS and R
 
2012 07 27_osm_project10
2012 07 27_osm_project102012 07 27_osm_project10
2012 07 27_osm_project10
 
OpenStreetMap+MongoDBで地図情報を検索してみたい!
OpenStreetMap+MongoDBで地図情報を検索してみたい!OpenStreetMap+MongoDBで地図情報を検索してみたい!
OpenStreetMap+MongoDBで地図情報を検索してみたい!
 
20140718 会津大学
20140718 会津大学20140718 会津大学
20140718 会津大学
 
nagata b
nagata bnagata b
nagata b
 
自由な地図を作るオープンストリートマップの活動
自由な地図を作るオープンストリートマップの活動自由な地図を作るオープンストリートマップの活動
自由な地図を作るオープンストリートマップの活動
 
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことSwiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 

Mehr von Atsushi Tadokoro

Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!Atsushi Tadokoro
 
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5  時間構造をつくるInteractive Music II SuperCollider入門 5  時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくるAtsushi Tadokoro
 
メディア芸術基礎 II Canvas + Javascriptで図形を描く
メディア芸術基礎 II Canvas + Javascriptで図形を描くメディア芸術基礎 II Canvas + Javascriptで図形を描く
メディア芸術基礎 II Canvas + Javascriptで図形を描くAtsushi Tadokoro
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvAtsushi Tadokoro
 
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)Atsushi Tadokoro
 

Mehr von Atsushi Tadokoro (6)

Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
 
Geidai music131107
Geidai music131107Geidai music131107
Geidai music131107
 
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5  時間構造をつくるInteractive Music II SuperCollider入門 5  時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくる
 
メディア芸術基礎 II Canvas + Javascriptで図形を描く
メディア芸術基礎 II Canvas + Javascriptで図形を描くメディア芸術基礎 II Canvas + Javascriptで図形を描く
メディア芸術基礎 II Canvas + Javascriptで図形を描く
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
 
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
 

Kürzlich hochgeladen

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Kürzlich hochgeladen (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く

  • 1. iTamabi 13 ARTSAT API 実践 5 衛星の軌道を描く 2013年12月2日 多摩美術大学PBL科目 田所 淳
  • 3. 今日の内容 ‣ 前回までのサンプルは、INVADER衛星のセンサーによって取得 されたデータを、地上局で受信したものを使用していた ‣ 傾き、温度、電力 ...etc ! ‣ 今回は、また別のアプローチで衛星を視覚化したい ‣ 衛星が地球を周回している軌道を描くことはできないか?
  • 5. 参考:衛星軌道に関係するiOSアプリ ‣ Orbit Architect, By a.i. solutions, Inc. ‣ http://itunes.apple.com/us/app/orbit-architect/ id392291462?mt=8
  • 6. 参考:衛星軌道に関係するiOSアプリ ‣ GoSatWatch - Satellite Tracking, By GoSoftWorks ‣ http://itunes.apple.com/us/app/gosatwatch-satellitetracking/id300546718?mt=8
  • 7. 参考:衛星軌道に関係するiOSアプリ ‣ ToriSat AR - 国際宇宙ステーションを見よう, Toriningen Co.,Ltd. ‣ http://itunes.apple.com/jp/app/torisat/id361194118?mt=8#
  • 11. 人工衛星の軌道要素 ‣ 人工衛星の軌道要素 ‣ 元期: Epoch(年と日) ‣ 平均運動(m): Mean Motion(周回/日) ‣ 離心率(e): Eccentricity(単位無し) ‣ 軌道傾斜角(i): Inclination(度) ‣ 昇交点赤経(Ω): RAAN (Right Ascension of Ascending Node) (度) ‣ 近地点離角(ω): Argument of Perigee(度) ‣ 平均近点角(M): Mean Anomaly(度) ! ‣ つまりは… 非常に複雑!!
  • 12. TLE(Two Line Element) - 2行軌道要素形式 ‣ TLE(Two Line Element) - 2行軌道要素形式 ! ‣ 軌道要素は変動するため定期的な更新が必要 ‣ 人工衛星の運用にあたっては軌道の測定が重要 ‣ アメリカ合衆国のNORAD(※)は定期的に大きさ10cm以上の人 工天体のレーダー観測を行って軌道を測定し、公開している ‣ このフォーマットはTLE(Two Line Element)と呼ばれる ! ‣ ※ NORAD - 北アメリカ航空宇宙防衛司令部
  • 13. TLE(Two Line Element) - 2行軌道要素形式 ‣ NORAD - 北アメリカ航空宇宙防衛司令部 ‣ 24時間体制で人工衛星の状況や地球上の核ミサイルや戦略爆撃 機などの動向を監視
  • 14. TLE(Two Line Element) - 2行軌道要素形式 ‣ 実際のTLEの例 NOAA 14 1 23455U 94089A 97320.90946019 .00000140 00000-0 10191-3 0 2621 2 23455 99.0090 272.6745 0008546 223.1686 136.8816 14.11711747148495 ! MIDORI (ADEOS) 1 24277U 96046A 2 24277 98.3597 ! 09116.47337938 -.00000023 00000-0 73445-5 0 432 83.2073 0002090 64.7512 295.3886 14.28595439661547 ORBCOMM FM08 [+] 1 25112U 97084A 09116.51259343 .00000203 00000-0 12112-3 0 2154 2 25112 45.0199 241.1109 0010042 194.4473 165.6089 14.34380830592834
  • 15. SGP ‣ 更新から30日以上経過した2行軌道要素形式を用いて計算され た値は、信頼性に欠ける可能性がある ‣ 2行軌道要素形式から、SGP (Simplified General Perturbations Satellite Orbit Model) というアルゴリズムを用いて、より正確 な位置を推定 ! ‣ 参考:Revisiting Spacetrack Report #3 (PDFファイル) ‣ http://www.centerforspace.com/downloads/files/pubs/ AIAA-2006-6753.pdf
  • 16. ARTSAT API + ofxSGPで衛星軌道を取得
  • 17. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ TLEおよびSGPを用いた軌道の推定を、自力でコーディングす るのはかなり大変!! ‣ ARTSAT APIでは、SGPを使用した軌道推定の機能もインクルー ドされている
  • 18. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ ofxSgp - SGPを利用した軌道の計算を行う ! ‣ 例えば、ofxSgpのインスタンスをsgpとすると ! ‣ sgp.update(&現在の時刻) ‣ 軌道計算のための時間を更新 ! ‣ sgp.getPos()  ‣ 現在の衛星軌道の座標(ofVec3f)を返す
  • 19. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ では、ofxSgpを活用して、まずはシンプルに現在の時刻のPRISM 衛星の座標を取得してみましょう!
  • 20. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.h #pragma once ! #include #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxARTSATAPI.h" "ofxSgp.h" class testApp : public ofxiOSApp, private ofxSAT::Notifier { public: void void void void ! setup(); update(); draw(); exit(); … (中略)… ! }; virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time); virtual void onNotifyData(ofxSATTime const& time); ofxInvaderSAT invader; ofxSgp sgp; ofxSATTime current; ofVec3f position;
  • 21. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ // 画面設定 ofBackground(0); ofSetFrameRate(30); // INVADERのセットアップ if (invader.setNotifier(this) == SATERROR_OK) { if (invader.setup() == SATERROR_OK) { cout << "Hello ARTSAT." << endl; } } } ! void testApp::update(){ // 現在の時刻を取得 current = ofxSATTime::currentTime(); // SGPに時間を設定 sgp.update(&current); // 現在のPRISM衛星の3D座標を算出 position = sgp.getPos(); }
  • 22. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm void testApp::draw(){ // 現在の衛星の座標を表示 ofSetHexColor(0xffffff); string curretTimeStr = current.format("%YYYY/%MM/%DD %hh:%mm:%ss"); ofDrawBitmapString(curretTimeStr, 10, 15); ofDrawBitmapString("x = " + ofToString(position.x, 4) + "n" + "y = " + ofToString(position.y, 4) + "n" + "z = " + ofToString(position.z, 4), 10, 50); } !
  • 23. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm void testApp::onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time){ // 取得したTLEをファイルに保存 ! ! string name; string path; ofstream file; name = invader.getID(); ofStringReplace(name, "://", ""); path = ofToDataPath(""); path = ofFilePath::join(ofFilePath::getEnclosingDirectory(path), "Library"); path = ofFilePath::join(path, name + ".txt"); file.open(path.c_str()); if (file.is_open()) { file << name << endl; file << tle.line[0] << endl; file << tle.line[1] << endl; file.close(); // SGPをセットアップ sgp.setup(path.c_str()); } }
  • 24. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ 完成! - 現在の衛星位置が取得されている
  • 25. ARTSAT API + ofxSGPで衛星軌道を取得 2 ‣ では、取得したデータもとに実際に3D空間に描画してみましょ う!
  • 26. ARTSAT API + ofxSGPで衛星軌道を取得 2 ‣ testApp.h #pragma once ! #include #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxARTSATAPI.h" "ofxSgp.h" class testApp : public ofxiOSApp, private ofxSAT::Notifier { public: void setup(); void update(); void draw(); ! … (中略) … ! }; virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time); virtual void onNotifyData(ofxSATTime const& time); ofxInvaderSAT invader; ofxSgp sgp; std::vector<ofxSATTime> available; ofEasyCam camera; ofxSATTime epoch; ofxSATTime current; ofBoxPrimitive box; static const int TIME_SCALE = 100;
  • 27. ARTSAT API + ofxSGPで衛星軌道を取得 2 ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ // 画面設定 ofBackground(0); ofSetFrameRate(30); // INVADERのセットアップ if (invader.setNotifier(this) == SATERROR_OK) { if (invader.setup() == SATERROR_OK) { cout << "Hello ARTSAT." << endl; } } // カメラ設定 camera.setFov(45); camera.setFarClip(100000); camera.setDistance(30000); // 時間設定 epoch = ofxSATTime::currentTime(); current = epoch; // 衛星設定 } box.set(500); ! void testApp::update(){ current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE); sgp.update(&current); // 衛星の位置を設定 } box.setPosition(sgp.getPos());
  • 28. ARTSAT API + ofxSGPで衛星軌道を取得 2 ‣ testApp.mm void testApp::update(){ current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE); sgp.update(&current); // 衛星の位置を設定 box.setPosition(sgp.getPos()); } ! void testApp::draw(){ camera.begin(); ! // 衛星を描画 ofSetColor(255); box.draw(); camera.end(); }
  • 29. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm void testApp::onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time){ // 取得したTLEをファイルに保存 ! ! string name; string path; ofstream file; name = invader.getID(); ofStringReplace(name, "://", ""); path = ofToDataPath(""); path = ofFilePath::join(ofFilePath::getEnclosingDirectory(path), "Library"); path = ofFilePath::join(path, name + ".txt"); file.open(path.c_str()); if (file.is_open()) { file << name << endl; file << tle.line[0] << endl; file << tle.line[1] << endl; file.close(); // SGPをセットアップ sgp.setup(path.c_str()); } }
  • 30. ARTSAT API + ofxSGPで衛星軌道を取得 2 ‣ 完成! 表示されている小さな点が、PRISM衛星!!
  • 31. ARTSAT API + ofxSGPで衛星軌道を取得 3 ‣ 衛星の点が表示されるだけでは、よくわからない ‣ 地球を実際のスケールで描いてみる ‣ 地球の赤道半径、6378km ‣ 6378kmの球を描けばよい
  • 32. ARTSAT API + ofxSGPで衛星軌道を取得 3 ‣ testApp.h #pragma once ! #include #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxARTSATAPI.h" "ofxSgp.h" class testApp : public ofxiOSApp, private ofxSAT::Notifier { public: void setup(); void update(); ! … (中略) … ! }; virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time); virtual void onNotifyData(ofxSATTime const& time); ofxInvaderSAT invader; ofxSgp sgp; std::vector<ofxSATTime> available; ofEasyCam camera; ofxSATTime epoch; ofxSATTime current; ofBoxPrimitive box; ofSpherePrimitive earth; static const int EARTH_SIZE = 6378; static const int TIME_SCALE = 100;
  • 33. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ // 画面設定 ofBackground(0); ofSetFrameRate(30); // INVADERのセットアップ if (invader.setNotifier(this) == SATERROR_OK) { if (invader.setup() == SATERROR_OK) { cout << "Hello ARTSAT." << endl; } } // カメラ設定 camera.setFov(45); camera.setFarClip(100000); camera.setDistance(30000); // 時間設定 epoch = ofxSATTime::currentTime(); current = epoch; // 衛星設定 } box.set(500);
  • 34. ARTSAT API + ofxSGPで衛星軌道を取得 1 ‣ testApp.mm void testApp::update(){ current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE); sgp.update(&current); // 衛星の位置を設定 } box.setPosition(sgp.getPos()); ! void testApp::draw(){ camera.begin(); // 地球を描画 ofSetColor(0, 127, 255); earth.setRadius(EARTH_SIZE); earth.setPosition(0, 0, 0); earth.drawWireframe(); // 衛星を描画 ofSetColor(255); box.draw(); } ! camera.end(); … (後略) …
  • 35. ARTSAT API + ofxSGPで衛星軌道を取得 3 ‣ 地球の周囲を周回!
  • 36. ARTSAT API + ofxSGPで衛星軌道を取得 4 ‣ さらに、いろいろ工夫してみる ! ‣ 時間の経過スピードを変えてみる (例:60倍速) ‣ 指定した過去から始める ! ‣ 軌道を線で描く
  • 37. ARTSAT API + ofxSGPで衛星軌道を取得 4 ‣ testApp.h #pragma once ! #include #include #include #include #include ! "ofMain.h" "ofxiOS.h" "ofxiOSExtras.h" "ofxARTSATAPI.h" "ofxSgp.h" class testApp : public ofxiOSApp, private ofxSAT::Notifier { public: void setup(); … (中略) … ! }; virtual void onNotifyTLE(ofxSAT::TLERec const& tle, ofxSATTime const& time); virtual void onNotifyData(ofxSATTime const& time); ofxInvaderSAT invader; ofxSgp sgp; std::vector<ofxSATTime> available; ofEasyCam camera; ofxSATTime epoch; ofxSATTime current; ofBoxPrimitive box; ofSpherePrimitive earth; ofImage earthTexture; ofMesh orbit; static const int EARTH_SIZE = 6378; static const int TIME_SCALE = 100;
  • 38. ARTSAT API + ofxSGPで衛星軌道を取得 4 ‣ testApp.mm #include "testApp.h" ! void testApp::setup(){ // 画面設定 ofBackground(0); ofSetFrameRate(30); // INVADERのセットアップ if (invader.setNotifier(this) == SATERROR_OK) { if (invader.setup() == SATERROR_OK) { cout << "Hello ARTSAT." << endl; } } // カメラ設定 camera.setFov(45); camera.setFarClip(100000); camera.setDistance(30000); // 時間設定 epoch = ofxSATTime::currentTime(); current = epoch; // 衛星の大きさ設定 box.set(500); // 軌道の描画モード設定 orbit.setMode(OF_PRIMITIVE_LINE_STRIP); }
  • 39. ARTSAT API + ofxSGPで衛星軌道を取得 4 ‣ testApp.mm void testApp::update(){ current = epoch + ofxSATTimeDiff(ofGetElapsedTimef() * TIME_SCALE); sgp.update(&current); // 衛星の位置を設定 } box.setPosition(sgp.getPos()); orbit.addVertex(sgp.getPos()); orbit.addColor(ofFloatColor(1.0,1.0,0.0)); ! void testApp::draw(){ camera.begin(); // Zバッファー ofEnableDepthTest(); // 地球を描画 ofSetColor(0, 0, 255); earth.setRadius(EARTH_SIZE); earth.drawWireframe(); // 衛星を描画 ofSetColor(255); box.draw(); // 軌道を描画 orbit.draw(); } ofDisableDepthTest(); camera.end();
  • 40. ARTSAT API + ofxSGPで衛星軌道を取得 4 ‣ 完成!!