マニュアル

スクリプト

スクリプトコンソールと、ツアーの作り方です。

AstroPlotorium ユーザーマニュアル

空の上のスクリプトコンソール

スクリプトコンソールは、手で使うのと同じ操作を動かす小さな JavaScript プログラムを実行します。天体へ行く、視野を決める、時計を変える、レイヤーを切り替える、メインビューを切り替える。七つのオブジェクトに対する決まったコマンドを呼びます。camera、sky、time、observer、display、core、console です。

左下のスクリプトボタン、または F12、Ctrl+J か Command+J、テキスト欄に入力していないときのバッククォートで開きます。Esc はコンソールを閉じます。ビューを変えてもエディタは開いたままで、エディタが覆わないよう空の領域が短くなります。

タブ

  • Script。 編集して実行するプログラムです。
  • Console。 一行ずつです。Enter で実行します。Up と Down は、このセッションで打った行をさかのぼります。1 + 1 のような値は 2 を出します。付けた名前は、Script タブからスクリプトを実行するか、アシスタントがスクリプトを実行するまで、次の行でも使えます。
  • Output。 エラー、読み込みと実行の状態、core.output、そしてスクリプトから実行したときの core.help、core.search、sky.listLayers、core.listOptions の一覧です。
  • System Log。 操作がいま行ったことを、コピーできるスクリプトの行として書いたものです。レイヤー、等級の限界、時計、メインビューを変えると、対応するコマンドがここに書かれます。コンソールを閉じているあいだも一覧は伸びます。このタブの行をコピーするのが、名前を覚えるいちばん簡単な方法です。

Clear はタブごとに仕事が違います。Script では空のキャプションを消し、プログラムはそのままです。Console では記録を消します。Output ではメッセージを消します。System Log では履歴を消します。

ファイル

ファイルメニューは Script タブにあります。現在の名前(保存するまでは untitled)のあと、New Script、Load、Save、Save As があります。

スクリプトは、ユーザーフォルダの scripts にあります。ホームメニューの Open user folder がそのディレクトリを見せます。Load と Save As はそこから始まり、そのフォルダの .js ファイルを受け付けます。

Save は現在のファイルを書き込みます。まだ保存したことがなければ、名前を尋ねます。ファイルメニューの横の Refresh は、そのファイルをディスクから読み直します。New Script はエディタを空にします。未保存の編集があれば、保存、破棄、キャンセルを尋ねます。

空のエディタでコンソールを初めて開くと、tour.js を読み込みます。そのファイルがなければ作られ、あとからの更新では触られません。tour_*.js という名前のサンプルツアーは、アプリの更新で置き換わるので、編集を残したいときは別名にコピーしてください。

実行と停止

Run は Script タブを再生します。スクリプトがすでに動いているあいだは使えません。実行のたびにきれいに始まります。前の実行の名前と、Console タブの名前は消えます。

Play の横のチェックボックスは、その実行を Presentation で始めます。ツールバーは隠れ、キャプションは残ります。このセッションだけに効き、初期値はオフです。スクリーンショットを参照してください。

Stop は実行を取り消します。クリックを待っている一時停止も含みます。Presentation がオンでスクリプトが動いているあいだ、右下のキャンセルボタンがスクリプトを止め、Presentation を抜けます。

core.exit() は、すでに出したコマンドのあとでスクリプトを終えます。そのあとの行は飛ばされます。Stop は実行をすぐに切ります。

コマンドの動き方

呼び出しを続けて書きます。旋回、ズーム、ドラッグ、アニメーションする時刻のステップは、次の行が走る前に終わります。観客に待ってほしいとき以外、camera.lookAt と camera.setFov のあいだに一時停止は入れません。

camera.lookAt("Sirius");
camera.setFov(20);
core.wait(1500);
camera.lookAt("Mars");

一時停止は core.wait と core.waitForUser です。await という語は拒否されます。core.wait は最大 2 分です。

observer.getLocation() と core.getState() は、同じスクリプトのあとの行が変える前の、いまの絵を読みます。戻したいときは、先に値を保存します。

const home = observer.getLocation();
observer.setLocation("Portland");
camera.lookAt("Saturn");
observer.setLocation(home);

camera.lookAt や time.addTime を呼ぶループは、各ステップを順に再生します。それ以上のステップを並べるのを止めるには、ループの中で core.exit() を呼びます。

名前

camera.lookAt と core.search は、通称(Sun、Mars、Moon、Sirius)、カタログ番号(MB-499、HYG-32349、CON-Ori、DSO-M-31)、馴染みのあるラベル(M31、HIP 32349)を受け付けます。同じ名前の天体がいくつかあると、コマンドは失敗し、それらを列挙します。core.search("Portland") は、候補を Output に出します。プロンプトで打ったときは Console の記録に出します。

角度

ただの数は度です。文字列も渡せます。

  • 赤経のような時には "5h 34m 32s"。
  • 度分秒には "5d 23m 28s" または "5 deg 23m"。
  • 視野には "2d 3m" または "0h 30m"。

camera.lookAtRaDec は、すでに画面にある座標系で向けます。黄道または銀河座標では、二つの数はその枠の経度と緯度です。lookAtEquatorial、lookAtEcliptic、lookAtGalactic、lookAtHorizontal は名前のついた枠で向け、画面上の座標系はそのままです。水平座標の方位角は、北から時計回りです。

Camera

呼び出し すること
camera.lookAt("Saturn") その天体を選び、そちらへ向ける。旋回が終わるまで待つ。
camera.lookAt(lng, lat) 現在の枠の経度と緯度へ向ける。二つの数、または角度の文字列。
camera.lookAtRaDec(ra, dec) 現在の枠の二つの座標による、同じ種類の照準。
camera.lookAtEquatorial(lng, lat) 赤道座標の赤経と赤緯。
camera.lookAtEcliptic(lng, lat) 黄道の経度と緯度。
camera.lookAtGalactic(lng, lat) 銀河座標の経度と緯度。
camera.lookAtHorizontal(az, alt) 現在の場所と時刻での方位角と高度。
camera.setFov(2) 視野。camera.zoom は同じ呼び出しです。ズームを待つ。
camera.rotate(angH, angV) ドラッグ分だけ回す。単位は度。正の angH は右へのドラッグに対応します。正の angV は下へのドラッグに対応します。ピッチは ±90° の中に留まります。
camera.followTarget(true) 天球とプラネタリウムの Track。オンにすると対象へ向き、待ちます。オフにするとビューはその場所に残ります。その二つのビューの外では、フラグは保存され、カメラは留まります。
camera.followViewFrom(true) 3D Universe で地球または太陽への Camera follows。省略できる第二引数は "Earth"、"Sun"、399、10。省略すると現在の天体を保ちます。オンにすると待ちます。3D Universe の外では、フラグは保存され、カメラは留まります。未知の天体は失敗します。
camera.setOrbitAltitudeKm(400) 3D Orbit で、球体の上の高さ。キロメートル。許される範囲は 50 から 500000。
camera.setOrbitIssTrack(true) 3D Orbit の簡易的な円の地上軌道(51.6°、約 93 分)。教えるための経路であり、ライブのステーション要素ではありません。
camera.setOrbitFly(true) 3D Orbit で WASD の飛行のロックを外し、ホバーとステーション軌道を離れる。

Sky

sky.setLayer("constellationLines", true) はレイヤーを出します。sky.showLayer(id) と sky.hideLayer(id) は、表示を埋めた同じものです。照合は大文字小文字、空白、ハイフン、アンダースコアを無視します。未知の id は失敗します。sky.listLayers() は名前を出します。

Id レイヤー
stars 恒星カタログ
milkyWay、milkyWayDots 写真の帯と、点描
starNames、bayer、hip、flamsteed 恒星のラベル
messier、caldwell、majorDso、minorDso、dsoImages 深宇宙のラベルと画像
skyCulture 星座とアステリズムの絵の親スイッチ
constellationLines、constellationBoundaries、constellationNames、constellationImages 星座の絵
asterismLines、asterismNames アステリズムの絵
equatorialGrid、eclipticGrid、galacticGrid、azimuthalGrid グリッド
eclipticLine、gridRulers 黄道の道筋と、縁の目盛り
atmosphere、land、horizonBand 空の輝き、床、地平線のシルエット
landSeeThrough、landByTime 地面の透明度
planetOrbits、dwarfPlanetOrbits、satelliteOrbits、asteroidOrbits、cometOrbits 軌道の経路
cometFx、planetNames、orbitLines、planetGrid 彗星の尾、名前、軌道線、惑星グリッド
magneticField、vanAllenBelt、bowShock、magnetopause その天体にそれがあるときの場の図
compareStars、comparePlanets 大きさの比較
allLabels ラベルの親スイッチ

sky.setCoordinateSystem は equatorial、ecliptic、galactic、horizontal を取ります。

星座とアステリズムの目は、それらのレイヤーとは別です。sky.setConstellationVisible("Ori", false) はオリオンのフラグを隠します。IAU の id、CON-Ori、名前を渡せます。sky.showConstellation と sky.hideConstellation はフラグをオンまたはオフにします。呼び出しは星座を選択せず、カメラを向けず、線と名前のレイヤーも切り替えません。絵が出ていなければ、自分で skyCulture と constellationLines をオンにしてください。sky.setConstellationPreset は all、none、zodiac を取ります。sky.listConstellations() は id、名前、フラグを出します。

アステリズムは sky.setAsterismVisible、showAsterism、hideAsterism、sky.listAsterisms() を使います。id はカタログ id、AST- にその id を足したもの、または名前です。sky.setAsterismPreset は all または none を取ります。

Time

単位は大文字小文字を区別します。Y 年、M 月、D 日、h 時、m 分、s 秒。

呼び出し すること
time.setTime("2026-08-22T12:00:00Z") その UTC の瞬間へ飛ぶ。JavaScript の Date も受け付けます。飛びは瞬間です。
time.addTime("h", 1) 現在のシミュレーション時刻から進める。値は整数で、負でも構いません。ステップはアニメーションし、スクリプトは待ちます。
time.addTime("D", 1, 0) 第三引数はアニメーションの長さで、ミリ秒です。0 は飛びます。省略すると短い滑りです。最長の滑りは 30 秒です。日や年は、time.addTime("D", 1, 20000) のように長い滑りの方が読みやすくなります。
time.autoUpdateUnit("D") Play と +1 / +10 ボタンが使う単位。
time.play() 現在のシミュレーションの瞬間から、その単位で早送り。time.play(false) と time.stop() は一時停止します。壁時計へは飛びません。
time.resume() いまに合わせ、単位を秒にし、実時間で流す。
time.reset() いまに合わせる。すでに再生中の時計は再生を続けます。
time.increment() 現在の単位の +1 に合わせる。decrement、increment10、decrement10 もあります。

時刻を参照してください。

場所とメインビュー

observer.setLocation("Portland") は都市を探します。同じ名前の都市がいくつかあると、コマンドは失敗し、国と地域を列挙するので、選び直せます。緯度と経度を二つの数として、または一つの座標文字列として渡すこともできます。一つの数は都市 id として扱われます。

observer.getLocation() は、現在の場所の id を文字列で返します。座標だけで設定したセッションは "" を返します。場所を戻したいときは、変える前に変数へ読んでください。ユーザーが保存した場所は、u- で始まる id を使います。

observer.setLookFrom("Moon") は Look from target に対応します。省略できる緯度、経度、メートルの高度があります。省略すると、その天体上の現在の観測地を保ちます。それらを省略して地球に戻ると、最後の地球の場所が復元されます。明示した緯度と経度は常に優先します。

observer.setViewMode は Main View メニューに対応します。

3D Universe、3D Orbit、2D Celestial Sphere、2D Planetarium、2D Solar System、2D Planisphere、Simulation、Ephemeris。

suncentric と earthcentric は、そのモードで 2D の太陽系の図を開きます。Console はこのエディタを開き、絵はそのままです。場面の変更はカメラを待ちます。

observer.getLookFrom() は、天体、名前、緯度、経度、高度を返します。

空の上の文字

キャプションとタイトルは、Presentation を含むすべてのビューで空の上にあります。スクリプトのその行が走ると現れます。

呼び出し すること
display.caption("Now Mars") 下のキャプションを置き換える。文字なしで呼ぶと、キャプションだけを消します。
display.print("line") キャプションの下に行を足す。
display.clear() キャプションを消す。タイトルは残ります。
display.title("Tour") 右上のタイトルを置き換える。空、または引数なしは、隠します。
display.showNavigator(true) 左のナビゲータ。Presentation がオンのあいだ、出しても何もしません。
display.showPropertyList(true) 右のプロパティパネル。
display.showCharts(true) 副画面、極座標チャート、星座早見をまとめて。
display.setView("presentation") 現在の絵の枠。default、photoreal(V キー)、presentation(P キー)。メインビューの変更ではありません。太陽系の図と星座早見では、photoreal は Presentation です。
display.setSecondaryViewFov(20) 副画面の視野。サイドチャートがオフならオンにします。
display.setSecondaryViewSync(true) メインビューをパンすると、副画面とチャートの中心もパンします。副画面の視野は独自のままです。

console.log("hello") は常に Console タブへ行きます。core.output("hello") は常に Output へ行きます。

オプション、スナップショット、画像

core.setOption("starMagnitude", 6) はスライダーかメニューの選択を設定します。レイヤーは切り替えません。core.listOptions() は id と許される値を出します。照合は大文字小文字、空白、ハイフン、アンダースコアを無視します。

Id 値
starMagnitude 1–12
starLabelMagnitude 1–7
planetScale、satelliteScale 1、2、5、10、20、50、100、200、1000、2000、3000
bortleScale 0–9。0 がいちばん暗い
starBrightness およそ 0.6–1.8
skyToneDensity、skyToneBrightness およそ 0.25–3
cometBrightness およそ 0.5–32
gridLineBrightness、constellationLineBrightness 0–2
constellationImageBrightness 0–3
lineBrightness 0–2。グリッドと星座線の明るさを両方設定する
autoRotate、clickSelectObject true または false
theme default、red、white、antiquewhite、blueprint、gold、blackwhite、navywhite、blackgreen、blackblue
planetImageModulate、view3DModulate true または false
locale system、en、ja
frameFocalLength 24、35、50、70、100、150、200、240、300、600、1000、1500、2000、2400、2800
floorChoice savanna、ocean、none
horizonChoice mountains、none
landscapePreset land、ocean、none

core.getState() は現在のビューを返します。視野、照準、対象、時刻、レイヤー、星座とアステリズムのフラグ、オプション、メインビュー、場所、表示のスイッチです。Console のプロンプトでは、オブジェクトはテキストとして出ます。スクリプトからは、Output タブに欲しいとき core.output へ渡します。

core.output(JSON.stringify(core.getState()));

core.setState(obj) は、含めたキーを戻します。fov を 20 にしただけのスナップショットは視野を変え、ほかはそのままです。Back / Forward へ一歩は押しません。

core.screenshot() は、ユーザーフォルダの screenshots に PNG を保存します。結果は、このコンピュータ上のパスを伝えます。

種類 画像
default ラベルとグリッド。サイドチャートは含みません。省略したときの種類です。
photoview ラベルとグリッドを隠す。
presentation タイトル、時計、スクリプトのタイトル、キャプション。
presentation_chart それに、オンのときのサイドチャートを足す。

ファイル名を一つ受け付けます。core.screenshot("tour.png")。

core.help() はコマンド一覧を出します。core.search("Vega") は名前の一致を出します。

短いツアー

display.title("Saturn, two views");
observer.setViewMode("2D Planetarium");
camera.lookAt("Saturn");
camera.setFov(2);
display.caption("Saturn, two degrees across the field.");
core.waitForUser("Next");
observer.setViewMode("3D Universe");
camera.lookAt("Saturn");
display.caption("The same planet, in the scaled system.");
core.waitForUser("Next");
display.clear();
display.title();

ツールバーを隠したいときは、Presentation のチェックボックスを付けて実行します。Next は、クリックするまでビューの下にあります。ラベルを省略しても、ボタンは Next と出ます。

サンプルツアー

ファイルメニューからこれらを読み込みます。

ファイル ビュー 見せるもの
tour_inner_planets.js 3D Universe 太陽、水星、金星、地球、月、火星
tour_jupiter_moons.js 3D Universe 木星、ガリレオ衛星、それから 8 日の早回し
tour_portland_sunset.js 2D Planetarium ポートランドの日没、それからベガ
tour_polaris.js 2D Planetarium 北極星の周りを回る空
tour_celestial_coords.js 2D Celestial Sphere 赤道と天の北極、黄道、銀河中心
tour_orion.js 2D Celestial Sphere オリオン、ベテルギウス、リゲル、M42、シリウス、M45
tour_eclipse_2026.js 3D Universe、それから 2D Planetarium 2026 年 8 月 12 日の皆既日食、それからバレンシアからの皆既。Next を待ちます。

書けること

言語はふつうの JavaScript です。let と const、関数、ループ、Math、Date、JSON、テンプレート文字列。一つのファイルがスクリプト全体です。import はありません。

fetch も、ファイルシステムへのアクセスも、setTimeout もありません。一時停止には core.wait を使います。time.setTime は ISO の UTC 文字列か Date を求めます。計算するだけで、カメラや時計を待たないスクリプトは、約 30 秒で止まります。旋回や Next を待っている時間は、その中に数えません。

このコンピュータ上のアシスタントは、同じコマンドを呼べます。AIアシスタントを参照してください。