Categorie archief: Technisch

De Terminator of dag-nacht grens

Toen ik laatst in mijn prototype stond vroeg ik me af waar het nu precies dag is en waar is het nacht. En hoe ziet dat er uit in mijn EarthBowl. Logisch dat je daarvoor een dag in het jaar moet kiezen en een tijdstip op de dag.

Ik ben gaan zoeken naar een algoritme. Al snel kwam ik uit op de site van AstronomieAntwoorden. Op nr. 23 staat daar de formule om de terminator te berekenen. De terminator, de grens tussen dag en nacht, wordt berekent tot op een nauwkeurigheid van ongeveer 1 graad. Hij wordt berekend in latlons, precies dat wat ik nodig heb. Deze latlons kan ik door mijn algoritme halen, en vervolgens heb ik de terminator in kijkrichting en kijkhoek, mijn dimensies voor de EarthBowl.

Hieronder zie je een filmpje. Hier zie je de positie van de terminator bekeken vanuit Rotterdam voor elk uur vanaf 0.00 uur GMT. Het totale filmpje bevat 36 frames, en omvat 24 uur.  Het is berekend voor 13 Mei. Voor alle duidelijkheid, de afbeelding van de EarthBowl heb ik hier als het ware platgedrukt naar een cirkel. Vanuit het middenpunt (de antipode van Rotterdam) is naar boven het noorden, naar rechts het oosten, het zuiden dus naar onder en het westen naar links. In het centrum van de cirkel is de kijkhoek 90 graden naar beneden. Deze verloopt lineair naar de horizontale kijkhoek. Deze punten liggen dus op de rand van de cirkel.

Wat kan je zien? Het begint met een lichtcirkel in de richting van het Noorden. Je ziet dat de noordpool in het daglicht zit en de zuidpool, daar is het donker. In de volgende frames zie je dat de lichtcirkel zich naar het oosten begeeft, hij wordt breder en hij gaat richting de rand van de EarthBowl. Tussen frame 6 en 7 (4 uur GMT, Rotterdam 6 uur) slaat hij om, Rotterdam komt in het daglicht, de hele rand van de EarthBowl komt in één keer in het licht. Nu zie je de donkere helft van de aarde als een ‘cirkel’. Nu nog afgeplat en breed, maar 10 frames later mooi als een cirkel met het centrum in het noorden. De noordpool is overigens al de hele tijd in het belichte deel van de aarde, de zuidpool ligt continu in het donkere deel. Tussen frame 28 en 29 (21 uur in Rotterdam) zie je dat de donkere cirkel weer omslaat. Rotterdam komt in de nacht, de hele rand van de EarthBowl wordt ineens zwart. De afgeplatte verlichtte cirkel beweegt vanuit het westen naar het noorden en wordt weer meer een mooie cirkel.

Nog een mooi detail is als je frame 0 en frame 36 apart bekijkt, dan zie je dat de terminator een heel klein ietsje meer naar het noorden is verplaatst. Een groter deel rond de noordpool komt 24 uur in het daglicht, en een groter deel rond de zuidpool komt 24 uur in het donker te liggen. Logisch, want het zijn berekeningen voor 13 mei. De dagen in het Noorden lengen en zijn het langst op 21 juni als het zomer wordt.

na 1 dag
De verschuiving van de terminator naar het noorden na één dag.

Op 21 maart en 21 september (start van de lente en herfst) ligt de terminator precies tussen de noord- en zuidpool, de zon staat nu loodrecht boven de evenaar.

21mrt
De terminator op 21 mrt, precies over de polen heen

De azimutale equidistante projectie

Ben ik nou uniek met mijn projectie? Ja, vooralnog zeg ik ja.

Al een paar jaar geleden heb ik intensief mailcontact gehad met Jan Hendrikse, kartograaf. Het grootste probleem in onze conversatie was het verschil in jargon. Zo blijkt voor kartograven een projectie per definitie een projectie op een plat vlak te zijn. En ja, ik ben bezig met een halve bol. Maar Jan heeft mij goed geholpen, meer dan goed geholpen.  Op een gegeven moment heeft hij mij deze projectie geleverd.

PlatecarreeSpiegel52_5

Weliswaar een projectie op een plat vlak, een uitgerolde cylinder. Maar ik kon hem goed gebruiken. Overtekenen in een tekenprogramma, opknippen in geren, verticale stroken. En Top of the World 002deze vervolgens handmatig inklinken tot halve geren, de sinasappelpartjes. Dit heeft mij de basistekening opgeleverd voor mijn lamp. In een halve RVS bol heb ik de tekening gegraveerd. En ja, dit was een grote stap in mijn project.

Recent ben ik zelf natuurlijk aan het rekenen gegaan. Zo heb ik nu de algoritmes om de latlons om te zetten.

Maar ik ben ook verder gaan zoeken. In deze zoektocht kom ik terecht op de azimutale equidistante projectie. Deze was ik al eerder tegen gekomen. Hij staat in de Times, atlas of the World. Alleen, de grens ontbreekt hier. Hij wordt ook wel Postelprojectie genoemd, naar Guillaume Postel.azimutale equidistante projectie

Deze projectie wordt veel gebruikt voor ‘bakkies’. Om via de korte band te kunnen communiceren moet de zender gericht zijn naar de ontvanger. Ook is hij goed bruikbaar voor de luchtvaart om te bepalen hoe je het kortst vanaf een bepaalde plek naar een andere plaatst op de wereld kan vliegen.

Op bijvoorbeeld Ham Stuff vind je een mogelijkheid om de kaart te maken. Deze kaart heeft als eigenschap dat hij uniek is voor de plek waar je bent. In de berekening wordt gebruik gemaakt van de groot cirkel afstand. In het midden van de kaart is de plaats waar je bent. Je kan nu een plaats zoeken, en vervolgens weet je in welke richting (NOZW) je je antenne moet richten. De korte band golven van een bakkie volgen vanzelf de kromming van de aarde.

AzimuthalMap (1)-page-001

Deze kaart lijkt veel op mijn projectie. Maar hij is niet hetzelfde…  In mijn projectie is de standplaats niet in het centrum van de kaart, maar juist in de rand. Daarnaast geef ik een inverse projectie. Immers in mijn projectie kijk je door de wereld heen, en zie je de continenten vanaf de onderkant, gespiegeld dus.  En het belangrijkste verschil, mijn projectie is in een halve bol, en niet op een plat vlak. Ik kan mijn projectie natuurlijk wel in een plat vlak drukken, maar dan heb je net niet mijn kaart.

2015-03-17 13.40.24

Kortom, mijn kaart kan ik benoemen als een halve bol gevormde, antipolaire inverse azimutale equidistante projectie… Het is maar even dat je het weet.

Een stukje rekenwerk

OK, deze blog is ontstaan terwijl de trein al jaren lang aan het rijden is. Al met al heb ik dus best veel te vertellen. Nu een stukje over mijn rekenwerk.

Hoe maak ik nu de kaarten? Als eerste moet je bepalen op welke positie je staat. Dat kan je aangeven in een latitude en longitude (breedtegraad en lengtegraad). Dat samen noem je een latlon. Laten we zeggen dat ik me bevind op latitude Lat_ref en longitude Lon_ref.

Vervolgens heb je een verzameling van coördinaten van de kustlijnen van de continenten op de wereld. Ik gebruik daarvoor de GSHHS database. Dat levert een mooi overzicht op van de kustlijnen.image001

Deze dataset bestaat uit ruim 10.000 punten. Het zijn allemaal polygonen, dus veelhoekige vlakken. Deze punten, coördinaten zijn ook gedefinieerd in latlons.

Naast latlon heb je ook een andere mogelijkheid om een coördinaat vast te leggen. Je neemt dan een eenheidscirkel, met een straal van 1. Dan kan je, met behulp van wat sinussen en cosinussen de latlons omzetten naar een x,y,z-coördinaat. De x-as komt naar je toe, de y-as is naar rechts en de z-as is naar boven.

Nu komt de truc. Ik bevind me dus op de positie Lat_ref, Lon_ref. Als ik nu de hele dataset van de wereld ga roteren op de volgende manier: 180 – Lon_ref om de z-as en daarna alle data rond de y-as over een hoek van 90 – Lat_ref, dan heb ik mezelf als het ware op de Noordpool gezet. Deze rotaties kan je makkelijk uitvoeren met behulp van de 3D-rotatiematrix.

Vervolgens kan je de x,y,z-coördinaten weer omzetten naar de nieuwe latlons.  Deze latlons ga je gebruiken om de kijkrichting en de kijkhoek te bepalen. De kijkrichting is dan gelijk aan 360 – Lon en de kijkhoek gelijk aan Lat/2 + 45.

Zie hier, de hele wereldcoördinaten heb je nu gedefinieerd in een kijkrichting en een kijkhoek. De basis van mijn EarthBowl.

900 facetten

900 tiles… de maximale printbreedte op een a4 is 19 cm. Ik wil dat de bol een straal heeft van 1,85m. Dat betekent dat ik over 180 graden 30 tiles nodig heb. Dus de bowl gaat uit 900 facetten bestaan. De bron tekening heb ik. Maar nu dus opbreken in 900 stuks. Ik zeg monnikenwerk… maar gaat goed komen.

Hoe maak ik de facetten? Eerst gebruik ik mijn Excel algoritmes om de kaart te maken. Vervolgens ga ik die opbreken in 900 facetten, facetten van 6 bij 6 graden. Per facet ga ik de relevante coördinaten selecteren. Ze moeten in dat facet liggen, maar daar neem ik een ruime marge om (… ik moet namelijk weten waar de volgende punten buiten het facet ligt, anders kan ik de laatste lijn niet goed richten). Ik normeer ze allemaal naar 0 tot 6 graden ViewDirection en -6 tot 0 graden ViewAngle. Dan, afhankelijk van het facet, ga ik ze ‘inklinken’. Ik moet namelijk halve geren gaan maken, de vorm van de buitenkant van een sinasappelpartje. Dan krijg je dus een omgekeerde symetrische trapezoïde per facet. Ik bewaar dan het geheel in een csv-file (komma gescheiden bestand). Dat lees ik in in het programma Veusz (freeware om grafieken te maken). Dit programma gebruik ik als conversietool om er een svg-file van te maken, scalable vector graphics. Deze haal ik dan weer binnen in Draw van OpenOffice. Daar waar de polygoon naar buiten het facet gaat plaats ik een nieuw punt. Punten buiten het vlak verwijder ik, en ik sluit de polygoon. Deze kleur ik groen. De zee wordt blauw. En dit plaatje bewaar ik vervolgens als PDF, zodat hij overal geprint kan worden.