Dejemos que $p$ sea un punto de $S$ y $v$ un vector basado en $p$ . La solución algorítmica a su pregunta tiene dos fases: Describir el conjunto $T_{p} S$ de vectores tangentes a $S$ en $p$ y el proyecto $v$ en $T_{p} S$ .
He aquí un esbozo general (incluyendo las hipótesis técnicas que son "casi ciertamente ciertas en situaciones reales"): Supongamos que $S$ se define por $m$ ecuaciones en $n > m$ variables; precisamente, suponga $S$ es un regular nivel de juego definido por las ecuaciones $$ g_{i}(x_{1}, \dots, x_{n}) = c_{i},\quad i = 1, \dots, m, $$ en la que la función $g_{i}$ tienen primeras derivadas parciales continuas y los vectores gradientes $n_{i} = \nabla g_{i}(p)$ son linealmente independientes. El espacio tangente $T_{p}S$ es el conjunto de vectores $x$ satisfaciendo $\langle n_{i}, x\rangle = 0$ para todos $i$ . Se trata de un sistema lineal homogéneo de $m$ ecuaciones en $n$ variables. Se puede encontrar una base para el conjunto de soluciones mediante "técnicas estándar de álgebra lineal" ( Eliminación gaussiana ).
Una vez que tenga una base $\{w_{1}, \dots, w_{n-m}\}$ de $T_{p} S$ Utiliza el Algoritmo de Gram-Schmidt para construir un base ortonormal $\{u_{1}, \dots, u_{n-m}\}$ de $T_{p} S$ . La proyección deseada es $$ \sum_{j=1}^{n-m} \langle v, u_{j}\rangle u_{j} = \langle v, u_{1}\rangle u_{1} + \dots + \langle v, u_{n-m}\rangle u_{n-m}. $$ La fórmula final es esencialmente trivial para trabajar; la "parte difícil" es calcular una base ortonormal de $T_{p} S$ .
Ejemplo: Supongamos que $S$ se define por \begin{align*} g_{1}(x_{1}, \dots, x_{5}) &= (x_{1} - 1)^{2} + x_{2}^{2} - (x_{3} - 1)^{2} = 0, \\ g_{2}(x_{1}, \dots, x_{5}) &= x_{1} + x_{4} + x_{5} = 0, \end{align*} y $p = (0, \dots, 0)$ es el origen. Los gradientes respectivos son \begin{align*} \nabla g_{1} &= \bigl(2(x_{1} - 1), 2x_{2}, - 2(x_{3} - 1), 0, 0\bigr), \\ \nabla g_{2} &= (1, 0, 0, 1, 1), \end{align*} y los vectores de gradiente en $p$ son $$ n_{1} = (-2, 0, 2, 0, 0),\quad n_{2} = (1, 0, 0, 1, 1). $$ El sistema de ecuaciones resultante $\langle n_{i}, x\rangle = 0$ tiene una matriz de coeficientes $$ \left[\begin{array}{@{}rcccc@{}} -2 & 0 & 2 & 0 & 0 \\ 1 & 0 & 0 & 1 & 1 \\ \end{array}\right]. $$ La eliminación gaussiana la convierte en la matriz reducida de filas-echelones $$ \left[\begin{array}{@{}ccccc@{}} 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 & 1 \\ \end{array}\right], $$ a partir de la cual podemos resolver para $x_{1}$ y $x_{3}$ en términos de las variables libres $x_{2}$ , $x_{4}$ y $x_{5}$ : $$ x_{1} = -x_{4} - x_{5},\quad x_{3} = -x_{4} - x_{5}. $$ Fijar sucesivamente cada variable libre en $1$ y las otras variables libres a $0$ da una base de $T_{p} S$ : $$ w_{1} = (0, 1, 0, 0, 0),\quad w_{2} = (-1, 0, -1, 1, 0),\quad w_{3} = (-1, 0, -1, 0, 1) $$
Ahora ortonormaliza. Gram-Schmidt da \begin{align*} u_{1} &= w_{1}, \\ u_{2} &= \tfrac{1}{\sqrt{3}} w_{2}, \\ u_{3} &= \tfrac{1}{\sqrt{15}}(1, 0, 1, 2, -3). \end{align*}
Por último, si $v = (v_{1}, v_{2}, v_{3}, v_{4}, v_{5})$ es un vector arbitrario en el origen, su proyección en $T_{p} S$ es \begin{multline*} \langle v, u_{1}\rangle u_{1} + \langle v, u_{2}\rangle u_{2} + \langle v, u_{3}\rangle u_{3} \\ = v_{2} u_{1} + \left(\tfrac{-v_{1} - v_{3} + v_{4}}{\sqrt{3}}\right) u_{2} + \left(\tfrac{v_{1} + v_{3} + 2v_{4} - 3v_{5}}{\sqrt{15}}\right) u_{3} \\ = v_{2} (0, 1, 0, 0, 0) + \left(\tfrac{-v_{1} - v_{3} + v_{4}}{3}\right) (-1, 0, -1, 1, 0) \\ + \left(\tfrac{v_{1} + v_{3} + 2v_{4} - 3v_{5}}{15}\right) (1, 0, 1, 2, -3). \end{multline*}