SlideShare a Scribd company logo
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
‣ 完成!!

More Related Content

What's hot

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_18
Koichiro 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基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
Atsushi Tadokoro
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
gos-k
 
Geolocation4 system
Geolocation4 systemGeolocation4 system
Geolocation4 system
Jun Chiba
 
Corona HandsOn#6
Corona HandsOn#6Corona HandsOn#6
Corona HandsOn#6
Tetsuo Ono
 

What's hot (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
 

Viewers also liked

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の連携 -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 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の連携1
Atsushi 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 - ライブコーディング 1
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
 
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートIIopenFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
openFrameworks 外部ファイルを利用する - 画像、動画 - 多摩美メディアアートII
Atsushi Tadokoro
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
Atsushi 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グラフィクス、OpenGL
Atsushi Tadokoro
 

Viewers also liked (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
 

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

Gdg geo2
Gdg geo2Gdg geo2
Gdg geo2
Kentaro Ishimaru
 
2012 07 14_osm-ws_2
2012 07 14_osm-ws_22012 07 14_osm-ws_2
2012 07 14_osm-ws_2
Tom 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 ロケーションビジネスジャパン osm
Taichi 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 青年土地家屋調査士 全国大会講演資料 2013
Taichi 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 R
Junji Yamakawa
 
2012 07 27_osm_project10
2012 07 27_osm_project102012 07 27_osm_project10
2012 07 27_osm_project10
Tom 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
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
chikathreesix
 
「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
 

Similar to 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日)
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 

More from 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 と ofxCv
Atsushi 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
 

More from 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)
 

Recently uploaded

「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 

Recently uploaded (14)

「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 

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 ‣ 完成!!