If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Magnitud de un vector y normalización

Como acabamos de ver, la multiplicación y división son medios por los cuales se puede cambiar la longitud del vector sin afectar la dirección. Tal vez te estés preguntando: “Bien, ¿entonces cómo sé cuál es la longitud de un vector? Conozco las componentes (x y y), pero realmente, ¿qué tan larga (en pixeles) es la flecha?” Entender cómo calcular la longitud (también conocida como magnitud) de un vector es increíblemente útil e importante.
Figura 1.10: La longitud o “magnitud” de un vector v  comúnmente se escribe como: ||v||
Observa en el diagrama anterior cómo el vector, dibujado como una flecha y sus dos componentes (x y y), forma un triángulo rectángulo. Los catetos son las componentes y la hipotenusa es la propia flecha. Somos muy afortunados de tener este triángulo rectángulo, porque hubo una vez un matemático griego llamado Pitágoras que desarrolló una fórmula encantadora para describir la relación entre los catetos y la hipotenusa de un triángulo rectángulo.
El teorema de Pitágoras es: a cuadrada más b cuadrada es igual a c cuadrada.
Equipados con esta fórmula, ahora podemos calcular la magnitud de v de la siguiente manera:
||v||=vxvx+vyvy
Entonces el código para implementarla en el objeto PVector sería:
PVector.prototype.mag = function() {
    return sqrt(this.x*this.x + this.y*this.y);
};
El siguiente ejemplo visualiza la magnitud de un vector con una barra en la parte superior:
Calcular la magnitud de un vector es solo el comienzo. La función de magnitud abre la puerta a muchas posibilidades, la primera de las cuales es la normalización. Normalizar se refiere al proceso de hacer algo “estándar” o, bueno, “normal”. En el caso de vectores, supongamos por ahora que un vector estándar tiene longitud 1. Por lo tanto, normalizar un vector es tomar un vector de cualquier longitud y, mientras sigue apuntando en la misma dirección, cambiar su longitud a 1, convirtiéndolo en lo que se conoce como un vector unitario.
Es útil tener a la mano el vector unitario, ya que describe la dirección de un vector independientemente de su longitud. Veremos que esto se vuelve práctico una vez que empecemos a trabajar con fuerzas en la siguiente sección.
Dado cualquier vector u, su vector unitario (que se escribe como u^) se calcula de la siguiente manera:
u^=u||u||
En otras palabras, para normalizar un vector, simplemente divide cada componente entre su magnitud. Esto es muy intuitivo. Digamos que un vector tiene longitud 5. Bueno, 5 dividido entre 5 es 1. Así que, al observar nuestro triángulo rectángulo, necesitamos reducir el tamaño de la hipotenusa al dividir entre 5. En ese proceso los catetos se encogen, también divididos entre 5.
Por lo tanto, en el objeto PVector escribimos nuestra función de normalización de la siguiente manera:
PVector.prototype.normalize = function() {
  var m = this.mag();
  this.div(m);
};
Por supuesto, hay un pequeño problema. ¿Qué pasa si la magnitud del vector es 0? ¡No podemos dividir entre 0! Una revisión rápida de errores corregirá eso:
PVector.prototype.normalize = function() {
  var m = this.mag();
  if (m > 0) {
    this.div(m);
  }
};
Aquí hay un programa que siempre normaliza el vector que representa la posición del ratón desde el centro (y luego lo multiplica para que lo podamos ver, ¡ya que 1 pixel es muy pequeño!):

Este curso de "Simulaciones Naturales" es un derivado de "La Naturaleza del Código" por Daniel Shiffman, usado bajo una Licencia Creative Commons Reconocimiento-NoComercial 3.0 Unported.

¿Quieres unirte a la conversación?

  • Avatar hopper cool style para el usuario azulito1
    que pongo en el dist del paso
    (2 votos)
    Avatar Default Khan Academy avatar para el usuario
  • Avatar starky ultimate style para el usuario Andres Messina
    Esto es muy difícil! Por favor, expliquen de forma mas fàcil. no creo que nadia haya sobrevivido hasta aquí para contarlo!
    (2 votos)
    Avatar Default Khan Academy avatar para el usuario
  • Avatar blobby green style para el usuario die.ar.90
    var drawSaber = function() {
    background(0, 0, 0);
    // glow
    strokeWeight(8);
    stroke(107, 206, 219, 150);
    line(0, 400, v.x, 400-v.y);
    // blade
    stroke(255, 255, 255);
    strokeWeight(5);
    line(0, 400, v.x, 400-v.y);
    };

    keyPressed = function() {
    if (keyCode === 38) {
    v.mult(2);
    } else if (keyCode === 40) {
    v.div(2);
    }
    drawSaber();
    };

    drawSaber();
    (0 votos)
    Avatar Default Khan Academy avatar para el usuario
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.