
( me fait penser à Peinture Cover the Earth Sherwin Williams (XXH0284) - Publicité extérieure de RC Maxwell Company - Bibliothèques Duke )
Le fichier JSL ci-joint (ci-dessous) n'utilise pas le fuseau horaire du post précédent . (Mais ce sera bientôt le cas dans un article.) Pour l’instant, capturez simplement un ensemble d’images pour réaliser l’animation.
Il existe de nombreux sites Web décrivant comment procéder. Ils semblaient tous compliqués, alors j'ai essayé quelque chose de simple. Cela semble produire des résultats raisonnablement corrects. L'image ci-dessus représente une période de 24 heures fin octobre. Le soleil s'est déplacé vers le sud ; l'hémisphère sud a des journées longues et l'hémisphère nord des journées courtes. D’où vient cette forme fascinante ?
Le soleil brille sur la moitié de la terre. L'autre moitié est sombre. C'est un peu contre-intuitif, mais le graphique ci-dessus utilise l'anti-soleil (faute d'un meilleur nom) pour projeter l'obscurité sur la moitié de la terre opposée au soleil.
Il est assez simple de trouver le point sur la Terre directement sous le soleil en fonction de l'heure de la journée et de la période de l'année. Le soleil se déplace jusqu'à 23,5 degrés nord vers le 21 juin et 23,5 degrés sud le 21 décembre. Dans ce modèle simplifié, le soleil suit une chronologie symétrique en forme de sinus, même si je pense qu'en réalité, il passe plus de temps sous l'équateur . Et, en 24 heures, le soleil parcourt 360 degrés de longitude. C'est donc le centre de la lumière, ou de l'obscurité dans ce cas.
Où sont les bords ?Le terminateur est la ligne crépusculaire.Il se trouve à 90 degrés du centre de la lumière, dans toutes les directions. Dessinez un cercle sur la carte, à 90 degrés du centre du soleil sur la face de la carte, et coloriez l'intérieur ou l'extérieur. J'ai trouvé les mathématiques dont j'avais besoin ici , sous la forme d'une équation qui répond à la question « si je commence à la latitude, longitude et parcourt X miles avec un relèvement de B degrés, à quelle latitude et longitude vais-je arriver ? »90 degrés correspondent à environ 6 000 milles sur notre planète natale.
La pièce suivante du puzzle est un exemple tiré de l'index de script qui dessine une spirale à l'aide de la fonction XY.

Puis-je mettre une carte derrière ça ?Clic droit->BackgroundMap->SimpleEarth...

Parfait! ce n'est plus une spirale circulaire, elle est déformée par la projection de la carte... ce qui est exactement ce qui est nécessaire pour projeter également le cercle d'illumination du soleil sur la carte plate. Déplacez un peu les axes (relâchez la souris pour rafraîchir la carte) et observez la spirale changer de forme pour rester sur les mêmes zones.


L'exemple en spirale génère des valeurs Y légèrement au-delà de 90. La pointe même de la projection pointue commence à montrer une anomalie. N'y allez pas.
Retour au graphique jour/nuit : j’ai essayé plusieurs variantes et celle-ci est la plus satisfaisante. Faites en sorte que la largeur du trait de la spirale soit large, mais pas trop large. Et augmentez le nombre de boucles en spirale, mais pas trop. Rendre la couleur de la ligne noire, et peut-être transparente (pour une future version de JMP).Le nombre de boucles en spirale commence à ralentir le graphique après un moment ; 20 est rapide, 200 est lent. Avec 20, vous aurez besoin d'une ligne plus épaisse pour ombrer tout ce qui se trouve entre les deux, mais des lignes plus épaisses créent des bords plus irréguliers. JMP modifie ses outils de dessin sous-jacents dans une prochaine version, et la transparence sera superbe dans cet exemple, mais pour JMP 12, la transparence dans la spirale créera des artefacts là où la ligne épaisse se chevauche.
Autre pièce du puzzle : avec les arrière-plans de carte JMP, vous obtenez en fait deux arrière-plans, une image bitmap et un dessin au trait des limites.

Ces deux parties apparaissent sous forme de calques distincts si vous regardez dans la boîte de dialogue de personnalisation du graphique.

Ils ont leurs propres propriétés, mais plus important encore, ils ont leurs propres positions en tant qu'éléments 1 et 2 dans la liste. C'est important, car "l'ombre nocturne" doit être dessinée au-dessus de l'image de fond de la carte, puis la forme de la limite doit être dessinée par-dessus (pour obtenir l'effet en haut de cet article). Ainsi, le script en spirale sera inséré en position 2.

qui apparaît dans la boîte de dialogue graphique personnalisée entre l'arrière-plan et la forme. (L'autre script est vide, ce qui aura du sens lorsque vous verrez le JSL ci-joint.)

Pour être juste envers les sites Web avec des exemples compliqués : ils peuvent être compliqués car ils font une projection et déterminent où faire l'ombrage s'il est divisé en plusieurs régions. Ce code utilise le support intégré pour transformer les coordonnées des données en espace cartographique.
Le fichier joint est probablement encore configuré pour produire les 24 images de l'animation dans votre répertoire $temp. Vous pouvez utiliser un utilitaire GIF pour créer l'animation, ou vous pouvez modifier le JSL pour ne pas boucler ou ne pas fermer les 24 rapports individuels.
La prochaine fois : ajouter des veilleuses...
Projected circle of sunlightProjected circle of sunlightProjected circle of sunlightProjected circle of sunlightCercle de lumière solaire projeté
Edit 4 janvier 2017 : il y a au moins un bug dans le JSL ci-joint. Tel qu'écrit, il ne se déroulera qu'entre le 21 juin et le 21 décembre en raison de l'interpolation du numéro du jour en cours. Quelque chose comme ceci devrait faire mieux :
currentangle = Interpolate( currentpoint, lowpoint-365, 2 * Pi(), highpoint, Pi(), lowpoint, 2 * Pi(), highpoint+365, Pi() );
LowPoint est 356 et HighPoint est 173 ; ils représentent les jours où le soleil est à l'extrême sud et à l'extrême nord. LowPoint-365 se situe en décembre de l’année précédente et HighPoint+365 se situe en juin de l’année suivante. L'interpolation a désormais la possibilité d'obtenir un résultat non manquant tout au long de l'année.