@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
28 lines (24 loc) • 769 B
JavaScript
import { v3_length } from "./v3_length.js";
/**
* Perform rotation on a direction vector using 3x3 portion of a 4x4 matrix
* @param {number[]|Float32Array} output
* @param {number} output_offset
* @param {number} x
* @param {number} y
* @param {number} z
* @param {number[]|Float32Array} m4
*/
export function v3_matrix4_rotate(
output, output_offset,
x, y, z,
m4
) {
const _x = m4[0] * x + m4[4] * y + m4[8] * z;
const _y = m4[1] * x + m4[5] * y + m4[9] * z;
const _z = m4[2] * x + m4[6] * y + m4[10] * z;
// perform normalization
const norm = 1 / v3_length(_x, _y, _z);
output[output_offset] = _x * norm;
output[output_offset + 1] = _y * norm;
output[output_offset + 2] = _z * norm;
}