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 rocks 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 rocks of hundreds of kilograms move and why some trails are missing rocks at the end of the track remains a mystery.

Assignment

We represent a rock as a cuboid block that always sits on the base plane (XY-plane) of a three-dimensional space with a fixed coordinate system, as shown in the figure below. The rock is always viewed from a vantage point along the positive X-axis in the direction of the YZ-plane. The front face of the rock is always parallel to the YZ-plane. The dimensions of the rock are described by its width $$W$$ (measured along the X-axis), length $$L$$ (measured along the Y-axis) and height $$H$$ (measured along the Z-axis). The position of the rock is described by the position of the bottom-left vertex $$(x, y)$$ of its front face (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 area $$A$$ of the rock 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 W\] The length of the space diagonal $$d$$ is given by: \[d = \sqrt{L^2 + H^2 + W^2}\] There are two ways in which the rock can move: sliding or tilting. The rock can slide to the left or to the right across its entire length, or it can slide forward or backward across 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 rock 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.

Define a class Block to represent rocks that have dimensions and a position as described above, and that can move in the two ways specified. When creating a new rock (Block), integers (int) must be passed to the three parameters length, height, and width, which respectively specify the length, the height and the width of the rock. There is also an optional fourth parameter position to which a sequence (list or tuple) of two integers (int) can be passed, specifying the position of the bottom-left vertex in the front face of the rock. If no value is explicitly passed to the position parameter, this vertex lies in the origin $$(0, 0)$$ of the base plane.

When a rock $$r$$ (Block) is passed to the built-in function repr, the function must return a string representation (str) that reads like a Python expression to create a new rock (Block) with the same dimensions and position as the current dimensions and position of rock $$r$$. In doing so, the position must always be represented as a tuple with two integers (int). The four arguments should be passed as named arguments (keyword arguments). You can derive the format of this string representation from the examples below.

On a rock $$r$$ (Block), you should be able to call 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
It is widely believed that the name of the city of Tandil, Argentina comes from the Mapuche words tan ("falling") and lil (rock). It is probably a reference to the Piedra Movediza ("Moving Stone"), a large boulder which stood seemingly miraculously balanced on the edge of a rocky foothill. The Piedra Movediza toppled on 29 February 1912, and split into two pieces at the bottom of the hill. Some people thought that tan actually meant "move". In order to demonstrate the slight movements of the boulder, it was common practice to place bottles under its base to watch them shatter. In May 2007, a fix replica was set up in the same place where the original stood. The replica — made by engineering students — is actually cemented in place and does not teeter the way the original did.

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

Resources