Función p5.js applyMatrix()

La función applyMatrix() en p5.js se usa para multiplicar la array dada como los parámetros con la array actual. Esto se puede utilizar para realizar operaciones de traslación, escala, corte y rotación al mismo tiempo. Esta es una operación poderosa y se puede usar para manipular fácilmente objetos en la escena.

Sintaxis:

applyMatrix(a, b, c, d, e, f)

Parámetros: este método tiene seis parámetros, como se mencionó anteriormente y se describe a continuación:

  • a: Es un número que define la array de 2×3 a multiplicar.
  • b: Es un número que define la array de 2×3 a multiplicar.
  • c: Es un número que define la array de 2×3 a multiplicar.
  • d: Es un número que define la array de 2×3 a multiplicar.
  • e: Es un número que define la array de 2×3 a multiplicar.
  • f: Es un número que define la array de 2×3 a multiplicar.

Los siguientes ejemplos demuestran la función applyMatrix() en p5.js:

Ejemplo 1: En este ejemplo, la array se usa para rotar un rectángulo en algún ángulo.

Javascript

function setup() {
  createCanvas(800, 600);
}
  
function draw() {
  
  let step = frameCount % 50;
  
  // Calculate the angle and the 
  // sin and cos values
  let angle = map(step, 10, 60, 0, PI);
  let cos_a = cos(angle);
  let sin_a = sin(angle);
  
  // Set the background colour
  background(200);
  
  // Translate the elements
  translate(500, 50);
  
  // Use applyMatrix() to multiply using
  // the given values
  applyMatrix(cos_a, sin_a,
                -sin_a, -cos_a,
              0, 0);
  
  // Set the colour to fill the graphics
  fill("red");
  
  // Set the shape
  rect(50, 50, 300, 200, 30);
}

Producción:

Ejemplo 2: En este ejemplo, la array se usa para traducir las imágenes 2D.

Javascript

function setup() {
    
  // Create canvas
  createCanvas(800, 600);
    
  // Set the frame rate
  frameRate(20);
}
  
function draw() {
    
  let step1 = frameCount % 15;
  let step2 = frameCount % 50;
  
  fill('lightgreen');
  background(200);
    
  // Apply matrix transform equivalent
  // to translate(x, y)
  applyMatrix(1, 0, 0, 1, 300 + step1, 50);
    
  // Set a shape to be used
  ellipse(56, 46, 185, 185);
    
  fill('red');
    
  // Apply matrix transform equivalent
  // to translate(x, y)
  applyMatrix(1, 0, 0, 1, 100 + step2, 50);
    
  // Set the shape to be used
  rect(30, 20, 50, 50);
}

Producción:

Ejemplo 3: En este ejemplo, la array se usa para escalar las imágenes 2D.

Javascript

function setup() {
  // Create canvas
  createCanvas(800, 600, WEBGL);
  
  // Set the frame rate
  frameRate(20);
}
  
function draw() {
  let step1 = frameCount % 10;
  let step2 = frameCount % 20;
  
  fill("lightgreen");
  background(200);
  
  // Apply matrix transformation 
  // equivalent to translate(x, y)
  applyMatrix(1 / step1, 0, 0, 1 / step1, 0, 0);
  
  // Set the shape to be used
  ellipse(185, 185, 185, 185);
  
  fill("red");
  
  // Apply matrix transformation 
  // equivalent to scale(x, y)
  applyMatrix(1 / step2, 0, 0, 1 / step2, 0, 1 / step2);
  
  // Set the shape to be used
  rect(30, 20, 100, 100);
}

Producción:

Ejemplo 4: En este ejemplo, la array se usa para rotar el gráfico.

Javascript

function setup() {
  createCanvas(400, 400, WEBGL);
  noFill();
}
  
function draw() {
  background(200);
  
  // Rotate the box
  rotateX(PI / 2);
  rotateY(PI / 8);
  
  stroke(153);
  box(35);
  
  let rad = millis() / 500;
  
  // Set rotation angle
  let ct = cos(rad);
  let st = sin(rad);
  
  // Apply matrix for rotation 
  applyMatrix(  ct, 0.0,  st,  0.0,
               0.0, 1.0, 0.0,  0.0,
               -st, 0.0,  ct,  0.0,
               0.0, 0.0, 0.0,  1.0);
  
  stroke(255);
  box(100);
}

Producción:

Publicación traducida automáticamente

Artículo escrito por _sh_pallavi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *