本ページはプロモーションが含まれています

ギャラリー

Canvasアニメーションで自転する地球と月を描く

CATEGORY
REV.
DRAWN BY
TOM
SHEETS
2枚
Earth & Moon(自転する地球と月)

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

夜中にふと、宇宙から地球を眺めたくなる時があります。

残念ながら私の給料では宇宙に行けないので、ブラウザの中に地球と月を浮かべてみました。

画像や動画は使っていません。大陸・雲・夜の街の明かり・オーロラ・月のクレーターまで、HTML・CSS・JavaScriptのCanvasでその場で描いています。

地球はゆっくり自転し、そのまわりを月が回り、低い軌道を人工衛星が横切ります。

ドラッグで地球を好きな向きに回せます。

地球と月の楽しみ方

ボタンは画面の下にまとめてあります。

眺めるだけでも十分ですが、いじってみると見える景色が変わります。

  • ドラッグ:横に動かすと地球が回り、縦に動かすと北極や南極のほうから見下ろせます
  • 時間:自転と月の公転が速くなります
  • 季節:地軸の向きが変わります。夏至では北極がずっと昼(白夜)、冬至では北極がずっと夜(極夜)になります
  • 都市名:東京・ニューヨーク・カイロなど14都市の位置と名前が出ます
  • 衛星:低い軌道を回る人工衛星が、地球の手前を通るときだけ見えます
  • 軌道:月の通り道の点線を表示・非表示にします
  • 宇宙の音:低い音を重ねた、ゆっくり揺れる環境音が流れます
  • 全画面:PCならモニターいっぱいに宇宙が広がります
おすすめは、季節を動かして北極を見ることです。

夏至では太陽が沈まず、冬至では一日中夜のままになります。

地軸が23.4度傾いているという一行の知識が、目で見える形になります。

この地球と月のつくり

見た目重視で作ったので、しくみは簡単なメモだけにしておきます。

大陸の形だけ地図データとライブラリの力を借りています。

見えているものしくみ
大陸Natural Earthの世界地図データ(world-atlasの1:110m)を、d3-geoの正射図法で球に投影しています
自転と地軸地球を傾けて回しています。季節スライダーは、この傾きの向きを変えています
雲小さな円を東西に並べた雲を、大きさを変えて3枚重ねて縁をぼかしています。雲は地表より少し速く流れます
昼と夜太陽と反対側の半球を、半径を少しずつ変えた円で何度も塗り、境目をなめらかにしています
街の明かり主な都市64か所の座標に光を置き、夜側に入ったものだけ光らせています
オーロラ夜側に来た極のまわりに、緑と青の輪をゆっくり脈打たせています
人工衛星地球の半径の1.16倍の軌道を回ります。地球の裏側に入ると隠れます
月暗い「海」とクレーターを先に1枚の画像として描き、地球と同じ向きから光を当てています
宇宙の音Web Audio APIで低い音(正弦波3つと三角波1つ)を重ね、ゆっくり音量を揺らしています

大きさと動きは、実物どおりの部分と、見やすさのために変えた部分があります。

項目実物この作品
月の直径地球の約0.27倍実物と同じ比率
地球と月の距離約38万km(地球の半径の約60倍)画面に収まるよう、地球の半径の約2〜3倍まで縮めています
月の公転約27.3日で1周(自転の約27倍の時間)眺めていて動きが分かるよう速くしています
人工衛星の高度国際宇宙ステーションで約400km(地球の半径の0.06倍)見えるように大きく離しています

実物の距離のまま描くと、月は画面の外のはるか遠くで、点のように小さくなってしまいます。

「宇宙は思ったよりスカスカ」という事実を、作りながら改めて思い知りました。

  • 地図データとライブラリはjsDelivrから読み込むため、最初の表示に少し時間がかかります
  • 画面の外にあるときは描画を止めて負荷を抑えています
  • OSで「動きを減らす」設定をオンにしている人には、止まった状態で表示します
NEXT READ本棚から1本

AIで開発を組み直すなら、まずこの5冊から

入門・実践・設計まで、Claude Codeの本をレベル別に5冊選んで比べました。

→ おすすめ5冊を見る

  • この記事を書いた人
  • 最新記事

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

ギャラリー