Normalizar conserva la dirección de un vector y ajusta su longitud a uno. Así podemos separar «hacia dónde» se mueve un objeto de «a qué velocidad» debe hacerlo.
Un vector como (8, 6) contiene dos datos a la vez: dirección y tamaño. En muchas operaciones solo interesa la dirección. La normalización elimina el tamaño y deja un vector unitario.
Esto evita que el movimiento diagonal sea más rápido que el horizontal o vertical y simplifica el control de fuerzas, cámaras y seguimiento de objetivos.
Un vector unitario tiene magnitud exactamente igual a uno.
El símbolo v̂ se lee «v sombrero» y suele representar la versión normalizada de v. Hay infinitos vectores unitarios: cada dirección posible tiene uno.
Dividimos cada componente por la longitud del vector original:
La división escala el vector por el recíproco de su longitud. Si medía 5, multiplicamos por 1/5.
La magnitud de v = (3, 4) es 5. Por lo tanto:
Al comprobar su longitud obtenemos √(0.6² + 0.8²) = 1.

La normalización no rota el vector. Solo lo escala hasta que su punta queda sobre el círculo unitario centrado en el origen.
Para cualquier vector no nulo, v̂ es un múltiplo positivo de v. Por eso ambos son paralelos y tienen exactamente el mismo sentido.
Esta ecuación también permite reconstruir un vector de cualquier tamaño a partir de su dirección normalizada.
El vector (0, 0) no puede normalizarse porque su magnitud es cero y no se puede dividir por cero. Además, no tiene dirección que conservar.
En un programa se debe comprobar este caso antes de dividir.
Para obtener una dirección desde una posición A hasta una posición B, primero restamos y después normalizamos:
El resultado apunta al objetivo y tiene longitud uno, sin importar la distancia original.
Una vez normalizada la dirección, la multiplicamos por la rapidez deseada:
Con esto, todos los movimientos recorren la misma cantidad de unidades por segundo, incluso cuando combinan x e y.
Modifica el vector original. El vector cian conserva sus componentes y el amarillo muestra su versión unitaria. Activa la circunferencia para verificar visualmente que el resultado mide uno.
function normalizar(v) {
const longitud = Math.hypot(v.x, v.y);
if (longitud === 0) return { x: 0, y: 0 };
return { x: v.x / longitud, y: v.y / longitud };
}
const v = { x: 3, y: 4 };
const unitario = normalizar(v);
console.log(unitario); // { x: 0.6, y: 0.8 }La función debe llamarse y su valor de retorno debe mostrarse. Prueba otros componentes:
Devolver {x:0,y:0} para la entrada nula es una decisión práctica habitual; otra opción es devolver null para obligar a tratar el caso especial.
Si se suman teclas derecha y arriba se obtiene (1, 1), cuya longitud es √2. Sin normalizar, ese movimiento sería aproximadamente 41 % más rápido.
Luego se multiplica por la rapidez del personaje para que todas las direcciones tengan el mismo ritmo.
En comportamientos de persecución, el vector objetivo − posición cambia según la distancia. Al normalizarlo obtenemos solo la orientación; después elegimos una rapidez independiente de dónde esté el objetivo.
Una dirección normalizada permite aplicar una fuerza de intensidad controlada. Por ejemplo, una explosión puede empujar a cada objeto en la dirección desde el centro hasta él, multiplicada por la potencia elegida.
Un vector unitario con ángulo θ tiene las componentes (cos θ, sen θ). La trigonometría convierte así un ángulo directamente en una dirección de longitud uno.
Normalizar permite trabajar con direcciones puras. Al separar dirección y magnitud, el código de movimiento se vuelve predecible y las velocidades, fuerzas y orientaciones se controlan con precisión.
En el próximo tema usaremos vectores para expresar dirección y desplazamiento entre posiciones.