- Vector \(\mathbf w\) defining linear functional \(\mathbf w^{\scriptscriptstyle\mathsf{T}}\) (move this by dragging the head of the arrow)
- Vector \(\mathbf z\) NOT in hyperplane \(\operatorname{NS}(\mathbf w^{\scriptscriptstyle\mathsf{T}})\) (move this by dragging the head of the arrow)
- Projection operator is \(P = \frac1{\mathbf w^{\scriptscriptstyle\mathsf{T}} \mathbf z} \mathbf z \mathbf w^{\scriptscriptstyle\mathsf{T}}\); projects to \(\operatorname{span}(\mathbf z)\) along hyperplane \(\operatorname{NS}(\mathbf w^{\scriptscriptstyle\mathsf{T}})\)
- Input vector \(\mathbf v\) (move this by dragging the head of the arrow)
- Output vector \(P\mathbf v\) (automatically computed for your convenience)
- Bonus output vector \((I-P)\mathbf v\) (automatically computed for your convenience)

Please excuse the horrible Javascript and user interface design.