@jscad/modeling
Version:
Constructive Solid Geometry (CSG) Library for JSCAD
33 lines (23 loc) • 1 kB
JavaScript
const test = require('ava')
const { TAU } = require('../constants')
const vec3 = require('../vec3/index')
const { create, invert, fromTranslation, fromXRotation } = require('./index')
const { compareVectors } = require('../../../test/helpers/index')
test('mat4: invert() translate ', (t) => {
const matrix = fromTranslation(create(), [10, 10, 0])
const matrixInv = invert(create(), matrix)
const vec1 = [0, 0, 0]
const vec2 = vec3.transform([0, 0, 0], vec1, matrix)
t.true(compareVectors(vec2, [10, 10, 0]))
const vec2back = vec3.transform([0, 0, 0], vec2, matrixInv)
t.true(compareVectors(vec2back, vec1))
})
test('mat4: invert() rotate ', (t) => {
const matrix = fromXRotation(create(), TAU / 4)
const matrixInv = invert(create(), matrix)
const vec1 = [10, 10, 10]
const vec2 = vec3.transform([0, 0, 0], vec1, matrix)
t.true(compareVectors(vec2, [10, -10, 10]))
const vec2back = vec3.transform([0, 0, 0], vec2, matrixInv)
t.true(compareVectors(vec2back, vec1))
})