Racetrack Playa is een schilderachtig opgedroogd meer in Death Valley National Park (Californië, VSA). Dit uitzonderlijk vlak en horizontaal meer ligt op 1132 m boven de zeespiegel en is aan de noordkant slechts 4 cm hoger dan aan de zuidkant. Tijdens perioden van zware regenval vloeit water uit de bergen naar Racetrack Playa, waar het kortstondig een ondiep meer vormt. De hete woestijnzon doet het dunne laagje water snel verdampen, waardoor een zachte gladde modderlaag overblijft. Bij het opdrogen krimpt en scheurt de modder tot een mozaïekpatroon van aaneengesloten veelhoeken.
Het meer is vooral bekend omwille van een mysterieus geologisch fenomeen van "zeilende rotsblokken" die bewegen zonder interventie van mensen of dieren en daarbij lange sporen in de zachte grond achterlaten. Rotsblokken met een ruwe onderkant laten rechte gegroefde sporen na, terwijl rotsen met een platte onderkant de neiging hebben om af te dwalen. Soms kantelen de rotsblokken en komen daarbij met een andere zijde op de grond te liggen, waardoor ze plots een ander spoor achterlaten. De sporen verschillen zowel in richting als in lengte. Rotsblokken die in elkaars buurt liggen, kunnen bijvoorbeeld eerst een tijdje parallel bewegen en daarna plotseling naar links of naar rechts uitwijken, of zelfs rechtsomkeer maken.
De sporen werden voor het eerst waargenomen en bestudeerd aan het begin van de twintigste eeuw. Daaruit bleek onder andere dat de rotsblokken eens om de twee à drie jaar bewegen en dat hun sporen doorgaans drie à vier jaar zichtbaar blijven. Er zijn in de loop der jaren heel wat uiteenlopende theorieën aangebracht om het bewegen van de rotsblokken te verklaren. Zo dacht men bijvoorbeeld dat de rotsblokken voortgedreven werden door sterke winterwinden (tot 145 kilometer per uur), door drijvende ijsschotsen die zich aan het wateroppervlak vormen of door ijskragen die rond de stenen groeien en als een soort parachute fungeren.
Tijdens de winter van 2013-2014 slaagden geologen van het Scripps Institute of Oceanography1 er uiteindelijk in om de bewegingen van de rotsblokken te registeren met behulp van GPS en time-lapse-fotografie2. Op 20 december 2013 konden ze minstens 60 bewegende rotsblokken waarnemen, waarvan sommige zich tussen december 2013 en januari 2014 tot 224 meter verplaatsten in verschillende fasen. Hun studie weerlegde eerdere hypothesen die de bewegingen toeschreven aan de wind of aan dikke ijslagen die rotsen voortstuwen. In plaats daarvan stelden ze vast dat de rotsblokken bewegen wanneer een ijslaag van slechts een paar milimeter dik begint te smelten tijdens perioden met lichte wind. Als deze flinterdunne ijsvliezen over het smeltwater schuiven, kunnen ze de rotsblokken meevoeren tot maximaal vijf meter per minuut. Hoe massieve rotsblokken van honderden kilogrammen bewegen en waarom er soms stenen ontbreken op het einde van een spoor blijft voorlopig een raadsel.
We stellen een rotsblok voor als een balkvormig object. Het blok ligt altijd op het grondvlak (XY-vlak) van een driedimensionale ruimte met een vast assenstelsel zoals aangegeven in onderstaande figuur. Het blok wordt steeds bekeken vanuit een standpunt langs de positieve X-as in de richting van het YZ-vlak. Het voorvlak van het blok ligt altijd parallel met het YZ-vlak. De afmetingen van het blok worden beschreven door zijn breedte $$B \in \mathbb{N}_0$$ (gemeten langs de X-as), lengte $$L \in \mathbb{N}_0$$ (gemeten langs de Y-as) en hoogte $$H \in \mathbb{N}_0$$ (gemeten langs de Z-as). De positie van het blok wordt beschreven aan de hand van de positie van het hoekpunt $$(x, y)$$ linksonder in het voorvlak (in de figuur aangeduid met een zwarte stip), waarbij geldt dat $$x, y \in \mathbb{Z}$$.
De oppervlakte $$A$$ van het rotsblok wordt gegeven door: \[A = 2(L\cdot B + L\cdot H + H\cdot B)\] Het volume $$V$$ wordt gegeven door: \[V = L\cdot H\cdot B\] De lengte van de binnendiagonale lijn $$d$$ wordt gegeven door: \[d = \sqrt{L^2 + H^2 + B^2}\] Er zijn twee manieren waarop het rotsblok kan bewegen: schuiven of kantelen. Het rotsblok kan over zijn volledige lengte naar links of naar rechts schuiven, of kan over zijn volledige breedte naar voor of naar achter schuiven. Dit wordt geïllustreerd in onderstaande figuren.
Het rotsblok kan ook naar links, rechts, voor of achter kantelen. Dit wordt geïllustreerd in onderstaande figuren.
Definieer een klasse Blok waarmee rotsblokken kunnen voorgesteld worden die afmetingen en een positie hebben zoals hierboven beschreven, en die ook op de twee aangegeven manieren kunnen bewegen. Bij het aanmaken van een rotsblok (Blok) moeten gehele getallen (int) doorgegeven worden aan de drie parameters lengte, hoogte, breedte, die respectievelijk de lengte, de hoogte en de breedte van het rotsblok vastleggen. Er is ook nog een optionele vierde parameter positie waaraan een reeks (list of tuple) van twee gehele getallen (int) kan doorgegeven worden, die de positie aangeeft van het hoekpunt linksonder in het voorvlak. Als er niet expliciet een waarde wordt doorgegeven aan de parameter positie, dan ligt dit hoekpunt in de oorsprong $$(0, 0)$$ van het grondvlak.
Als er een rotsblok $$b$$ (Blok) wordt doorgegeven aan de ingebouwde functie repr, dan moet die een stringvoorstelling (str) teruggeven die leest als een Python expressie waarmee een nieuw rotsblok (Blok) aangemaakt wordt met dezelfde afmetingen en positie als de huidige afmetingen en positie van rotsblok $$b$$. Daarbij moet de positie altijd weergegeven worden als een tuple met twee gehele getallen (int). De vier argumenten moeten ook benoemd doorgeven worden. De opmaak van deze stringvoorstelling kan je afleiden uit onderstaande voorbeelden.
Op een rotsblok $$b$$ (Blok) moet je minstens de volgende methoden kunnen aanroepen:
Een methode oppervlakte waaraan geen argumenten moeten doorgegeven worden. De methode moet de oppervlakte (float) van rotsblok $$b$$ teruggeven.
Een methode volume waaraan geen argumenten moeten doorgegeven worden. De methode moet het volume (float) van rotsblok $$b$$ teruggeven.
Een methode diagonaal waaraan geen argumenten moeten doorgegeven worden. De methode moet de lengte (float) van de binnendiagonale lijn van rotsblok $$b$$ teruggeven.
Een methode schuif waaraan een string (str) moet doorgegeven worden die bestaat uit één enkele letter. Deze letter geeft de richting aan waarin rotsblok $$b$$ moet verschuiven: naar links (L), rechts (R), voor (V) of achter (A). Als geen hoofdletter wordt doorgegeven die overeenkomt met één van deze vier richtingen, dan mag rotsblok $$b$$ niet verschuiven en moet een AssertionError opgeworpen worden met de boodschap ongeldige richting en mag rotsblok $$b$$ niet verschuiven. Anders moet de methode rotsblok $$b$$ in de gegeven richting verschuiven en een verwijzing naar rotsblok $$b$$ teruggeven.
Een methode kantel waaraan een string (str) moet doorgegeven worden die bestaat uit één enkele letter. Deze letter geeft de richting aan waarin het blok $$b$$ moet kantelen: naar links (L), rechts (R), voor (V) of achter (A). Als geen hoofdletter wordt doorgegeven die overeenkomt met één van deze vier richtingen, dan mag rotsblok $$b$$ niet kantelen en moet een AssertionError opgeworpen worden met de boodschap ongeldige richting. Anders moet de methode rotsblok $$b$$ in de gegeven richting kantelen en een verwijzing naar rotsblok $$b$$ teruggeven.
Een methode zeil waaraan een string (str) met een even lengte moet doorgegeven worden. Deze string moet alternerend bestaan uit letters die een bepaalde beweging aangegeven (S voor schuiven of K voor kantelen) en letters die een bepaalde richting aangeven (L voor links, R voor rechts, V voor voorwaarts of A voor achterwaarts). Zo staat SA bijvoorbeeld voor schuif naar achter, KR voor kantel naar rechts, en SAKR voor schuif eerst naar achter en kantel daarna naar rechts. Als een karakter op een even positie in de string niet overeenkomt met één van de hoofdletters die bewegingen aanduiden, dan mag rotsblok $$b$$ niet bewegen en moet een AssertionError opgeworpen worden met de boodschap ongeldige beweging. Als een karakter op een oneven positie in de string niet overeenkomt met één van de hoofdletters die richtingen aanduiden, dan mag rotsblok $$b$$ niet bewegen en moet een AssertionError opgeworpen worden met de boodschap ongeldige richting. Anders moet de methode rotsblok $$b$$ achter elkaar de omschreven bewegingen laten uitvoeren en een verwijzing naar rotsblok $$b$$ teruggeven.
>>> rots = Blok(5, 2, 3)
>>> rots
Blok(lengte=5, hoogte=2, breedte=3, positie=(0, 0))
>>> rots.oppervlakte()
62.0
>>> rots.volume()
30.0
>>> rots.diagonaal()
6.164414002968976
>>> rots2 = rots.schuif('R')
>>> rots2
Blok(lengte=5, hoogte=2, breedte=3, positie=(0, 5))
>>> rots is rots2
True
>>> rots.schuif('V')
Blok(lengte=5, hoogte=2, breedte=3, positie=(3, 5))
>>> rots.kantel('L')
Blok(lengte=2, hoogte=5, breedte=3, positie=(3, 3))
>>> rots.kantel('A')
Blok(lengte=2, hoogte=3, breedte=5, positie=(0, 3))
>>> rots.kantel('A').schuif('L').kantel('L').schuif('A')
Blok(lengte=5, hoogte=2, breedte=3, positie=(-8, -4))
>>> rots.zeil('SA')
Blok(lengte=5, hoogte=2, breedte=3, positie=(-11, -4))
>>> rots.zeil('KR')
Blok(lengte=2, hoogte=5, breedte=3, positie=(-11, 1))
>>> rots.zeil('SVSVKLSLKAKASRSVKRKVKRKRSASV')
Blok(lengte=2, hoogte=3, breedte=5, positie=(-2, 6))
>>> rots.kantel('X')
Traceback (most recent call last):
AssertionError: ongeldige richting
>>> rots.zeil('XY')
Traceback (most recent call last):
AssertionError: ongeldige beweging
>>> rots.zeil('KY')
Traceback (most recent call last):
AssertionError: ongeldige richting
Op 29 februari 1912 stond de Argentijnse stad Tandil in rep en roer. Sinds mensenheugenis had een rotsblok van 300 ton op haast miraculeuze wijze gebalanceerd op de rand van een plaatselijke heuvel, maar nu was het naar beneden getuimeld en in stukken gebroken. Of dit het gevolg was van vandalisme of het gebruik van explosieven in een plaatselijke steengroeve blijft echter een raadsel — er waren immers geen getuigen.
In 2007 liet het stadsbestuur een nauwkeurig nagemaakte replica plaatsen. Op vandaag staat die er nog altijd.
Norris RD, Norris JM, Lorenz RD, Ray J, Jackson B (2014). Sliding rocks on Racetrack Playa, Death Valley National Park: first observation of rocks in motion. PloS one 9(8), e105948. 3
Lorenz RD, Jackson BK, Barnes JW, Spitale J, Keller JM (2011). Ice rafts not sails: Floating the rocks at Racetrack Playa. American Journal of Physics 79(1), 37-42. 4