Skip to explorer

Benesi 3D Explorer

Explore the quadratic Benesi Pine Tree as a shaded three-dimensional surface. Orbit the whole shape, change its coordinate multipliers, then refine a still image to study the branching detail.

WebGL 2 is required for this interactive 3D view.
Loading renderer…

Places to start

Each example restores the starting shape and rendering settings, keeps your palette and resets the camera. Compare the same surface from three directions.

Front view

Start with the whole Pine Tree surface. Look for branching forms and smaller structures along its boundary.

Side view

Turn the camera through 90° to see the depth and asymmetry hidden by a single view.

Elevated view

Look down from 35° above the surface. Shadows and occlusion reveal the spaces between the branches.

Understanding the Benesi Pine Tree

This explorer uses the quadratic Benesi Pine Tree mapping. Starting at a point in three-dimensional space, each iteration applies the quadratic transform, adds the point multiplied by the X/Y/Z controls with Y and Z swapped, then rotates the result in the Y/Z plane. Points whose orbits remain bounded form the finite-iteration interior.

The starting multipliers are 1, 0.526316 and 0.745614, from the Mandelbulber Pine Tree example. The mathematical mapping follows its Pine Tree formula reference; this page implements the mathematics independently for the browser.

How this differs from the 2D explorer

The existing 2D Benesi folding explorer is a separate experiment using box folds, sphere folds and scale on a plane. It is not a projection or slice of this Pine Tree formula. The two views therefore have different shapes and controls.

How this surface is drawn

A ray travels through each pixel. Conservative steps use an approximate distance estimate until the ray reaches the surface or leaves the scene. Surface normals, soft shadows and ambient occlusion reveal depth. Colour follows the same orbit used for distance estimation and is mapped onto your chosen palette.

While you orbit, zoom or drag a slider, a lower-resolution preview keeps interaction responsive. The full-resolution image returns when you stop. Progressive sampling averages slightly offset pixels to smooth edges. Moving the camera or changing a setting restarts sampling. Frame your view first, then use Refine image; refinement also stops auto-rotation.

Choose detail deliberately

Coordinate multipliers and per-iteration rotation
These reshape the fractal. X, Y and Z label the input constant before its Y/Z swap. Per-iteration rotation changes the formula, while the View controls move only the camera.
Bailout and iterations
Bailout sets the escape radius. More iterations refine the boundary but add work to every surface, shadow and normal calculation. Start with 32 iterations and one sample while navigating.
Colour detail, occlusion and shadows
These change appearance and lighting. They do not change the fractal's shape.
Samples and precision
Samples smooth the image over several frames. Smaller distance and normal thresholds resolve finer detail but cost more time; these controls are limited to practical single-precision values.

Navigate on a phone or desktop

On a computer, drag to orbit and scroll to zoom. On a phone, Controls opens the settings sheet. Tap Interact to orbit with one finger or zoom with two; tap it again to scroll the page. Zoom buttons work without gestures. Fullscreen keeps the settings available. Reset view restores only the camera; Reset all settings also restores the starting shape, palette and detail settings.

If rendering is slow or unavailable

Keep one sample and reduce iterations while looking around. Refine image takes longer on a phone. This view needs WebGL 2; if the renderer cannot start, the examples and explanations remain available.

Keep exploring

Read the Benesi guide, compare the Mandelbulb explorer, learn about distance estimation and 3D rendering, or browse all fractals.