The Racetrack Playa is a scenic dry lake that is located above the northwestern side of Death Valley, in Death Valley National Park, California, U.S.. The playa is exceptionally flat and level, elevates 1132 m above sea level, with the northern end being only 4 cm higher than the southern end. During periods of heavy rain, water washes down from the Racetrack mountain area draining into the playa, forming a shallow, short-lived endorheic lake. Under the desert sun, the thin veneer of water quickly evaporates, leaving behind a surface layer of soft slick mud. As the mud dries, it shrinks and cracks into a mosaic pattern of interlocking polygons.

The lake is famous for a mysterious geological phenomenon of "sailing stones" that move and inscribe long tracks along the smooth valley floor without human or animal intervention. Stones with rough bottoms leave straight striated tracks, while those with smooth bottoms tend to wander. Stones sometimes turn over, exposing another edge to the ground and leaving a different track in the stone's wake. Trails differ in both direction and length. Rocks that start next to each other may travel parallel for a time, before one abruptly changes direction to the left, right, or even back to the direction from which it came. Trail length also varies – two similarly sized and shaped rocks may travel uniformly, then one could move ahead or stop in its track.

sailing stone
A sailing stone in Racetrack Playa.

The phenomenon of rock motion has excited considerable interest, and there is scientific and popular literature extending back to the first report in 1948. Initial studies showed that the boulders move once every two or three years and that their traces usually remain visible for three to four years. Over time, many theories and hypotheses about the movement mechanism have been put forward. Rock movement has been variously attributed to high winds (over 145 kilometers per hour), liquid water, ice or ice flotation, but no one had observed the rock motion in action.

During the 2013-2014 winter, geologists from the Scripps Institute of Oceanography1 finally succeeded to observe rock movements using GPS and time-lapse photography2. The research team witnessed and documented rock movement on December 20, 2013, that involved more than 60 rocks, with some rocks moving up to 224 m between December 2013 and January 2014 in multiple move events. These observations contradicted earlier hypotheses of winds or thick ice floating rocks off the surface. Instead, rocks move when large ice sheets a few millimeters thick floating in an ephemeral winter pond start to break up during sunny days. These thin floating ice panels, frozen during cold winter nights, are driven by light winds and shove rocks at up to 5 m/min (0.3 km/h). Some GPS-measured moves lasted up to 16 minutes, and a number of stones moved more than five times during the existence of the playa pond in the winter of 2013-14. How massive boulders of hundreds of kilograms move and why some trails are missing rocks at the end of the track remains a mystery.

Assignment

We represent rocks as cuboid objects. A block always rests on the horizontal base (XY-plane) of a three-dimensional space with a fixed coordinate system as indicated in the figure below. The block is always viewed from a position along the positive X-axis in the direction of the YZ-plane. The front face of the block is always parallel with the YZ-plane. The dimensions of the object are described by its width $$W$$ (measured along the X-axis), length $$L$$ (measured along the Y-axis) and height $$H$$ (measures along the Z-axis). The position of the object is described by the position of the corner point $$(x, y)$$ at the bottom left of the front face of the object, as indicated by a black dot in the figure below, where $$x, y \in \mathbb{Z}$$.

block
Description of the size and position of a cuboid object in a three-dimensional space with a fixed coordinate system. The dimensions of the object are described by its width $$W$$, length $$L$$ and height $$H$$. The position of the object is described by the position of the corner point at the bottom left of the front face of the object, as indicated by a black dot. For the block shown in the figure, this point is located in the origin $$(0, 0)$$ of the base plane.

The surface area $$A$$ of the block is given by: \[A = 2(L\cdot W + L\cdot H + H\cdot W)\] The volume $$V$$ is given by: \[V = L\cdot H\cdot B\] The length of the space diagonal $$d$$ is given by: \[d = \sqrt{L^2 + H^2 + W^2}\] There are two ways the block can move: slide or tilt. The block may slide over its entire length to the left or to the right, or it may slide forward or backward over its entire width. This is illustrated in the figures below.

slide right
The block slides to the right over its entire length.
slide forward
The block slides forward over its entire width.

The block may also tilt to the left, to the right, forward or backward. This is illustrated in the figures below.

tilt right
The block is tilted to the right.
tilt forward
The block is tilted forward.

Write a class Block that represents blocks having dimensions and a position as described above, who can move in the two given ways. This class should support at least the following methods:

Example

>>> rock = Block(5, 2, 3)
>>> rock
Block(length=5, height=2, width=3, position=(0, 0))
>>> rock.area()
62.0
>>> rock.volume()
30.0
>>> rock.diagonal()
6.164414002968976
>>> rock2 = rock.slide('R')
>>> rock2
Block(length=5, height=2, width=3, position=(0, 5))
>>> rock is rock2
True
>>> rock.slide('F')
Block(length=5, height=2, width=3, position=(3, 5))
>>> rock.tilt('L')
Block(length=2, height=5, width=3, position=(3, 3))
>>> rock.tilt('B')
Block(length=2, height=3, width=5, position=(0, 3))
>>> rock.tilt('B').slide('L').tilt('L').slide('B')
Block(length=5, height=2, width=3, position=(-8, -4))
>>> rock.sail('SB')
Block(length=5, height=2, width=3, position=(-11, -4))
>>> rock.sail('TR')
Block(length=2, height=5, width=3, position=(-11, 1))
>>> rock.sail('SFSFTLSLTBTBSRSFTRTFTRTRSBSF')
Block(length=2, height=3, width=5, position=(-2, 6))

>>> rock.tilt('X')
Traceback (most recent call last):
AssertionError: invalid direction
>>> rock.sail('XY')
Traceback (most recent call last):
AssertionError: invalid movement
>>> rock.sail('TY')
Traceback (most recent call last):
AssertionError: invalid direction

Epilogue

Something significant happened on February 29, 1912 in Tandil, Argentina. A 300-ton stone that had perched impossibly on the edge of a local hill suddenly tumbled to the bottom and broke into pieces. Whether this happened due to vandalism or to blasting at a local quarry is unknown — there were no witnesses.

bewegend rotsblok
De naam van de Argentijnse stad Tandil is afkomstig van de Mapuche woorden tan (vallen) en lil (rots). Het is vermoedelijk een verwijzing naar de Piedra Movediza (bewegende steen), een groot rotsblok dat op haast miraculeuze wijze balanceerde op de rand van een rotsachtige heuvel. De Piedra Movediza viel op 29 februari 1912 naar beneden en brak aan de voet van de heuvel in twee stukken. Sommige mensen dachten dat tan in feite "bewegen" betekende. Het was immers gebruikelijk om flessen of andere voorwerpen tegen de onderkant van het rotsblok te leggen en te blijven kijken tot ze braken, waaruit duidelijk bleek dat het rotsblok steeds kleine schommelingen maakte. In 2007 werd een replica neergezet op de originele plaats van het rotsblok. Deze replica — gemaakt door ingenieursstudenten — werd eigenlijk ter plaatse in beton gegoten en wankelt niet op dezelfde manier als het origineel.

In 2007 the town replaced it with an exact replica. To date, it's still there.

Resources