The Gram-Schmidt process takes any set of linearly independent vectors and turns them into a mutually perpendicular basis, one subtraction at a time. This simulator draws three vectors in ℝ³ and walks through the construction live: v₁ is kept as-is, v₂ has its component along v₁ projected out, and v₃ has its components along both earlier vectors projected out. Drag the sliders on the third vector to see u₃ recompute instantly while u₁ and u₂ stay fixed, watch the dashed projection segments that are being subtracted at each step, and check the dot-product readouts — they stay at 0.000 no matter how the vectors move, confirming the resulting basis really is orthogonal. Toggle the orthonormal frame to see the same basis rescaled to unit length, which is the Q matrix of a QR decomposition.