Deo zbornika Teorija razvoja igara

Transformacione matrice

Matrica je niz brojeva, poređanih u redove i kolone. Ako matrica ima isti broj vrsta i kolona, onda je kvadratna. Tipična 2x2 matrica izgleda ovako:

a c
b d

Transformacione matrice opisuju linearne transformacije. One opisuju kako se predmeti pomeraju, rotiraju, skaliraju, reflektuju ili na drugi način preobražuju. Osnovne matrice preobrazbe su:

  • translacija (pomeranje)
  • skaliranje (preveličanje)
  • rotacija (okretanje)
  • refleksija (odraz)
  • struganje (shearing)
  • identitet

Da bismo primenili neku transformaciju, biramo željenu matricu i množimo je sa originalnim vektorom da bismo dobili nov, transformisan vektor:

transformisan vektor = vektor x transformaciona matrica

Transformacione matrice omogućuju lako kombinovanje transformacija množenjem matrica.

Primer upotrebe

Primer osnovnih transformacija pomoću matrica u Three.js-u:

const matrix = new THREE.Matrix4()

function translate(mesh, param) {
  matrix.set(
    1, 0, 0, param.x,
    0, 1, 0, param.y,
    0, 0, 1, param.z,
    0, 0, 0, 1
  )
  mesh.applyMatrix4(matrix)
}

function scale(mesh, param) {
  matrix.set(
    param.x, 0, 0, 0,
    0, param.y, 0, 0,
    0, 0, param.z, 0,
    0, 0, 0, 1
  )
  mesh.geometry.applyMatrix4(matrix)
}

function rotateY(mesh, param) {
  const cos = Math.cos(param.theta)
  const sin = Math.sin(param.theta)
  matrix.set(
    cos, 0, sin, 0,
    0, 1, 0, 0,
    -sin, 0, cos, 0,
    0, 0, 0, 1
  )
  mesh.geometry.applyMatrix4(matrix)
}