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

Más matemáticas vectoriales

Sumar fue solo el primer paso. Hay muchas operaciones matemáticas que se usan comúnmente con vectores. A continuación hay una lista exhaustiva de las operaciones disponibles como funciones en el objeto PVector de ProcessingJS. Vamos a revisar algunas de las más importantes ahora. Cuando nuestros ejemplos se vuelvan más complicados en las siguientes secciones, seguiremos revelando los detalles de más funciones.
  • add(): sumar vectores
  • sub(): restar vectores
  • mult(): escalar el vector con una multiplicación
  • div(): escalar el vector con una división
  • mag(): calcular la magnitud de un vector
  • normalize(): normalizar el vector a una longitud unitaria de 1
  • limit(): limitar la magnitud de un vector
  • heading2D(): el rumbo 2D de un vector expresado como un ángulo
  • dist(): la distancia euclidiana entre dos vectores (considerados como puntos)
  • angleBetween(): encontrar el ángulo entre dos vectores
  • dot(): el producto punto de dos vectores
  • cross(): el product cruz de dos vectores (solo relevante en tres dimensiones)
Ya que cubrimos la suma, empecemos con la resta. Esta no es tan grave; ¡solo toma el signo de más y reemplázalo con uno de menos!

Resta de vectores

w, with, vector, on top, equals, u, with, vector, on top, minus, v, with, vector, on top
se puede escribir como:
start text, w, end text, start subscript, x, end subscript, equals, start text, u, end text, start subscript, x, end subscript, minus, start text, v, end text, start subscript, x, end subscript
start text, w, end text, start subscript, y, end subscript, equals, start text, u, end text, start subscript, y, end subscript, minus, start text, v, end text, start subscript, y, end subscript
y entonces la función dentro de PVector se ve así:
PVector.prototype.sub = function(vector2) {
    this.x = this.x - vector2.x;
    this.y = this.y - vector2.y;
  };
El siguiente ejemplo muestra la resta de vectores, calcula la diferencia entre dos puntos: la ubicación del ratón y el centro de la ventana.
Propiedades numéricas básicas con vectores
Cuando hacemos matemáticas con los números reales, se cumplen estas reglas básicas:
La regla de conmutatividad: 3, plus, 2, equals, 2, plus, 3
La regla de asociatividad: left parenthesis, 3, plus, 2, right parenthesis, plus, 1, equals, 3, plus, left parenthesis, 2, plus, 1, right parenthesis
Esas mismas reglas se cumplen al hacer matemáticas con vectores:
La regla de conmutatividad: u, with, vector, on top, plus, v, with, vector, on top, equals, v, with, vector, on top, plus, u, with, vector, on top
La regla de asociatividad: u, with, vector, on top, plus, left parenthesis, v, with, vector, on top, plus, w, with, vector, on top, right parenthesis, equals, left parenthesis, u, with, vector, on top, plus, v, with, vector, on top, right parenthesis, plus, w, with, vector, on top

Multiplicación de vectores

Pasando a la multiplicación, tenemos que pensar un poco diferente. Cuando hablamos de multiplicar un vector, normalmente nos referimos a escalar un vector. Si quisiéramos escalar un vector al doble de su tamaño o a una tercera parte de su tamaño (sin cambiar la dirección), diríamos: “Multiplica el vector por 2” o “Multiplica el vector por 1/3.” Observa que estamos multiplicando el vector por un escalar, un solo número, no por otro vector.
Para escalar un vector, multiplicamos cada componente (x y y) por un escalar.
w, with, vector, on top, equals, u, with, vector, on top, times, n
Se puede escribir como:
wx=uxnwy=uyn w_x = u_x * n \\ w_y = u_y * n
Escalar un vector
Veamos un ejemplo con notación de vectores.
u=(3,7)n=3w=unwx=33wy=73w=(9,21) \vec{u} = (-3, 7) \\ n = 3 \\ \vec{w} = \vec{u} * n \\ w_x = -3 * 3 \\ w_y = 7 * 3 \\ \vec{w} = (-9, 21)
Por lo tanto, la función dentro del objeto PVector se escribe así:
PVector.prototype.mult = function(n) {
   this.x = this.x * n;
   this.y = this.y * n;
}
Y usar mult en el código es tan sencillo como:
var u = new PVector(-3,7);
// Este PVector ahora mide el triple y es igual a (-9,21).
u.mult(3);
Aquí está el ejemplo de antes, pero multiplicamos el vector por 0.5 cada vez, de manera que ahora esté escalado a la mitad:
En lugar de multiplicar por 0.5 arriba, también pudimos haber dividido entre 2. La división funciona igual que la multiplicación: simplemente reemplazamos el signo de multiplicación (asterisco) con el signo de división (diagonal).
Así es como se implementa internamente el método div:
PVector.prototype.div = function(n) {
   this.x = this.x / n;
   this.y = this.y / n;
}
Y así es como lo podemos usar en el código:
var u = new PVector(8, -4);
u.div(2);

Más propiedades numéricas con vectores

Al igual que con la suma, las reglas algebraicas básicas de la multiplicación se pueden aplicar a los vectores.
La regla asociativa: left parenthesis, n, times, m, right parenthesis, times, v, with, vector, on top, equals, n, times, left parenthesis, m, times, v, with, vector, on top, right parenthesis
La regla distributiva con 2 escalares y 1 vector: left parenthesis, n, plus, m, right parenthesis, times, v, with, vector, on top, equals, n, times, v, with, vector, on top, plus, m, times, v, with, vector, on top
La regla distributiva con 2 vectores y 1 escalar: left parenthesis, u, with, vector, on top, plus, v, with, vector, on top, right parenthesis, times, n, equals, u, with, vector, on top, times, n, plus, v, with, vector, on top, times, n
¿Quieres practicar tus matemáticas vectoriales? Puedes aprender más aquí en Khan Academy, en nuestra unidad de Álgebra lineal: vectores.

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 male robot hal style para el usuario diego bustillo
    aqui esta la respuesta del siguiente desafio (si es que alguien llega hasta aqui) a cambio pido un voto a favor.
    var v = new PVector(50, 75);

    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(4);
    line(0, 400, v.x, 400-v.y);
    };

    drawSaber();

    keyPressed = function (){
    if (keyCode === 38){
    v.mult(2);
    } else if (keyCode === 40){
    v.div(2);
    }
    drawSaber();
    };
    buen dia
    (22 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.