We zijn gewend om posities op Aarde (of op andere planeten of manen, of aan de sterrenhemel) aan te geven met twee coördinaten: een lengtegraad en een breedtegraad. Je moet eerst de ene tot de gewenste nauwkeurigheid opgeven, en daarna de andere. Tot je ze allebei hebt kun je er niet zoveel mee.
Hieronder laat ik zien dat je een positie op Aarde ook kunt aangeven met één coördinaat. Die coördinaat duidt altijd een compact gebied aan dat in alle horizontale richtingen ongeveer even groot is. Hoe meer cijfers je krijgt van dat coördinaat, hoe kleiner het gebied wordt waarin de plek kan liggen, maar het blijft compact.
De achterliggende ideeën komen uit het artikel "Continuous Indexing of Hierarchical Subdivisions of the Globe" uit 2000 door John J. Bartholdi Ⅲ en Paul Goldsman, te vinden op http://www2.isye.gatech.edu/~jjb/mow/papers/hglobec.pdf.
Een ruimtevullende kromme is een kromme die ongeveer even dicht langs alle plaatsen in een ruimte gaat. Zo'n kromme heeft een resolutie, wat een maat is voor hoe dicht alle plaatsen gemiddeld bij die kromme zijn. In de limiet van oneindige resolutie bezoekt de kromme alle punten in de ruimte.
Zo'n kromme kan worden gebruikt om een coördinaatsysteem in de ruimte te definiëren waarbij slechts één coördinaat nodig is om een plaats aan te geven, zelfs als de ruimte een oppervlak of volume is waarvoor meestal twee of drie coördinaten nodig zijn. De enkele coördinaat is gelijk aan de fractie van de lengte van de gehele kromme die moet worden afgelegd om zo dicht mogelijk bij die plaats te komen. Die fractie komt steeds dichter bij een vaste waarde als de resolutie steeds groter wordt.
Ruimtevullende krommen worden meestal gemaakt van een sjabloonkromme die bestaat uit een klein aantal redelijk gelijkmatig verdeelde punten verbonden door rechte lijnen. De kromme mag zichzelf niet kruisen. Je krijgt de ruimtevullende kromme door kopieën van de sjabloonkromme op de juiste manier te schalen en te draaien en dan aan elkaar te koppelen.
Elk van de punten is het centrum van een deel van de ruimte waarvoor dat punt het meest nabije punt van de kromme is, voor een toepasselijke definitie van "meest nabij". We noemen dat deel van de ruimte het puntgerelateerde gebied. De puntgerelateerde gebieden vullen samen de hele ruimte, zonder gaten en zonder overlap.
De sjabloonkromme definieert de ruimtevullende kromme op niveau 1. Om het volgende niveau van de kromme te vinden wordt elk van de lijnstukken uit de kromme vervangen door een toepasselijk geschaalde en gedraaide kopie van de sjabloonkromme, op zo'n manier dat de kromme als geheel verbonden blijft en zichzelf niet kruist. Dit komt overeen met het onderverdelen van elk puntgerelateerd gebied.
Eigenlijk is het voor ons doel beter om de gebieden de leiding te geven over de punten. Om het volgende niveau te bereiken verdeel je de puntgerelateerde gebieden in delen op zo'n manier dat er een ruimtevullende kromme doorheen getrokken kan worden met één punt in elk deelgebied.
Het vervangen van steeds kleinere onderdelen door kopieën van steeds hetzelfde sjabloon maakt de ruimtevullende kromme zelfgelijkvormig. Op oneindige resolutie is zo'n ruimtevullende kromme een fractal.
De Sierpińskikrommen zijn een bepaalde familie van ruimtevullende krommen. Zij vormen de basis voor een coördinaatsysteem op het oppervlak van een bol (zoals de Aarde), die ik Sierpińskicoördinaten noem. De puntgerelateerde gebieden zijn boldriehoeken, en naar het volgende niveau gaan betekent elke boldriehoek in twee kleinere boldriehoeken verdelen. Elk volgend niveau heeft tweemaal zoveel boldriehoeken.
Als een voorbeeld kijken we naar een bepaalde Sierpińskidriehoek op niveau 18 op Aarde die een deel van Nederland omvat.
Op het volgende niveau (niveau 19) is die driehoek verdeeld in twee bijna gelijke delen.
En op niveau 20 is elk van de kleinere driehoeken zelf weer in tweeën verdeeld.
En net zo op niveau 21.
De Sierpińskikromme door de driehoeken op niveau 21 binnenin de driehoek op niveau 18 staat in het plaatje hieronder. We komen de niveau-18-driehoek links binnen, gaan door de niveau-21-driehoeken in de volgorde aangegeven door de Sierpińskikromme, en verlaten de niveau-18-driehoek rechts onderin. Dit is het algemene patroon voor elke driehoek: ga hem binnen bij het beginhoekpunt, ga door de hele inhoud, en halverwege langs het mediaanhoekpunt, en verlaat hem door het eindhoekpunt. Het eindhoekpunt van de vorige driehoek is het beginhoekpunt van de volgende driehoek.
We kunnen door blijven gaan naar hogere niveaus en grotere resolutie. Hier zijn de niveau-24-driehoeken in de niveau-18-driehoek en de Sierpińskikromme door hen heen.
Op niveau 27 worden de driehoeken op deze schaal erg klein.
dus laten we de bijbehorende Sierpińskikromme los zien. De kromme komt nog steeds de niveau-18-driehoek links binnen, gaat dicht langs elke plek in die driehoek zonder zichzelf te kruisen, en verlaat de driehoek dan rechts onderin.
Het oppervlak van een bol is geen driehoek, dus op de eerste paar niveaus zijn de Sierpińskigebieden geen boldriehoeken maar bolsegmenten. Voor het gemak noem ik ze allemaal boldriehoeken.
Op niveau 1 is de bol verdeeld in een oostelijk halfrond en een westelijk halfrond. Op niveau 2 is elk halfrond van pool tot pool in twee segmenten verdeeld. Op niveau 3 is elk van de segmenten bij de evenaar in tweeën gedeeld. De 8 gebieden waarin het oppervlak van de bol dan verdeeld is zijn boldriehoeken. Op hogere niveaus wordt elke boldriehoek verder verdeeld volgens de Sierpińskikromme.
Deze driehoeken worden in het groen getoond op de volgende kaart van de Aarde (in Mollweideprojectie). Het nummer in het midden van elke driehoek is de decimale Sierpińskicoördinaat van de driehoek. Die coördinaat wordt later uitgelegd. (Ik maakte deze kaart met behulp van QGIS, met kaartdata van Natural Earth.)
De volgende tabel toont voor de eerste 50 niveaus \(n\): ongeveer de gemiddelde oppervlakte \(A\) van een driehoek op dat niveau op Aarde, ongeveer de hoekstraal \(ρ\) van de ingeschreven cirkel in de driehoek en ongeveer de straal \(L\) van de ingeschreven cirkel. De eenheden zijn: 1 Mm² = 1 miljoen km², 1° = 60′, 1′ = 60″, 1 Mm = 1000 km, 1 km = 1000 m, 1 m = 1000 mm.
\(n\) | \(A\) | \(ρ\) | \(L\) |
---|---|---|---|
1 | 511 Mm² | 90.0° | 10 Mm |
2 | 256 Mm² | 63.6° | 7.1 Mm |
3 | 128 Mm² | 45.0° | 5.0 Mm |
4 | 63.9 Mm² | 31.8° | 3.5 Mm |
5 | 31.9 Mm² | 22.5° | 2.5 Mm |
6 | 16.0 Mm² | 15.9° | 1.8 Mm |
7 | 7.99 Mm² | 11.3° | 1.3 Mm |
8 | 3.99 Mm² | 7.95° | 890 km |
9 | 2.00 Mm² | 5.63° | 630 km |
10 | 0.998 Mm² | 3.98° | 440 km |
11 | 0.499 Mm² | 2.81° | 310 km |
12 | 0.250 Mm² | 1.99° | 220 km |
13 | 0.125 Mm² | 1.41° | 160 km |
14 | 62400 km² | 59.7′ | 110 km |
15 | 31200 km² | 42.2′ | 78 km |
16 | 15600 km² | 29.8′ | 55 km |
17 | 7800 km² | 21.1′ | 39 km |
18 | 3900 km² | 14.9′ | 28 km |
19 | 1950 km² | 10.5′ | 20 km |
20 | 975 km² | 7.46′ | 14 km |
21 | 488 km² | 5.27′ | 9.8 km |
22 | 244 km² | 3.73′ | 6.9 km |
23 | 122 km² | 2.64′ | 4.9 km |
24 | 60.9 km² | 1.86′ | 3.5 km |
25 | 30.5 km² | 1.32′ | 2.4 km |
26 | 15.2 km² | 55.9″ | 1.7 km |
27 | 7.62 km² | 39.6″ | 1.2 km |
28 | 3.81 km² | 28.0″ | 860 m |
29 | 1.90 km² | 19.8″ | 610 m |
30 | 0.950 km² | 14.0″ | 430 m |
31 | 0.476 km² | 9.89″ | 310 m |
32 | 0.238 km² | 6.99″ | 220 m |
33 | 0.119 km² | 4.94″ | 150 m |
34 | 59500 m² | 3.50″ | 110 m |
35 | 29800 m² | 2.47″ | 76 m |
36 | 14900 m² | 1.75″ | 54 m |
37 | 7440 m² | 1.24″ | 38 m |
38 | 3720 m² | 0.87″ | 27 m |
39 | 1860 m² | 0.62″ | 19 m |
40 | 930 m² | 0.44″ | 14 m |
41 | 465 m² | 0.31″ | 9.6 m |
42 | 232 m² | 0.22″ | 6.8 m |
43 | 116 m² | 0.15″ | 4.8 m |
44 | 58.1 m² | 0.11″ | 3.4 m |
45 | 29.1 m² | 0.08″ | 2.4 m |
46 | 14.5 m² | 0.05″ | 1.7 m |
47 | 7.26 m² | 0.04″ | 1.2 m |
48 | 3.63 m² | 0.03″ | 840 mm |
49 | 1.82 m² | 0.02″ | 600 mm |
50 | 0.908 m² | 0.01″ | 420 mm |
Dus op niveau 30 heeft elke driehoek een oppervlakte van ongeveer 1 km2, en op niveau 40 heeft elke driehoek een oppervlak van ongeveer 930 m2 (hetzelfde als van een cirkel met een straal van 8,6 m).
De Sierpińskicoördinaat reikt van 0 (op de Noordpool) tot 1 (terug bij de Noordpool). Als je de driehoeken doorloopt in de volgorde van de coördinaat, dan ga je over de hele wereld, zonder gaten en zonder overlap, tot je weer terug bent bij de eerste driehoek. Driehoeken met nabije coördinaten zijn meestal ook dichtbij elkaar op de wereld. Een interval van de Sierpińskicoördinaat komt overeen met een aaneengesloten gebied op de wereld.
Sierpińskicoördinaten worden het meest precies gespecificeerd met binaire getallen, want op elk niveau verdubbelt het aantal driehoeken.
Om in de rest van deze tekst binaire getallen te onderscheiden van getallen gebaseerd op andere grondtallen (bijvoorbeel decimale) kunnen we niet-decimale getallen noteren met aan het begin het grondtal gevolgd door een hekje "#", bijvoorbeeld "2#" voor binaire getallen. Als het grondtal duidelijk is uit de omringende tekst dan kan dit voorstuk weggelaten worden.
Op niveau 1 zijn de gebieden
Index | Binair | Gebied |
---|---|---|
0 | 2#0.0 | oostelijk halfrond |
1 | 2#0.1 | westelijk halfrond |
Elke plaats met een binaire Sierpińskicoördinaat die (na de komma) begint met 0 is in het oostelijke halfrond, en elke plaats met een binaire Sierpińskicoördinaat die (na de komma) begint met 1 is in het westelijke halfrond.
Op niveau 2 zijn de gebieden
Index | Binair | Gebied |
---|---|---|
0 | 2#0.00 | 0° tot 90° oostelijke lengtegraad |
1 | 2#0.01 | 90° tot 180° oostelijke lengtegraad |
2 | 2#0.10 | 180° tot 90° westelijke lengtegraad |
3 | 2#0.11 | 90° tot 0° westelijke lengtegraad |
Op niveau 3 zijn de boldriehoeken
Index | Binair | Gebied |
---|---|---|
0 | 2#0.000 | 0−90° oostelijke lengtegraad, noorderbreedte |
1 | 2#0.001 | 0−90° oostelijke lengtegraad, zuiderbreedte |
2 | 2#0.010 | 90−180° oostelijke lengtegraad, zuiderbreedte |
3 | 2#0.011 | 90−180° oostelijke lengtegraad, noorderbreedte |
4 | 2#0.100 | 180−90° westelijke lengtegraad, noorderbreedte |
5 | 2#0.101 | 180−90° westelijke lengtegraad, zuiderbreedte |
6 | 2#0.110 | 90−0° westelijke lengtegraad, zuiderbreedte |
7 | 2#0.111 | 90−0° westelijke lengtegraad, noorderbreedte |
Mijn standaardnotatie voor een binaire Sierpińskicoördinaat is om de
komma en alles ervoor weg te laten, en om een "b" ervoor te plakken om
zijn binaire aard aan te geven. Dus, Australië (nabij 140°
oosterlengte en 35° zuiderbreedte) ligt in de driehoek aangeduid als
Nullen vooraan en achteraan hebben betekenis! Driehoek
Als een naamruimte aangegeven moet worden, gebruik dan "ssfc:" voor
"Sierpiński surface-filling coordinate". Dus,
Voor binaire Sierpińskicoördinaten is het voorste stuk van de
coördinaat van een kleinere driehoek gelijk aan de coördinaat van een
grotere driehoek waar die kleinere driehoek deel van is. Dus driehoek
Sierpińskicoördinaten in binair formaat zijn nogal onhandig, want ze
worden al snel heel lang. Een Sierpińskicoördinaat met 30 binaire
cijfers duidt op Aarde een driehoek van ongeveer 1 km², wat nog best
groot is. Voor een driehoek van ongeveer 1 m² heb je 50 binaire
cijfers nodig. Bijvoorbeeld, de binaire Sierpińskicoördinaat van de
niveau-30-driehoek van ongeveer 1 km² waarin het Natuurhistorisch
Museum te Rotterdam ligt is
Voor meer gemak kunnen binaire Sierpińskicoördinaten worden vertaald naar octaal (grondtal 8), decimaal (grondtal 10) of hexadecimaal (grondtal 16).
Elke volgende groep van 3 binaire cijfers komt overeen met 1 octaal cijfer (0−7). De overeenkomst is als volgt.
Binair | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Octaal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Een octale Sierpińskicoördinaat heeft een "o" aan het begin.
Australië ligt in
Een octale coördinaat heeft ongeveer een derde zoveel cijfers nodig als de overeenkomstige binaire coördinaat.
Er is een probleem met octale Sierpińskicoördinaten (en ook met
coördinaten op elk ander grondtal dan 2). Wat is de octale versie van
Los dit probleem op door een dubbele punt en het niveaunummer aan de
Sierpińskicoördinaat te plakken. Dat noemen we de
niveaustaart. Gebied
Voor octale Sierpińskicoördinaten is het voorste stuk van de
coördinaat van een kleinere driehoek gelijk aan de coördinaat van een
grotere driehoek waar die kleinere driehoek deel van is, als geen van
de coördinaten een niveaustaart nodig heeft. Driehoek
Elke groep van vier binaire cijfers komt overeen met één hexadecimaal cijfer (0−9 en a-f). De overeenkomst is als volgt.
Binair | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Hexadecimaal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f |
De letters a-f in een hexadecimale coördinaat mogen in hoofdletters of kleine letters geschreven worden, dat maakt voor de betekenis niet uit.
Een hexadecimale Sierpińskicoördinaat heeft een "x" ervoor.
Bijvoorbeeld, het midden en westen van de V.S. valt in
Een hexadecimaal Sierpińskicoördinaat heeft ongeveer een kwart zoveel cijfers nodig als de overeenkomstige binaire Sierpińskicoördinaat, en ongeveer 3/4 maal zoveel als de overeenkomstige octale Sierpińskicoördinaat.
Voor hexadecimale Sierpińskicoördinaten is het voorste stuk van de
coördinaat van een kleinere driehoek gelijk aan de coördinaat van een
grotere driehoek waar die kleinere driehoek deel van is, als geen van
de coördinaten een niveaustaart nodig heeft. Driehoek
De overeenkomst tussen binaire en decimale Sierpińskicoördinaten is minder duidelijk, omdat 10 (het grondtal van decimale cijfers) geen macht is van 2. Elke volgend decimale cijfer komt gemiddeld overeen met ongeveer 3,32 volgende binaire cijfers.
Om een binaire Sierpińskicoördinaat te vertalen naar een decimale Sierpińskicoördinaat moet je de binaire breuk omzetten naar een decimale breuk, geschreven met cijfers achter de komma, en dan afkappen op het kleinste aantal decimale cijfers dat nodig is om alle coördinaten op dat niveau te kunnen onderscheiden. Zie verderop voor details.
Decimale Sierpińskicoördinaten mogen een "d" ervoor hebben, maar dat is niet verplicht. Een Sierpińskicoördinaat zonder een letter aan het begin wordt opgevat als een decimale Sierpińskicoördinaat. Een niveaustaart is nodig als het grootste aantal binaire cijfers dat kan overeenkomen met het gegeven aantal decimale cijfers niet gelijk is aan het niveaunummer.
Bijvoorbeeld, een niveau-3 Sierpińskicoördinaat heeft 3 binaire
cijfers. Welke decimale Sierpińskicoördinaat komt overeen met
Net zo komt
Alles bij elkaar is de overeenkomst tussen binaire en decimale fracties en Sierpińskicoördinaten voor alle niveau-3-coördinaten:
SSFC | Binair | Decimaal | SSFC |
---|---|---|---|
2#0 | 0 | ||
2#0.001 | 0.125 | ||
2#0.01 | 0.25 | ||
2#0.011 | 0.375 | ||
2#0.1 | 0.5 | ||
2#0.101 | 0.625 | ||
2#0.11 | 0.75 | ||
2#0.111 | 0.875 |
dus er is een ander 1-cijferige decimale coördinaat voor elk 3-cijferige binaire coördinaat, maar sommige 3-cijferige binaire coördinaten hebben meer dan één mogelijk 1-cijferige decimale coördinaat.
Het grootste aantal binaire cijfers dat overeenkomt met de eerste paar aantallen decimale cijfers zijn als volgt:
Decimaal | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Binair | 3 | 6 | 9 | 13 | 16 | 19 | 23 | 26 | 29 | 33 |
Dus een 33-cijferige binaire coördinaat kan worden vertaald naar een
10-cijferige decimale coördinaat. Als het niveau gelijk is aan een
van deze aantallen binaire cijfers dan heeft de decimale
Sierpińskicoördinaat geen niveaustaart nodig. De niveau-29-driehoek
van 2 km² waarin het Natuurhistorisch Museum Rotterdam ligt heeft
decimale Sierpińskicoördinaat
Een decimale Sierpińskicoördinaat heeft ongeveer 30% zoveel cijfers nodig als de overeenkomstige binaire coördinaat.
Voor decimale Sierpińskicoördinaten is de canonieke coördinaat van een
grotere driehoek niet altijd het voorste deel van de canonieke
coördinaat van alle kleinere driehoeken die daarin zitten, zelfs als
de coördinaten geen niveaustaart nodig hebben. Bijvoorbeeld, driehoek
Als je de driehoeken van een bepaald niveau via de Sierpińskikromme doorloopt, dan begin je bij de Sierpińskicoördinaat met allemaal nullen op dat niveau, en tel je steeds 1 op bij dat getal (gezien als een geheel getal) voor elke volgende driehoek. Op niveau \( n \) zijn er \( 2^n \) driehoeken.
Bijvoorbeeld, we volgen de Sierpińskikromme op niveau 6 als we de
driehoeken doorlopen in de volgorde
We kunnen elke driehoek aanduiden met zijn binaire, octale, decimale of hexadecimale Sierpińskicoördinaat, of door driehoeken te tellen vanaf de eerste. De decimale coördinaat gebaseerd op de telling van driehoeken heet de Sierpiński-index van de driehoek.
De eerste driehoek krijgt index 0, de volgende krijgt 1, enzovoorts
tot de laatste driehoek (die weer terugleidt naar driehoek 0) die
index \( 2^n - 1 \) krijgt. De standaardnotatie voor het aanduiden
van een driehoek door zijn index op een bepaald niveau is door "i"
voor dat indexnummer te zetten. Een niveaustaart is verplicht voor
een Sierpiński-index, omdat elke index op meerdere niveaus voorkomt.
Driehoek
Voor Sierpiński-indexen is de relatie tussen driehoeken en
daarinzittende driehoeken anders dan het was voor de
Sierpińskicoördinaten. Kleinere driehoek \( i \) op niveau \( n \)
zit in grotere driehoek \( i/2 \) op niveau \( n - 1 \), die weer zit
in nog grotere driehoek \( i/4 \) op niveau \( n - 2 \). Negeer de
rest van deze delingen. Bijvoorbeeld, driehoek
De vierkante kilometer met het Natuurhistorisch Museum in Rotterdam
erin heeft Sierpiński-index
Je kunt een relatieve Sierpińskicoördinaat of -index aangeven door een plus- of minteken en een aantal aan de basis-Sierpińskicoördinaat of -index toe te voegen (ná de niveaustaart, als die er is). Het aantal mag 0 zijn en geeft aan hoeveel driehoeken vooruit (+) of achteruit (−) te lopen langs de Sierpińskikromme vanaf de driehoek die door de basiscoördinaat of -index wordt aangeduidt.
Bijvoorbeeld, de niveau-30-driehoek waarin het Natuurhistorisch Museum
Rotterdam ligt is
Zelfs decimale relatieve Sierpińskicoördinaten zijn niet eenvoudig om
te rekenen naar de overeenkomstige absolute (niet-relatieve)
Sierpińskicoördinaten.
Relatieve Sierpiński-indexen zijn wel eenvoudig te reduceren tot
absolute Sierpiński-indexen: tel de relatieve afstand op bij de index.
Je kunt een interval van Sierpińskicoördinaten of -indexen opgeven
door twee van zulke coördinaten of -indexen (met niveaustaart en een
verschil als nodig of gewenst) aan elkaar te plakken met ".."
ertussen. Het type coördinaat (binair, octaal, decimaal, hexadecimaal
of index) van het begin en het eind van het interval mogen
verschillen. Bijvoorbeeld,
Als het begin en het eind van het interval niet hetzelfde niveau
opgeven of impliceren, dan geldt het laagste niveau van de twee. Dus
De typeaanduiding voor het einde van het interval mag worden
weggelaten; het is dan gelijk aan dat van het begin van het interval.
Dus
Als het einde van het interval gelijk is aan het begin, afgezien van
het relatieve stuk (met plus- of minteken), dan mag het einde worden
weggelaten, afgezien van het relatieve stuk. Dus
Sierpińskicoördinaten gaan terug naar 0 als ze voorbij hun grootst
mogelijke waarde gaan. Als het einde van een interval een eerdere
driehoek (volgens de Sierpińskikromme) aangeeft dan het begin van het
interval, dan loopt dat interval van het begin van het interval naar
de allerlaatste driehoek, naar de allereerste driehoek, en dan naar
het einde van het interval. Bijvoorbeeld,
We hebben binaire, octale, decimale en hexadecimale Sierpińskicoördinaten gedefinieerd, en ook de Sierpiński-index. Elk van deze benoemt bepaalde driehoeken op een bol, in een onafgebroken rij die de hele bol bedekt zonder gaten en zonder overlap. Twee Sierpińskicoördinaten of Sierpiński-indexen die veel op elkaar lijken benoemen driehoeken die op de bol dicht bij elkaar zijn.
De diverse coördinaten van de vierkante kilometer waarin het Natuurhistorisch Museum Rotterdam ligt zijn:
Polair | O 4.474°, N 51.912° |
Binair | |
Octaal | |
Decimaal | |
Hexadecimaal | |
Index |
De volgende verzameling plaatjes zoomt in vanaf de hele wereld naar het Natuurhistorisch Museum te Rotterdam, in stappen van 3 niveaus zodat elke driehoek uit het vorige plaatje is verdeeld in 8 = 23 driehoeken in het huidige plaatje. De driehoeken zijn aangeduid met hun decimale Sierpińskicoördinaat.
We beginnen op niveau 3, waar er 8 driehoeken zijn die elk ongeveer 511 miljoen km² omvatten.
Het getal nabij het midden van elke driehoek is de canonieke decimale niveau-3-Sierpińskicoördinaat van die driehoek.
De kromme die door alle driehoeken loopt is de niveau-6-Sierpińskikromme door het midden van alle niveau-6-driehoeken in oplopende volgorde van de Sierpińskicoördinaat. Daaraan kun je zien welk hoekpunt van de niveau-3-driehoek de beginhoekpunt is (waar de kromme binnenkomt), welke de mediaanhoekpunt (die halverwege gepasseerd wordt) en welke de eindhoekpunt (waar de kromme de driehoek verlaat).
De driehoek die met een dikkere rand is aangegeven is degene waarin het Natuurhistorisch Museum ligt.
De plaatjes voor hogere niveaus zijn soortgelijk ingericht.
De niveau-3-Sierpińskikromme heeft een totale lengte van ongeveer 63 000 km, wat 1,6 keer de omtrek van de Aarde is. De niveau-6-Sierpińskikromme is ongeveer 151 000 km lang, wat ongeveer 3,8 keer de omtrek van de Aarde is.
Merk op dat er gaten zijn in de coördinaat. Niet elke mogelijke coördinaat heeft zijn eigen driehoek, want er zijn 10 mogelijke getallen met 1 cijfer, voor maar 8 driehoeken. Coördinaten 2 en 7 komen op dit niveau niet voor.
We zoomen in op niveau-3-driehoek
Dan zoomen we in op niveau-6-driehoek
We zoomen in naar niveau-9-driehoek
Dan zoomen we in op niveau-12-driehoek
Nu zoomen we in naar niveau-15-driehoek
We zoomen in naar niveau-18-driehoek
Dan zoomen we in naar niveau-21-driehoek
Dan zoomen we in naar niveau-24-driehoek
Dan zoomen we in naar niveau-27-driehoek
We zoomen in naar niveau-30-driehoek
We zoomen in naar niveau-33-driehoek
We zoomen in naar niveau-36-driehoek
Het omrekenen van een octale Sierpińskicoördinaat naar een binaire Sierpińskicoördinaat is simpel: vervang elk octale cijfer door de bijbehorende drie binaire cijfers, en breek af na het aantal binaire cijfers gelijk aan het niveau van de coördinaat.
Bijvoorbeeld, wat is de binaire versie van
Omrekenen van een hexadecimale Sierpińskicoördinaat naar een binaire Sierpińskicoördinaat is simpel: vervang elk hexadecimale cijfer door de overeenkomstige vier binaire cijfers, en breek af na het aantal binaire cijfers gelijk aan het niveau van de coördinaat.
Bijvoorbeeld, wat is de binaire versie van
Omrekenen van een Sierpiński-index naar een binaire Sierpińskicoördinaat is simpel: reken de decimale index om naar het overeenkomstige binaire getal, en plak nullen ervoor tot het aantal binaire cijfers gelijk is aan het niveau van de index.
Bijvoorbeeld, wat is de binaire versie van
Omrekenen van een decimale Sierpińskicoördinaat is moeilijker dan de andere omrekeningen die ik hierboven beschreef, want 10 is geen macht van 2, waar 8 en 16 wel machten van 2 zijn.
De eerste stap is om te bepalen hoeveel binaire cijfers overeenkomen met de decimale coördinaat. Als de decimale coördinaat een niveaustaart heeft, dan bepaalt dat niveau het aantal binaire cijfers. Als de decimale coördinaat \( d \) decimale cijfers maar geen niveaustaart heeft, dan is het aantal \( b\) van de binaire cijfers het grootste gehele getal waarvoor \( 2^b \le 10^d \), wat gelijkwaardig is aan \( b\log_{10}(2) \le d \), wat betekent
\[ b = \left\lfloor \frac{d}{\log_{10}(2)} \right\rfloor = \left\lfloor d\log_{2}(10) \right\rfloor \]
waar \( \log_{10}(2) ≈ 0.30103001 \) en \( \log_{2}(10) = 1/\log_{10}(2) ≈ 3.321928 \).
Bijvoorbeeld, als de decimale coördinaat 11 decimale cijfers heeft, dan is \( d = 11 \). \(11\log_{2}(10) ≈ 36.54\) dus \( b = 36 \). Even nakijken: \( 10^d = 10^{11} = 100 000 000 000 \) en \( 2^b = 2^{36} = 68 719 476 736 \) en \( 2^{b+1} = 2^{37} = 137 438 953 472 \) dus \( 2^{36} \le 10^{11} \) en \( 2^{37} \gt 10^{11} \) dus is 36 inderdaad het juiste antwoord.
Als \( D \) de decimale coördinaat is, dan staat dat voor de breuk \( D/10^d \). We zoeken naar binaire coördinaat \( B \), die staat voor de breuk \( B/2^b \) die zo dicht mogelijk bij \( D/10^d \) is. Dus
\[ B = \left[ \frac{D×2^b}{10^d} \right] = \left\lfloor \frac{D×2^b}{10^d} + \frac12 \right\rfloor = \left\lfloor \frac{D×2^b + \frac{1}{2}×10^d}{10^d} \right\rfloor \]
Nu hebben we \( B \) maar op grondtal 10 (aannemend dat we een decimale rekenmachine gebruikten). Om de binaire cijfers van links naar rechts te berekenen:
Voor elk van de \( b \) binaire cijfers,
Die decimale Sierpińskicoördinaat heeft 2 cijfers wat overeenkomt met 6 binaire cijfers. We berekenen
\begin{align*} 2^b & = 2^{6} = 64 \\ 10^d & = 10^{2} = 100 \\ B & = \left\lfloor \frac{80×2^{6} + \frac{1}{2}×10^{2}}{10^{2}} \right\rfloor \\ & = \left\lfloor \frac{80×64 + 50}{100} \right\rfloor \\ & = \left\lfloor \frac{5170}{100} \right\rfloor \\ & = 51 \end{align*}
Nu vertalen we 51 van een decimaal naar een binair getal.
Voor het eerste binaire cijfer vinden we \( B = 2×51 = 102 \), wat niet kleiner is dan \( 2^b = 2^{6} = 64 \), dus het eerste binaire cijfer is 1 en we trekken 64 af van \( B \) en vinden \( B = 102 - 64 = 38 \).
Voor het tweede binaire cijfer vinden we \( B = 2×38 = 76 \), wat niet kleiner is dan 64, dus het tweede binaire cijfer is 1 en we trekken 64 af van \( B \) en vinden \( B = 76 - 64 = 12 \).
Voor het derde binaire cijfer vinden we \( B = 2×12 = 24 \), wat kleiner is dan 64, dus het derde binaire cijfer is 0.
Voor het vierde binaire cijfer vinden we \( B = 2×24 = 48 \), wat kleiner is dan 64, dus het vierde binaire cijfer is 0.
Voor het vijfde binaire cijfer vinden we \( B = 2×48 = 96 \), wat niet kleiner is dan 64, dus het vijfde binaire cijfer is 1 en we trekken 64 af van \( B \) en vinden \( B = 96 - 64 = 32 \).
Voor het zesde en laatste binaire cijfer vinden we \( B = 2×32 = 64 \) wat niet kleiner is dan 64, dus het zesde binaire getal is 1.
Alles bij elkaar is het resultaat 2#110011, dus de binaire versie
van
Merk op dat dit voorbeeld ging over een coördinaat van laag niveau, wat betekent dat de getallen klein blijven. Voor een coördinaat van niveau 40 hebben de getallen in deze berekeningen 12 decimale cijfers, en dat is te groot om met volledige nauwkeurigheid in een typische rekenmachine te passen. Gebruik een programma dat hele getallen met willekeurige aantallen cijfers aankan, of maak je anders zorgen over afrondfouten.
Gegeven een Sierpińskicoördinaat, reken als volgt om naar lengtegraad en breedtegraad:
Maak dan een begindriehoek op basis van de eerste drie binaire cijfers volgens de volgende tabel.
Octaal | A | B | C |
---|---|---|---|
000 | (0,0,+1) | (0,+1,0) | (+1,0,0) |
001 | (+1,0,0) | (0,+1,0) | (0,0,−1) |
010 | (0,0,−1) | (0,+1,0) | (−1,0,0) |
011 | (−1,0,0) | (0,+1,0) | (0,0,+1) |
100 | (0,0,+1) | (0,−1,0) | (−1,0,0) |
101 | (−1,0,0) | (0,−1,0) | (0,0,−1) |
110 | (0,0,−1) | (0,−1,0) | (+1,0,0) |
111 | (+1,0,0) | (0,−1,0) | (0,0,+1) |
De drie getallen voor elk van de punten A, B en C zijn cartesische coördinaten \(x, y, z\). Punt (0,0,+1) is de noordpool, punt (+1,0,0) is op lengtegraad 0 en breedtegraad 0, en punt (0,+1,0) is op 90° oosterlengte en breedtegraad 0.
Als voorbeeld zullen we locatie bepalen die overeenkomt met
Het 4e binaire cijfer is 0. De som van A en C is D = (+1, 0, +1). De lengte van D = \( r = \sqrt{1^2 + 0^2 + 1^2} = \sqrt{2} ≈ 1.414214 \), dus we delen de coördinaten van D daardoor en vinden D = (+0,7071068, 0, +0,7071068). Het binaire cijfer is 0, dus we zetten C gelijk aan B, en dan B gelijk aan D, en vinden A = (0, 0, +1), B = (+0,7071068, 0, +0,7071068), C = (0, +1, 0).
Het 5e binaire cijfer is 0. De som van A en C is D = (0, +1, +1). De lengte van D = \( r = \sqrt{0^2 + 1^2 + 1^2} = \sqrt{2} ≈ 1.414214 \), dus we delen de coördinaten van D daardoor en vinden D = (0, +0,7071068, +0,7071068). Het binaire cijfer is 0, dus we zetten C gelijk aan B, en dan B gelijk aan D, en vinden A = (0, 0, +1), B = (0, +0,7071068, +0,7071068), C = (+0,7071068, 0, +0,7071068).
Het 6e, laatste binaire cijfer is gelijk aan 1. De som van A en C is D = (0,7071068, 0, 1,7071068). De lengte van D = \( r = \sqrt{0.7071068^2 + 0^2 + 1.7071068^2} = \sqrt{3.14214} ≈ 1.847759 \), dus we delen de coördinaten van D daardoor en vinden D = (+0,3826834, 0, +0,9238795). Het binaire cijfer is 1, dus we zetten A gelijk aan B, en dan B gelijk aan D, en vinden A = (0, +0,7071068, +0,7071068), B = (+0,3826834, 0, +0,9238795), C = (+0,7071068, 0, +0,7071068). Deze drie punten zijn de hoekpunten van de gezochte driehoek.
De som van de laatste hoekpunten A, B en C is E = (+1,08979,
+0,7071068, +2,338093). De lengte van E is \(r = \sqrt{1.08979^2 +
0.7071068^2 + 2.338093^2} = \sqrt{7.154322} = 2.674756\). De
breedtegraad van het midden van de driehoek is \( φ =
\arcsin(+2.338093/2.674756) = +60.94°\). De lengtegraad is \(λ =
\arctan(+0.7071068,+1.08979) = +32.98°\). Dus het midden van
driehoek
Omrekenen van een binaire naar een octale Sierpińskicoördinaat is simpel: plak er nullen achter tot het aantal binaire cijfers een veelvoud is van 3, vervang dan elke groep van drie binaire cijfers door het overeenkomstige octale cijfer, en voeg een niveaustaart toe als het oorspronkelijke aantal binaire cijfers geen veelvoud was van 3.
Bijvoorbeeld, wat is de octale versie van
Omrekenen van een binaire naar een hexadecimale Sierpińskicoördinaat is eenvoudig: plak er nullen aan tot het aantal binaire cijfers een veelvoud is van 4, vervang dan elke vier binaire cijfers door het overeenkomstige hexadecimale cijfer, en voeg een niveaustaart toe als het originele aantal binaire cijfers geen veelvoud was van 4.
Bijvoorbeeld, wat is de hexadecimale versie van
Omrekenen van een binaire Sierpińskicoördinaat naar een Sierpiński-index is eenvoudig: reken het binaire hele getal om naar het overeenkomstige decimale hele getal, en voeg een niveaustaart toe.
Bijvoorbeeld, welke Sierpiński-index komt overeen met
Omrekenen van een decimale Sierpińskicoördinaat is moeilijker dan de andere omrekeningen hierboven beschreven, omdat 10 geen macht is van 2, wat 8 and 16 wel zijn.
De eerste stap is om het aantal \( d \) van de decimale cijfers te vinden dat overeenkomt met het aantal \( b \) van de binaire cijfers. Dat getal \( d \) is het kleinste gehele getal zodat \( 2^b \le 10^d \), wat gelijkwaardig is met \( b\log_{10}(2) \le d \), waaruit volgt
\[ d = \left\lceil b \log_{10}(2) \right\rceil \]
waar \( \log_{10}(2) ≈ 0.30103001 \).
Echter, het gevonden aantal decimale cijfers kan zelf weer overeenkomen met meer dan \( b \) binaire cijfers. Het aantal \( b_2 \) van de binaire cijfers dat overeenkomt met \( d \) decimale cijfers is
\[ b_2 = \left\lfloor \frac{d}{\log_{10}(2)} \right\rfloor = \left\lfloor d\log_{2}(10) \right\rfloor \]
Als \( b_2 \) verschilt van \( b \), plak dan nullen achter de binaire coördinaat totdat die \( b_2 \) binaire cijfers heeft, en voeg een niveaustaart (voor niveau \( b \)) toe aan de Sierpińskicoördinaat.
Welk aantal binaire cijfers komt overeen met \( d = 4 \)? \( 4/\log_{10}(2) ≈ 13.29 \) dus \( b_2 = 13 \). Dit is 3 meer dan \( b = 10 \), dus we moeten 3 nullen achter de binaire coördinaat plakken, en de decimale Sierpińskicoördinaat vereist niveaustaart ":10".
Als de binaire coördinaat (met nullen erachtergeplakt waar nodig) gelijk is aan \( B \), dan staat dat voor de breuk \( B/2^{b_2} \). We zoeken naar decimale coördinaat \( D \) die staat voor de breuk \( D/10^d \) het dichtst bij \( B/2^{b_2} \). Dus
\[ D = \left[ \frac{B×10^d}{2^{b_2}} \right] = \left\lfloor \frac{B×10^d}{2^{b_2}} + \frac12 \right\rfloor = \left\lfloor \frac{B×10^d + \frac{1}{2}×2^{b_2}}{2^{b_2}} \right\rfloor \]
Nu hebben we \( D \), maar misschien is die nog korter dan het zou moeten zijn omdat voorlopende nullen weggelaten zijn. Als \( D \) minder dan \( d \) cijfers heeft, plak er dan voldoende nullen voor zodat het wel \( d \) cijfers heeft.
En als \( b_2 ≠ b \), dan moet een niveaustaart (voor niveau \( b \)) worden toegevoegd.
Die decimale Sierpińskicoördinaat heeft 10 binaire cijfers, wat overeenkomt met 4 decimale cijfers, wat zelf weer overeenkomt met 13 binaire cijfers, dus moeten we drie nullen erachterplakken. Het binaire getal om te vertalen naar decimaal is daarom 2#0000110011000. Het decimale getal dat daarmee overeenkomt is 408, dus B = 408. We berekenen
\begin{align*} 2^{b_2} & = 2^{13} = 8192 \\ 10^d & = 10^{4} = 10000 \\ D & = \left\lfloor \frac{408×10^{4} + \frac{1}{2}×2^{13}}{2^{13}} \right\rfloor \\ & = \left\lfloor \frac{408×10000 + 512}{8192} \right\rfloor \\ & = \left\lfloor \frac{4080512}{8192} \right\rfloor \\ & = 498 \end{align*}
Dus het resultaat is 498, wat 3 cijfers heeft maar we verwachten er
4, dus plakken we er een nul voor. We moeten ook een niveaustaart
toevoegen voor niveau 10, dus de decimale versie van
Merk op dat dit voorbeeld voor een coördinaat van laag niveau was, wat betekent dat de getallen klein blijven. Voor een coördinaat op niveau 40 komen in deze berekeningen decimale getallen voor met 12 cijfers, wat te veel is om met volledige nauwkeurigheid in een typische rekenmachine te passen. Gebruik een programma dat gehele getallen met willekeurige aantallen cijfers aankan, of maak je anders zorgen over afrondfouten.
Gegeven breedtegraad \( φ \) en lengtegraad \( λ \) van een punt P, reken dit als volgt om naar een binaire Sierpińskicoördinaat:
\begin{align*} x & = \cos(λ) \cos(φ) \\ y & = \sin(λ) \cos(φ) \\ z & = \sin(φ) \end{align*}
\( x \) | \( y \) | \( z \) | Octant |
---|---|---|---|
<0 | <0 | <0 | 101 |
≥0 | <0 | <0 | 110 |
<0 | ≥0 | <0 | 010 |
≥0 | ≥0 | <0 | 001 |
<0 | <0 | ≥0 | 100 |
≥0 | <0 | ≥0 | 111 |
<0 | ≥0 | ≥0 | 011 |
≥0 | ≥0 | ≥0 | 000 |
Het "octant" geeft de eerste drie binaire cijfers.
De determinant \( Δ \) van een 3-bij-3-matrix is
\begin{align*} Δ & = \det\left( \begin{matrix} a & d & g \\ b & e & h \\ c & f & i \end{matrix} \right) \\ & = a (ei - fh) - b (di - fg) + c (dh - eg) \end{align*}
Bijvoorbeeld, wat is de binaire Sierpińskicoördinaat van de plaats op 60,94° noorderbreedte en 32,98° oosterlengte, met een precisie van 5°?
Voor een precisie van 5° moeten we rekenen tot niveau \( n = \left\lceil 2×\log_2(90°/5°) \right\rceil = \left\lceil 8.33985 \right\rceil = 9 \).
Dan is \( λ = 32.98° \) en \( φ = 60.94° \). De overeenkomstige cartesische coördinaten van punt P zijn
\begin{align*} x & = \cos(32.98°) \cos(60.94°) = 0.4074558 \\ y & = \sin(32.98°) \cos(60.94°) = 0.2644027 \\ z & = \sin(60.94°) = 0.8741115 \end{align*}
Gegeven dat alle drie de coördinaten positief zijn ligt deze plaats in octant 000, dus dat zijn de eerste drie cijfers van de binaire Sierpińskicoördinaat.
De punten A, B en C die horen bij octant 000 zijn A = (0,0,+1), B = (0,+1,0), C = (+1,0,0).
Voor het vierde binaire cijfer berekenen we som D van punten A en C: D = (+1, 0, +1). De lengte van D is \( r = \sqrt{1^2 + 0^2 + 1^2} = \sqrt{2} ≈ 1.414214 \), dus delen we de coördinaten van D door dat getal en vinden D = (+0,7071068, 0, +0,7071068).
Dan berekenen we de determinant van de matrix gevormd uit P, A, B. Die matrix is
\[ \left( \begin{matrix} +0.4074558 & 0 & 0 \\ +0.2644027 & 0 & +1 \\ +0.8741115 & +1 & 0 \end{matrix} \right) \]
en zijn determinant is +0,4074558×(0×0 − +1×+1) − +0,2644027×(0×0 − +1×0) + +0,8741115×(0×+1 − 0×0) = −0,4074558.
Net zo is de matrix gevormd uit P, B en D
\[ \left( \begin{matrix} +0.4074558 & 0 & +0.7071068 \\ +0.2644027 & +1 & 0 \\ +0.8741115 & 0 & +0.7071068 \end{matrix} \right) \]
en zijn determinant is +0,4074558×(+1×+0,7071068 − 0×0) − +0,2644027×(0×+0,7071068 − 0×+0,7071068) + +0,8741115×(0×0 − +1×+0,7071068) = −0,3299754, wat hetzelfde teken heeft als de vorige determinant.
en de matrix gevormd uit P, D en A is
\[ \left( \begin{matrix} +0.4074558 & +0.7071068 & 0 \\ +0.2644027 & 0 & 0 \\ +0.8741115 & +0.7071068 & +1 \end{matrix} \right) \]
met determinant +0,4074558×(0×+1 − +0,7071068×0) − +0,2644027×(+0,7071068×+1 − +0,7071068×0) + +0,8741115×(+0,7071068×0 − 0×0) = −0,186961, die hetzelfde teken heeft als de andere twee determinanten, dus punt P is binnenin driehoek ABD. Dat betekent dat het volgende binaire cijfer een 0 is, en dat we C gelijk zetten aan B, en dan B aan D, en vinden A = (0, 0, +1), B = (+0,7071068, 0, +0,7071068), C = (0, +1, 0).
Voor het vijfde binaire cijfer vinden we D = (0, +0,7071068, +0,7071068) en determinanten +0,1869610, +0,1011265 en +0,2881148, die allemaal hetzelfde teken hebben dus punt P is binnenin driehoek ABD, dus het binaire cijfer is 0, en we zetten C gelijk aan B, en dan B gelijk aan D, en vinden A = (0, 0, +1), B = (0, +0,7071068, +0,7071068), C = (+0,7071068, 0, +0,7071068).
Voor het zesde binaire cijfer vinden we D = (+0,3826834, 0, +0,9238795) en determinanten −0,2881148, +0,1011973 en −0,1011825, die niet allemaal hetzelfde teken hebben, dus punt P is niet in driehoek ABD maar in plaats daarvan in driehoek ADC. Het binaire cijfer is 1, en we zetten A gelijk aan B, en dan B gelijk aan D, en vinden A = (0, +0,7071068, +0,7071068), B = (+0,3826834, 0, +0,9238795), C = (+0,7071068, 0, +0,7071068).
Voor het zevende binaire cijfer vinden we D = (+0,4082483, +0,4082483, +0,816497) en determinanten +0,1011973, −0,0000085 en +0,0583854, die niet allemaal hetzelfde teken hebben dus punt P is niet in driehoek ABD maar in driehoek ADC. Het binaire cijfer is 1, en we zetten A gelijk aan B, en dan B gelijk aan D, en vinden A = (+0,3826834, 0, +0,9238795), B = (+0,4082483, +0,4082483, +0,816497), C = (+0,7071068, 0, +0,7071068).
Voor het achtste binaire cijfer vinden we D = (+0,5555702, 0, +0,8314696) en determinanten −0,0000085, −0,0297603 en −0,0515824, die allemaal hetzelfde teken hebben, dus P is binnenin driehoek ABD. Het binaire cijfer is 0, en we zetten C gelijk aan B, en dan B gelijk aan D, en vinden A = (+0,3826834, 0, +0,9238795), B = (+0,5555702, 0, +0,8314696), C = (+0,4082483, +0,4082483, +0,816497).
Voor het negende en laatste binaire cijfer vinden we D = (+0,4046150, +0,2088466, +0,8903200) en determinanten +0,0515824, −0,0111635 en +0,0000044, die niet allemaal hetzelfde teken hebben, dus punt P is niet binnen driehoek ABD maar binnen driehoek ADC. Het binaire cijfer is 1, en we zetten A gelijk aan B, en dan B gelijk aan D, en vinden A = (+0,5555702,0,+0,8314696), B = (+0,4046150, +0,2088466, +0,8903200), C = (+0,4082483, +0,4082483, +0,816497).
De binaire cijfers zijn 000001101, dus de binaire
Sierpińskicoördinaat is
© 2015 Louis Strous. Ik maakte de plaatjes in dit artikel met QGIS. Ik deed alle berekeningen die met Sierpińskicoördinaten te maken hebben, met een zelfgeschreven computerprogramma. De kaartinformatie die ik gebruikte kwam van Natural Earth, OpenStreetMap en van Google Maps.