
( mi ricorda Copri la terra Sherwin Williams Paint (XXH0284) - Pubblicità esterna RC Maxwell Company - Duke Libraries )
Il file JSL allegato (sotto) non utilizza il fuso orario del messaggio precedente . (Ma lo farà presto, in un post.) Per ora, basta catturare una serie di immagini per realizzare l'animazione.
Ci sono molti siti web che descrivono come farlo. Sembravano tutti complicati, quindi ho provato qualcosa di semplice. Sembra produrre risultati ragionevolmente corretti. L'immagine sopra rappresenta un periodo di 24 ore a fine ottobre. Il sole si è spostato a sud; l'emisfero meridionale ha giornate lunghe e l'emisfero settentrionale ha giornate corte. Da dove viene quella forma affascinante?
Il sole splende su metà della terra. L'altra metà è buia. È un po' controintuitivo, ma il grafico qui sopra utilizza l'antisole (in mancanza di un nome migliore) per proiettare l'oscurità sulla metà della terra opposta al sole.
È piuttosto semplice trovare il punto sulla Terra direttamente sotto il sole in base all'ora del giorno e al periodo dell'anno. Il sole si sposta fino a 23,5 gradi nord intorno al 21 giugno e 23,5 gradi sud il 21 dicembre. In questo modello semplificato, il sole segue una linea temporale simmetrica a forma di seno, anche se penso che in realtà trascorra più tempo sotto l'equatore . E, nel corso di 24 ore, il sole percorre 360 gradi di longitudine. Quindi quello è il centro della luce, o dell'oscurità in questo caso.
Dove sono i bordi?IL terminatore è la linea del crepuscolo.Si trova a 90 gradi dal centro della luce, in ogni direzione. Disegna un cerchio sulla mappa, a 90 gradi dal centro del sole sulla faccia della mappa, e colora l'interno o l'esterno. Ho trovato i calcoli di cui avevo bisogno Qui , sotto forma di un'equazione che risponde alla domanda "se parto da lat, lon e percorro X miglia con una direzione di B gradi, a quale lat, lon arriverò?"90 gradi corrispondono a circa 6000 miglia sul nostro pianeta natale.
Il prossimo pezzo del puzzle è un esempio tratto dall'indice di scripting che disegna una spirale utilizzando la funzione XY.

Posso mettere una mappa dietro?Fare clic con il pulsante destro del mouse->BackgroundMap->SimpleEarth...

Perfetto! non è più una spirale circolare, viene distorta dalla proiezione della mappa... che è esattamente ciò che serve per proiettare il cerchio dell'illuminazione solare anche sulla mappa piatta. Muovi leggermente gli assi (rilascia il mouse per rinfrescare la mappa) e osserva la spirale cambiare forma per rimanere sulle stesse aree.


L'esempio della spirale genera valori Y leggermente superiori a 90. La punta stessa della proiezione appuntita comincia a mostrare un'anomalia. Non andare lì.
Torniamo al grafico giorno/notte: ho provato diverse varianti e questa è la più soddisfacente. Rendi la larghezza della linea della spirale ampia, ma non troppo ampia. E rendi il numero di anelli a spirale grande, ma non troppo grande. Rendi la linea nera e magari trasparente (per una futura versione di JMP).Il numero di cicli a spirale inizia dopo un po' a rallentare il grafico; 20 è veloce, 200 è lento. Con 20, avrai bisogno di una linea più spessa per ombreggiare tutto il resto, ma le linee più spesse creano bordi più irregolari. JMP modificherà gli strumenti di disegno sottostanti in una prossima versione e la trasparenza avrà un bell'aspetto in questo esempio, ma per JMP 12, la trasparenza nella spirale creerà artefatti nei punti in cui la linea spessa si sovrappone a se stessa.
Un altro pezzo del puzzle: con gli sfondi della mappa JMP, ottieni effettivamente due sfondi, un'immagine bitmap e un disegno di linee di confine.

Queste due parti vengono visualizzate come livelli separati se guardi nella finestra di dialogo Personalizza grafico.

Hanno le proprie proprietà ma, cosa più importante, hanno le proprie posizioni come elementi 1 e 2 nell'elenco. Questo è importante, perché l'"ombra notturna" deve essere disegnata sopra l'immagine della mappa di sfondo, e quindi la forma del confine deve essere disegnata sopra (per ottenere l'effetto nella parte superiore di questo post). Quindi, lo script a spirale verrà inserito nella posizione 2.

che appare nella finestra di dialogo del grafico personalizzato tra sfondo e forma. (L'altro script è vuoto, il che avrà senso quando vedrai il JSL, allegato di seguito.)

Per essere onesti nei confronti dei siti web con esempi complicati: possono essere complicati perché stanno eseguendo una proiezione e cercando di capire dove fare l'ombreggiatura se è suddivisa in più regioni. Questo codice utilizza il supporto integrato per trasformare le coordinate dei dati nello spazio della mappa.
Probabilmente il file allegato è ancora configurato per produrre i 24 fotogrammi per l'animazione nella directory $temp. È possibile utilizzare un'utilità GIF per creare l'animazione oppure modificare il JSL per non ripetere o chiudere i 24 report individuali.
La prossima volta: aggiungere alcune luci notturne...
Projected circle of sunlightProjected circle of sunlightProjected circle of sunlightProjected circle of sunlightCerchio proiettato di luce solare
Modifica 4 gennaio 2017: c'è almeno un bug nel JSL allegato. Come scritto, funzionerà solo tra il 21 giugno e il 21 dicembre a causa dell'interpolazione del numero del giorno corrente. Qualcosa del genere dovrebbe fare di meglio:
currentangle = Interpolate( currentpoint, lowpoint-365, 2 * Pi(), highpoint, Pi(), lowpoint, 2 * Pi(), highpoint+365, Pi() );
Il punto basso è 356 e il punto alto è 173; rappresentano i giorni in cui il sole è all'estremo sud e all'estremo nord. LowPoint-365 è nel dicembre dell'anno precedente e HighPoint+365 è nel giugno dell'anno successivo. Ora l'interpolazione ha la possibilità di ottenere un risultato non mancante per tutto l'anno.