Grab one arrow. Stretch it, shrink it, flip it backwards. How much of the world can you actually reach?
Not much, it turns out. Just a single straight line.
Now grab a second arrow, one that points somewhere genuinely different. Add it to any multiple of the first, in any combination you like. Suddenly you can reach every single point on an infinite plane.
That jump, from a line to an entire plane, using nothing but two moves, is the whole idea behind span, basis, and dimension. Once you see it, the formal definitions stop being scary. They're just names for things you already watched happen.
One vector, and everywhere it can take you
Say you have a vector . What can you build out of it, using only the two legal moves from last time, scaling and adding?
Since there's nothing to add it to yet, all you've got is scaling. Multiply by any number , positive, negative, huge, tiny, zero. Every result you get is still pointing in the same direction as , or exactly opposite it.
The Span of One Vector Is a Line
Slide c, or press play. Every point c·v you can ever reach lands on this one line through the origin, nothing off it, nothing missing from it.
Slide across its full range and watch the orange point crawl up and down that dashed green line. It never leaves it. It can't. There's no operation available that would push it off, because scaling a vector never rotates it.
That line is everything you can build from one vector. We give this set a name: the span of .
A second vector changes the game, if it points somewhere new
Here's the natural next question. What if you bring in a second vector, , and now you're allowed to combine for any numbers and ?
A Second Direction Changes Everything
Drag w around. As long as it does not sit on v's line, the span jumps from a single line to the entire plane.
Drag around the plane. Most places you drop it, something dramatic happens: the reachable set stops being a line and becomes the entire plane. Every point, anywhere, is some combination of and .
But drag back onto 's dashed line... and the magic disappears. The plane collapses back down to a single line, the same line as before. Adding a "new" vector that isn't actually new gives you nothing.
There's a clean way to test which case you're in, using the determinant:
When this is zero, is just a scaled copy of , they're pointing along the same line. When it's nonzero, genuinely points somewhere else, and together they unlock the whole plane.
Naming the reachable set: span
Now we can say precisely what we've been drawing. Given any collection of vectors , their span is every point you can reach by scaling each one and adding the results together:
That expression, , is called a linear combination. Span is just "the set of all linear combinations you could ever write down." One vector spans a line. Two vectors, if neither is redundant, span a plane. Nothing more mysterious than that.
A basis: enough to reach everywhere, and none wasted
Suppose your two vectors do span the whole plane. Here's a question worth sitting with: for a given point , how many different ways are there to write as a combination of them?
A Basis Gives Every Point a Unique Address
Drag p anywhere. The skewed grid is built from e1 and e2, and there is always exactly one pair (c1, c2) that lands exactly on p.
Drag anywhere you like. Watch and update. Now try to find a second pair of coefficients that also lands exactly on ... you can't. There's always exactly one. The skewed grid in the background is built from and , and sits at exactly one intersection of it, never two.
That's the second half of what makes a set of vectors special, beyond just spanning. A set that spans a space, with no redundant vectors and no vector left able to be built from the others, is called a basis. A basis isn't just "enough vectors to reach everywhere." It's the minimum needed, arranged so every point gets exactly one address in terms of them.
How many independent directions are there, really?
Last question, and it's the payoff for everything above. If you keep feeding vectors into a span, one at a time, how many of them actually do something before the rest start repeating?
Dimension Is Where the New Directions Run Out
Step through the vectors one at a time, or press play. Watch how many actually add a new direction before every extra one becomes redundant.
Step through , or hit play. The first vector always adds a new direction, since you're starting from nothing. The second one might too, if it doesn't lie on the first vector's line... and once it does add a new direction, the span becomes the entire plane. Every vector after that, no matter how it's aimed, was already reachable. It's marked redundant, because it is.
That count, the number of genuinely new directions before everything else becomes redundant, is the dimension. For the flat plane you've been staring at this whole post, the answer is always 2. Not because we picked round numbers, but because two independent directions are all a plane has room for.
We write it as:
Every basis of the same space has the same size, whether it's the tidy or two oddly-angled arrows like and above. The count never changes. Only the vectors do.
The short version
Span is everything reachable by scaling and adding a set of vectors, one vector spans a line, a second independent one expands that to a plane. A basis is a spanning set with nothing wasted in it, which is exactly what guarantees every point gets one unique set of coordinates. Dimension is just the size of that basis, the number of genuinely independent directions a space actually has room for, and every extra vector past that number is redundant no matter which way it points.
Two moves, scale and add. A handful of vectors. And a precise answer to "how big is this space, really." That's span, basis, and dimension, in full.
All visualizations are interactive React components running entirely in your browser, built with plain SVG and no external libraries. Drag the arrows and points directly, or use the sliders and play buttons, everything recomputes instantly.