Personal project / 2026
TensorView
Making tensors tangible.
A tool for learning and visualizing tensors. Turn an array of numbers into something you can see, move, and understand.
Open TensorView ↗
Drag the cube to rotate; scroll around it to move down the page. Use the slider to separate layers. Keyboard: focus the cube and use arrow keys.
A little piece to play with. The full explorer and lessons live in TensorView.
01 / The idea
From a number
to a space.
Tensors can feel abstract when you meet them as notation. TensorView gives those numbers a shape, starting with a single value and building toward a three-dimensional array.
Color reveals the values. Layers reveal the structure. Changing a number shows how the representations relate.
Scalar
One value.
Vector
A line of values.
Matrix
A grid of values.
Tensor
A stack of grids.
02 / The explorer
Three views.
One shared dataset.
A two-dimensional slice, a 3D volume, and an editable numerical grid stay in sync. Select a cell in one view and find it in the others; edit its value and watch the colors change.
Scrub through time, play a wave, or separate the layers to see how a slice fits inside the whole. Presets offer a starting point, with custom formulas for further exploration.

03 / Learning by doing
Build the intuition.
Then explore.
A guided introduction moves from scalars to vectors, matrices, and third-order tensors, then explains slices and fibers. Each step pairs an interactive visual with the corresponding notation.
The goal is to make the relationship between dimensions and data easier to grasp before opening the full explorer.

04 / The build
A small stack.
A shared source of truth.
Built with vanilla JavaScript, Three.js, and Vite. A shared tensor model stores the values and notifies each view when they change. Three.js renders the volume, a 2D canvas draws the slice, and MathJax handles the mathematical notation.
- Three.js
- Vite
Designed & built by Curtis Ray
Next project: People the App ↗