UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

43 lines (35 loc) 1.31 kB
import { assert } from "../../../assert.js"; import { plane3_matrix4_project } from "../plane/plane3_matrix4_project.js"; /** * Perform affine transform on a given frustum * @param {number[]|Float32Array|Float64Array} output * @param {number} output_offset * @param {number[]|Float32Array|Float64Array} input * @param {number} input_offset * @param {number[]|Float32Array|Float64Array} matrix4 */ export function frustum_matrix4_project( output, output_offset, input, input_offset, matrix4 ) { assert.isArrayLike(output, 'output'); assert.isNonNegativeInteger(output_offset, "output_offset"); assert.isArrayLike(input, 'input'); assert.greaterThanOrEqual(input.length, input_offset + 24, 'input too small'); assert.isNonNegativeInteger(input_offset, "input_offset"); assert.isArrayLike(matrix4, 'matrix4'); for (let plane_index = 0; plane_index < 6; plane_index++) { const frustum_offset = plane_index * 4; const i = input_offset + frustum_offset; const o = output_offset + frustum_offset; plane3_matrix4_project( output, o, matrix4, input[i], input[i + 1], input[i + 2], input[i + 3], ); } }