Mineral Habit Atlas

These are idealized 3D crystal habits of rock-forming, accessory and ore minerals. Each one is built from the mineral's lattice, its face forms and their relative development, and checked against classical interfacial angles. Open a mineral to see its habit matrix, or go to Learn to watch any crystal being built step by step.

Mineral Habit Matrix

These are idealized crystal habits, each built from the mineral's lattice and the relative development of its faces. Drag the grid to rotate every crystal at once. Click any crystal to inspect it, download it, or follow how it was built.

Swipe sideways for more columns · tap any crystal to inspect it

Literature

    How a crystal habit is built

    Start with why one mineral grows in so many shapes. Then see how every crystal on this site comes from the same six steps: lattice, face normals, symmetry, half-space cuts, relative development and normalization. Pick any crystal and walk through the steps. In step 5 you can drag the sliders and watch the habit change.

    Why can one mineral grow in so many shapes?

    Atoms set the angles, but growth sets the shape. Every crystal on this site follows from the same few ideas:

    1. The atoms fix the angles. A crystal is a repeating 3D pattern of atoms, like wallpaper in three dimensions. Flat faces form only along the densest planes of that pattern, so the angles between faces are fixed. Every zircon on Earth has the same angles (Steno's law, 1669).
    2. Each kind of face is a wall at its own distance. A face's distance from the centre depends on how fast it grows. Surprisingly, the fast faces race ahead and grow themselves out of existence. The slow faces survive and become the big ones.
    3. The surroundings change the speeds. Temperature, cooling rate, supersaturation, water, and trace elements that stick to particular faces all speed some faces up and slow others down. Change the conditions and different faces win: more {100} in hotter zircon (Pupin), needle-shaped apatite when a melt is quenched, dodecahedral magnetite in reducing fluids.
    4. Symmetry copies every choice. Setting one {101} face of zircon sets all eight at once, so a mineral has only a few independent "knobs", one per kind of face. Each knob turns smoothly, though, and a few smooth knobs already give endless combinations. Each grid on this site turns two knobs in steps.
    5. Faces switch on and off at tipping points. Push a face outward and it shrinks until it suddenly vanishes. Pull it in and it can swallow its neighbours. That is how an octahedron turns into a dodecahedron with no change to the atoms.
    6. Stretching keeps the angles. Elongation and flattening turn the same faces into needles, stubby prisms or plates. Every angle stays the same; only the proportions change.
    7. Lower symmetry means more knobs. A cubic garnet has a few kinds of faces. A triclinic plagioclase has no symmetry linking its faces beyond inversion, so nearly every pair of faces is its own knob, and the variety grows.

    Shape matters in geochronology: it sets the α-ejection correction in (U–Th)/He dating, the diffusion domain in Ar and Pb closure, the magnetic domain state of magnetite, and what you see in a thin section. Not shown here: twins, curved and skeletal faces, rounding during transport, and zoning.

    View in matrix ↗
    Step 1

        The general recipe

        1. Lattice to face normals. nhkl = h a* + k b* + l c*, so the cell geometry fixes every interfacial angle. Hexagonal minerals use Miller–Bravais (hkil) indices, with i dropped.
        2. Point-group symmetry. Each form {hkl} expands to all of its equivalent faces, which share one central distance.
        3. Half-space intersection. The crystal is the convex polyhedron n·x ≤ d over all faces, the Gibbs–Wulff construction. A plane that misses the solid leaves no face.
        4. Relative development. A typology ratio such as Pupin's {100}:{110} becomes a perimeter fraction (prisms) or an area fraction (terminations), and the central distances are solved by bisection.
        5. Elongation. Translating the two terminations rigidly along the axis lengthens the prism without changing the terminations: d′ = d + |n·u|·t.
        6. Normalization and export. The crystal is scaled to unit volume and written as a binary STL and an exact planar B-rep STEP file.

        The shapes are idealized: convex, unabraded, untwinned and unzoned. The browser rebuilds each crystal from the same half-spaces as the Python generator and reproduces every published geometry (face counts identical, volumes within 10⁻⁷).