Stand inside a matrix transformation. SVD, PCA, and least squares visualized immersively in virtual reality — running entirely in your browser.
Launch VR Demo →Cycle through modes with the left grip button (VR) or S key (desktop).
A 3D point cloud and deforming grid animate through the full SVD decomposition. Three presets: Symmetric, Rotation+Scale, Shear+Scale.
A 3D cube collapses flat onto a tilted image plane as the transformation reduces dimension from 3D to 2D.
A flat 2D square rotates and lifts into 3D space, showing how a non-square matrix maps a plane into a higher-dimensional space.
A 60-point ellipsoidal cloud aligns to its principal axes, then squashes to the best-fit plane, then to the best-fit line.
Four overdetermined planes in 3D space. A glowing sphere marks the least-squares solution; white lines show the perpendicular residual to each plane.
Parameter t ∈ [0, 3] drives a smooth three-stage decomposition of any matrix A = U Σ Vᵀ. Scrub with the VR triggers or desktop arrow keys.
The point cloud rotates to align with the right singular vectors.
Each axis stretches or compresses by its singular value.
A final rotation by U completes the full matrix transformation.
Each stage boundary triggers haptic feedback on both controllers and a visual pulse ring expanding outward from the origin.
Desktop: ← → keys scrub t · 1/2/3 or G = cycle matrix · S = cycle scenario · +/− = zoom · M = music
The entire application is ~1350 lines of JavaScript in a single file. SVD, PCA, and least-squares are computed in plain JS with a self-contained Jacobi eigendecomposition — no server, no WebAssembly, no backend. Bundle size: ~590 kB (gzip: ~151 kB).