
(思い出したCover the Earth シャーウィン・ウィリアムズ・ペイント (XXH0284) - RC Maxwell Company 屋外広告 - Duke Libraries )
添付された JSL ファイル (以下) は、現在のタイムゾーンを使用していません。前の投稿。 (ただし、近日中に投稿する予定です。) 今のところは、アニメーションを作成するために一連の画像をキャプチャするだけです。
これを行う方法を説明する Web サイトがたくさんあります。 どれも難しそうなので、簡単なものを試してみました。 かなり正しい結果が得られるようです。 上の画像は、10 月下旬の 24 時間を表しています。 太陽は南に移動しました。南半球は日が長く、北半球は日が短いです。 その魅力的な形はどこから来たのでしょうか?
太陽は地球の半分を照らします。 残り半分は暗いです。 少し直観に反しますが、上のグラフはアンチサン (もっと良い名前が知りませんでした) を使用して、太陽の反対側の地球の半分に暗闇を投影しています。
時刻と時期に基づいて、太陽の真下にある地球上の点を見つけるのは非常に簡単です。 太陽は6月21日頃に北緯23.5度まで、12月21日には南緯23.5度までさまよう。 この単純化されたモデルでは、太陽は対称的な正弦波状のタイムラインに従います。実際には赤道の下でより多くの時間を費やしていると思いますが。 そして、太陽は24時間かけて経度360度を横切ります。 つまり、それが光の中心、この場合は暗闇です。
エッジはどこにありますか?のターミネータートワイライトラインです。ライトの中心からあらゆる方向に 90 度です。 地図上の太陽の中心から 90 度離れた位置に円を描き、その内側または外側に色を付けます。 必要な数学を見つけましたここは、「緯度、経度から出発し、方位 B 度で X マイル移動した場合、緯度、経度は何時に到着しますか?」という質問に答える方程式の形で表されます。90度は私たちの故郷の惑星では約6000マイルに相当します。
パズルの次のピースは、XY 関数を使用してスパイラルを描くスクリプト インデックスの例です。

その後ろに地図を置いてもいいですか?右クリック -> バックグラウンドマップ -> SimpleEarth...

完璧!それはもはや円形の螺旋ではなく、地図の投影によって歪められています...これはまさに太陽の照明の円を平面の地図上に投影するために必要なものです。 軸を少し移動し (マウスを放してマップを更新します)、同じ領域上に留まるようにらせんの形状が変化することを観察します。


スパイラルの例では、90 をわずかに超える Y 値が生成されます。 尖った突起の先端が異変を見せ始めている。 そこには行かないでください。
昼夜グラフに戻る: いくつかのバリエーションを試しましたが、これが最も満足のいくものです。 スパイラルの線の幅は広めにしますが、広すぎないようにします。 スパイラル ループの数は大きくしますが、多すぎないようにします。 線の色を黒にし、場合によっては透明にします (JMP の将来のバージョンの場合)。スパイラル ループの数により、少し後にグラフの速度が低下し始めます。 20 は速く、200 は遅いです。 20 の場合、その間のすべてをシェーディングするには太い線が必要になりますが、線が太いとエッジがさらに不規則になってしまいます。 JMP は今後のリリースで基礎となる描画ツールを変更する予定で、この例では透明度が素晴らしく見えますが、JMP 12 の場合、スパイラルの透明度によって太い線が重なる部分にアーティファクトが作成されます。
パズルのもう 1 つのピース: JMP マップの背景を使用すると、実際には 2 つの背景、ビットマップ画像、および境界線の描画が得られます。

グラフのカスタマイズ ダイアログを見ると、これら 2 つの部分が別個のレイヤーとして表示されます。

これらには独自のプロパティがありますが、さらに重要なのは、リスト内の項目 1 と 2 として独自の位置を持っていることです。 これは重要です。背景のマップ画像の上に「夜の影」を描画し、その上に境界形状を描画する必要があるためです (この投稿の上部の効果を得るために)。 したがって、スパイラル スクリプトは位置 2 に挿入されます。

これは、背景と形状の間のカスタマイズされたグラフ ダイアログに表示されます。 (もう 1 つのスクリプトは空ですが、以下に添付されている JSL を見るとそれが理解できるでしょう。)

複雑な例を含む Web サイトに公平を期すために、Web サイトは投影を実行し、複数の領域に分割されている場合にどこにシェーディングを行うかを計算しているため、複雑になる可能性があります。 このコードは、データ座標をマップ空間に変換するための組み込みサポートを使用しています。
添付ファイルは、$temp ディレクトリにアニメーション用の 24 フレームを生成するように設定されている可能性があります。 GIF ユーティリティを使用してアニメーションを作成したり、JSL を変更して 24 個の個別レポートをループさせたり閉じたりしないようにすることもできます。
次回: 常夜灯を追加します...
Projected circle of sunlight投影された太陽光の円
2017 年 1 月 4 日編集: 添付された JSL に少なくとも 1 つのバグがあります。 記載されているように、現在の日の数値が補間されるため、6 月 21 日から 12 月 21 日までの間のみ実行されます。 このようなものはもっとうまくいくはずです:
currentangle = Interpolate( currentpoint, lowpoint-365, 2 * Pi(), highpoint, Pi(), lowpoint, 2 * Pi(), highpoint+365, Pi() );
LowPoint は 356、HighPoint は 173 です。それらは太陽がはるか南とはるか北にある日を表します。 LowPoint-365 は前年 12 月、HighPoint+365 は翌年 6 月です。 これで、補間では一年中欠損のない結果を得ることができます。