Procedural geometry study

Back to visual explanations

Start with a sine wave.

A broad wave raises and lowers the ground. Its amplitude sets the height of the hills; its frequency sets how closely they repeat.

From sine waves to a landscape

Change a wave to reshape the valley. Zero removes it.

Seed 1502. Step ahead or press Play: waves, graph and rover share this landscape and journey time.

2.20 sin(0.11z + φ(t))0.85 sin(0.23z + 0.4 + φ(t))0.22 sin(0.45x + 0.31z + φ(t))
Baseline: height 2.7

Changing phase φ(t) moves each wave through time. They settle before we add their heights.
Time 0.0 s · Seed 1502 · Yellow slice: x = 0.0, z = -16.0 to 16.0. Placed rock models are not shown.

Preparing the terrain and rover…

How the landscape and movement work

One landscape, three views. The combined waves, 3D graph and rover share the selected seed, wave strengths and journey time. The graph samples the same height formula as the renderer, including seeded shoulders and rocky ground detail; separately placed rock models are not drawn in the graph. The yellow curve is a slice through the rover’s current x coordinate, covering 16 units behind and ahead in z.

Time and motion. Use Journey time or the five-second steps to inspect future terrain. Play advances time while keeping your selected graph visible. See the landscape starts the rover from that exact point. The ground stays fixed in world coordinates: these graphs move along the route, rather than changing the terrain underneath the rover. Replay returns to the beginning of the explanation and journey.

Procedural terrain. The seed controls hills and rocky detail around the winding valley. The wave sliders reshape the valley floor and update the rendered ground and wheel-contact calculations together. Generating another landscape resets the journey while keeping your wave strengths.

Ground contact. Six ground samples determine the rover’s height, body tilt and suspension offsets. Each wheel turns by its travelled distance divided by its radius. The shader and rover use the same route-height function.

Camera. Drag the landscape to orbit and tilt. After clicking the scene, use the mouse wheel to zoom. Auto camera restores the moving view. Keyboard users can use the arrow keys, plus and minus, and Home. Camera changes work while playback is paused.

Rendering. The terrain is generated in a shader; the rover and nearby rocks are locally packaged 3D models. Tracks, dust and a moving camera complete the scene. This is a Mars-inspired illustration, not measured Martian terrain or a full vehicle-physics simulation.

Seed 1502. Playback pauses offscreen and when this tab is hidden. Reduced-motion preferences show a still view; Play starts motion explicitly. Model credits.

    fifteen02