aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html626
1 files changed, 0 insertions, 626 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html b/contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html
deleted file mode 100644
index 498a2f8..0000000
--- a/contexts/data/lib/closure-library/closure/goog/vec/matrix4_test.html
+++ /dev/null
@@ -1,626 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2011 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.vec.Matrix4</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.vec.Float32Array');
- goog.require('goog.vec.Matrix4');
- goog.require('goog.testing.jsunit');
-</script>
-</head>
-<body>
-<script>
-
- function testConstructor() {
- var m0 = goog.vec.Matrix4.create();
- assertElementsEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], m0);
-
- var m1 = goog.vec.Matrix4.createFromArray(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m1);
-
- var m2 = goog.vec.Matrix4.clone(m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m2);
-
- var m3 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m3);
-
- var m4 = goog.vec.Matrix4.createIdentity();
- assertElementsEquals([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], m4);
- }
-
- function testSet() {
- var m0 = goog.vec.Matrix4.create();
- var m1 = goog.vec.Matrix4.createFromArray(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
- goog.vec.Matrix4.setFromArray(m0, m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
-
- goog.vec.Matrix4.setFromValues(
- m0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17);
- assertElementsEquals(
- [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], m0);
- }
-
- function testSetDiagonal() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setDiagonalValues(m0, 1, 2, 3, 4);
- assertElementsEquals(
- [1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4], m0);
-
- goog.vec.Matrix4.setDiagonal(m0, [4, 5, 6, 7]);
- assertElementsEquals(
- [4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 0, 0, 0, 0, 7], m0);
- }
-
- function testSetGetColumn() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setColumn(m0, 0, [1, 2, 3, 4]);
- goog.vec.Matrix4.setColumn(m0, 1, [5, 6, 7, 8]);
- goog.vec.Matrix4.setColumn(m0, 2, [9, 10, 11, 12]);
- goog.vec.Matrix4.setColumn(m0, 3, [13, 14, 15, 16]);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
-
- var v0 = [0, 0, 0, 0];
- goog.vec.Matrix4.getColumn(m0, 0, v0);
- assertElementsEquals([1, 2, 3, 4], v0);
- goog.vec.Matrix4.getColumn(m0, 1, v0);
- assertElementsEquals([5, 6, 7, 8], v0);
- goog.vec.Matrix4.getColumn(m0, 2, v0);
- assertElementsEquals([9, 10, 11, 12], v0);
- goog.vec.Matrix4.getColumn(m0, 3, v0);
- assertElementsEquals([13, 14, 15, 16], v0);
- }
-
- function testSetGetColumns() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setColumns(
- m0, [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
-
- var v0 = [0, 0, 0, 0], v1 = [0, 0, 0, 0];
- var v2 = [0, 0, 0, 0], v3 = [0, 0, 0, 0];
- goog.vec.Matrix4.getColumns(m0, v0, v1, v2, v3);
- assertElementsEquals([1, 2, 3, 4], v0);
- assertElementsEquals([5, 6, 7, 8], v1);
- assertElementsEquals([9, 10, 11, 12], v2);
- assertElementsEquals([13, 14, 15, 16], v3);
- }
-
- function testSetGetRow() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setRow(m0, 0, [1, 2, 3, 4]);
- goog.vec.Matrix4.setRow(m0, 1, [5, 6, 7, 8]);
- goog.vec.Matrix4.setRow(m0, 2, [9, 10, 11, 12]);
- goog.vec.Matrix4.setRow(m0, 3, [13, 14, 15, 16]);
- assertElementsEquals(
- [1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16], m0);
-
- var v0 = [0, 0, 0, 0];
- goog.vec.Matrix4.getRow(m0, 0, v0);
- assertElementsEquals([1, 2, 3, 4], v0);
- goog.vec.Matrix4.getRow(m0, 1, v0);
- assertElementsEquals([5, 6, 7, 8], v0);
- goog.vec.Matrix4.getRow(m0, 2, v0);
- assertElementsEquals([9, 10, 11, 12], v0);
- goog.vec.Matrix4.getRow(m0, 3, v0);
- assertElementsEquals([13, 14, 15, 16], v0);
- }
-
- function testSetGetRows() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setRows(
- m0, [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]);
- assertElementsEquals(
- [1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16], m0);
-
- var v0 = [0, 0, 0, 0], v1 = [0, 0, 0, 0];
- var v2 = [0, 0, 0, 0], v3 = [0, 0, 0, 0];
- goog.vec.Matrix4.getRows(m0, v0, v1, v2, v3);
- assertElementsEquals([1, 2, 3, 4], v0);
- assertElementsEquals([5, 6, 7, 8], v1);
- assertElementsEquals([9, 10, 11, 12], v2);
- assertElementsEquals([13, 14, 15, 16], v3);
- }
-
- function testSetRowMajorArray() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setFromRowMajorArray(
- m0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
- assertElementsEquals(
- [1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16], m0);
- }
-
- function testSetZero() {
- var m0 = goog.vec.Matrix4.createFromArray(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- goog.vec.Matrix4.setZero(m0);
- assertElementsEquals(
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], m0);
- }
-
- function testSetIdentity() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setIdentity(m0);
- assertElementsEquals(
- [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], m0);
- }
-
- function testSetGetElement() {
- var m0 = goog.vec.Matrix4.create();
- for (var r = 0; r < 4; r++) {
- for (var c = 0; c < 4; c++) {
- var value = c * 4 + r + 1;
- goog.vec.Matrix4.setElement(m0, r, c, value);
- assertEquals(value, goog.vec.Matrix4.getElement(m0, r, c));
- }
- }
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- }
-
- function testAdd() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.createFromValues(
- 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8);
- var m2 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.add(m0, m1, m2);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- assertElementsEquals(
- [9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8], m1);
- assertElementsEquals(
- [10, 12, 14, 16, 18, 20, 22, 24, 10, 12, 14, 16, 18, 20, 22, 24], m2);
-
- goog.vec.Matrix4.add(m0, m1, m0);
- assertElementsEquals(
- [9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8], m1);
- assertElementsEquals(
- [10, 12, 14, 16, 18, 20, 22, 24, 10, 12, 14, 16, 18, 20, 22, 24], m0);
- }
-
- function testSubtract() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.createFromValues(
- 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8);
- var m2 = goog.vec.Matrix4.create();
-
- goog.vec.Matrix4.subtract(m0, m1, m2);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- assertElementsEquals(
- [9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8], m1);
- assertElementsEquals(
- [-8, -8, -8, -8, -8, -8, -8, -8, 8, 8, 8, 8, 8, 8, 8, 8], m2);
-
- goog.vec.Matrix4.subtract(m1, m0, m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- assertElementsEquals(
- [8, 8, 8, 8, 8, 8, 8, 8, -8, -8, -8, -8, -8, -8, -8, -8], m1);
- }
-
- function testScale() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.create();
-
- goog.vec.Matrix4.scale(m0, 2, m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m0);
- assertElementsEquals(
- [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32], m1);
-
- goog.vec.Matrix4.scale(m0, 5, m0);
- assertElementsEquals(
- [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80], m0);
- }
-
- function testMultMat() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m2 = goog.vec.Matrix4.create();
-
- goog.vec.Matrix4.multMat(m0, m1, m2);
- assertElementsEquals(
- [90, 100, 110, 120, 202, 228, 254, 280,
- 314, 356, 398, 440, 426, 484, 542, 600], m2);
-
- goog.vec.Matrix4.scale(m1, 2, m1);
- goog.vec.Matrix4.multMat(m1, m0, m1);
- assertElementsEquals(
- [180, 200, 220, 240, 404, 456, 508, 560,
- 628, 712, 796, 880, 852, 968, 1084, 1200], m1);
- }
-
- function testTranspose() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.transpose(m0, m1);
- assertElementsEquals(
- [1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16], m1);
-
- goog.vec.Matrix4.transpose(m1, m1);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], m1);
- }
-
- function testDeterminant() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
- assertEquals(0, goog.vec.Matrix4.determinant(m0));
- assertElementsEquals(
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], m0);
-
- goog.vec.Matrix4.setFromValues(
- m0, 1, 2, 3, 4, 2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3);
- assertEquals(160, goog.vec.Matrix4.determinant(m0));
- assertElementsEquals(
- [1, 2, 3, 4, 2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3], m0);
- }
-
- function testInvert() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
- assertFalse(goog.vec.Matrix4.invert(m0, m0));
- assertElementsEquals(
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], m0);
-
- goog.vec.Matrix4.setFromValues(
- m0, 1, 2, 3, 4, 2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3);
- assertTrue(goog.vec.Matrix4.invert(m0, m0));
- assertElementsRoughlyEqual(
- [-0.225, 0.025, 0.025, 0.275, 0.025, 0.025, 0.275, -0.225,
- 0.025, 0.275, -0.225, 0.025, 0.275, -0.225, 0.025, 0.025], m0,
- goog.vec.EPSILON);
-
- goog.vec.Matrix4.makeScale(m0, .01, .01, .01);
- assertTrue(goog.vec.Matrix4.invert(m0, m0));
- var m1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeScale(m1, 100, 100, 100);
- assertElementsEquals(m1, m0);
- }
-
- function testEquals() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var m1 = goog.vec.Matrix4.clone(m0);
- assertTrue(goog.vec.Matrix4.equals(m0, m1));
- assertTrue(goog.vec.Matrix4.equals(m1, m0));
- for (var i = 0; i < 16; i++) {
- m1[i] = 18;
- assertFalse(goog.vec.Matrix4.equals(m0, m1));
- assertFalse(goog.vec.Matrix4.equals(m1, m0));
- m1[i] = i + 1;
- }
- }
-
- function testMultVec3() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var v0 = [1, 2, 3];
- var v1 = [0, 0, 0];
-
- goog.vec.Matrix4.multVec3(m0, v0, v1);
- assertElementsEquals([1, 2, 3], v0);
- assertElementsEquals([51, 58, 65], v1);
-
- goog.vec.Matrix4.multVec3(m0, v0, v0);
- assertElementsEquals([51, 58, 65], v0);
-
- v0 = [1, 2, 3];
- goog.vec.Matrix4.multVec3ToArray(m0, v0, v0);
- assertElementsEquals([51, 58, 65], v0);
- }
-
- function testMultVec3NoTranslate() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var v0 = [1, 2, 3];
- var v1 = [0, 0, 0];
-
- goog.vec.Matrix4.multVec3NoTranslate(m0, v0, v1);
- assertElementsEquals([1, 2, 3], v0);
- assertElementsEquals([38, 44, 50], v1);
-
- goog.vec.Matrix4.multVec3NoTranslate(m0, v0, v0);
- assertElementsEquals([38, 44, 50], v0);
- }
-
- function testMultVec3Projective() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var v0 = [1, 2, 3];
- var v1 = [0, 0, 0];
- var invw = 1 / 72;
-
- goog.vec.Matrix4.multVec3Projective(m0, v0, v1);
- assertElementsEquals([1, 2, 3], v0);
- assertElementsEquals(
- [51 * invw, 58 * invw, 65 * invw], v1);
-
- goog.vec.Matrix4.multVec3Projective(m0, v0, v0);
- assertElementsEquals(
- [51 * invw, 58 * invw, 65 * invw], v0);
- }
-
- function testMultVec4() {
- var m0 = goog.vec.Matrix4.createFromValues(
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
- var v0 = [1, 2, 3, 4];
- var v1 = [0, 0, 0, 0];
-
- goog.vec.Matrix4.multVec4(m0, v0, v1);
- assertElementsEquals([90, 100, 110, 120], v1);
- goog.vec.Matrix4.multVec4(m0, v0, v0);
- assertElementsEquals([90, 100, 110, 120], v0);
-
- var v0 = [1, 2, 3, 4];
- goog.vec.Matrix4.multVec4ToArray(m0, v0, v0);
- assertElementsEquals([90, 100, 110, 120], v0);
- }
-
- function testSetValues() {
- var a0 = goog.vec.Matrix4.create();
- assertElementsEquals(
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], a0);
- a0 = goog.vec.Matrix4.createFromArray(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], a0);
-
- var a1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.setDiagonalValues(a1, 1, 2, 3, 4);
- assertElementsEquals(
- [1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4], a1);
-
- goog.vec.Matrix4.setColumnValues(a1, 0, 2, 3, 4, 5);
- goog.vec.Matrix4.setColumnValues(a1, 1, 6, 7, 8, 9);
- goog.vec.Matrix4.setColumnValues(a1, 2, 10, 11, 12, 13);
- goog.vec.Matrix4.setColumnValues(a1, 3, 14, 15, 16, 1);
- assertElementsEquals(
- [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1], a1);
-
- goog.vec.Matrix4.setRowValues(a1, 0, 1, 5, 9, 13);
- goog.vec.Matrix4.setRowValues(a1, 1, 2, 6, 10, 14);
- goog.vec.Matrix4.setRowValues(a1, 2, 3, 7, 11, 15);
- goog.vec.Matrix4.setRowValues(a1, 3, 4, 8, 12, 16);
- assertElementsEquals(
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], a1);
- }
-
- function testMakeTranslate() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeTranslate(m0, 3, 4, 5);
- assertElementsEquals(
- [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3, 4, 5, 1], m0);
- }
-
- function testMakeScale() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeScale(m0, 3, 4, 5);
- assertElementsEquals(
- [3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1], m0);
- }
-
- function testMakeRotate() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeAxisAngleRotate(m0, Math.PI / 2, 0, 0, 1);
- assertElementsRoughlyEqual(
- [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
- m0, goog.vec.EPSILON);
-
- var m1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeAxisAngleRotate(m1, -Math.PI / 4, 0, 0, 1);
- goog.vec.Matrix4.multMat(m0, m1, m1);
- assertElementsRoughlyEqual(
- [0.7071068, 0.7071068, 0, 0,
- -0.7071068, 0.7071068, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1],
- m1, goog.vec.EPSILON);
- }
-
- function testApplyTranslate() {
- var m0 = goog.vec.Matrix4.createIdentity();
- goog.vec.Matrix4.applyTranslate(m0, 3, 4, 5);
- assertElementsEquals(
- [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3, 4, 5, 1], m0);
-
- goog.vec.Matrix4.setFromValues(
- m0, 1, 2, 3, 4, 2, 3, 4, 1, 3, 4, 1, 2, 4, 1, 2, 3);
-
- var m1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeTranslate(m1, 5, 6, 7);
- var m2 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.multMat(m0, m1, m2);
- goog.vec.Matrix4.applyTranslate(m0, 5, 6, 7);
- assertElementsEquals(m2, m0);
- }
-
- function testApplyScale() {
- var m0 = goog.vec.Matrix4.createIdentity();
- goog.vec.Matrix4.applyScale(m0, 3, 4, 5);
- assertElementsEquals([3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1], m0);
- }
-
- function testApplyRotate() {
- var m0 = goog.vec.Matrix4.createIdentity();
- goog.vec.Matrix4.applyRotate(m0, Math.PI / 2, 0, 0, 1);
- assertElementsRoughlyEqual(
- [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
- m0, goog.vec.EPSILON);
-
- goog.vec.Matrix4.applyRotate(m0, -Math.PI / 4, 0, 0, 1);
- assertElementsRoughlyEqual(
- [0.7071068, 0.7071068, 0, 0,
- -0.7071068, 0.7071068, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1],
- m0, goog.vec.EPSILON);
- }
-
- function testMakeFrustum() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeFrustum(m0, -1, 2, -2, 1, .1, 1.1);
- assertElementsRoughlyEqual(
- [0.06666666, 0, 0, 0,
- 0, 0.06666666, 0, 0,
- 0.33333333, -0.33333333, -1.2, -1,
- 0, 0, -0.22, 0], m0, goog.vec.EPSILON);
- }
-
- function testMakePerspective() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makePerspective(m0, 90 * Math.PI / 180, 2, 0.1, 1.1);
- assertElementsRoughlyEqual(
- [0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1.2, -1, 0, 0, -0.22, 0],
- m0, goog.vec.EPSILON);
- }
-
- function testMakeOrtho() {
- var m0 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.makeOrtho(m0, -1, 2, -2, 1, 0.1, 1.1);
- assertElementsRoughlyEqual(
- [0.6666666, 0, 0, 0,
- 0, 0.6666666, 0, 0,
- 0, 0, -2, 0,
- -0.333333, 0.3333333, -1.2, 1], m0, goog.vec.EPSILON);
-
- }
-
- function testEulerZXZ() {
- var m0 = goog.vec.Matrix4.create();
- var roll = Math.random() * 2 * Math.PI;
- var tilt = -Math.random() * Math.PI / 2;
- var pan = Math.random() * 2 * Math.PI;
-
- goog.vec.Matrix4.makeAxisAngleRotate(m0, roll, 0, 0, 1);
- goog.vec.Matrix4.applyRotate(m0, tilt, 1, 0, 0);
- goog.vec.Matrix4.applyRotate(m0, pan, 0, 0, 1);
-
- var m1 = goog.vec.Matrix4.create();
- goog.vec.Matrix4.fromEulerZXZ(m1, roll, tilt, pan);
- assertElementsRoughlyEqual(m0, m1, goog.vec.EPSILON);
-
-
- var euler = [0, 0, 0];
- goog.vec.Matrix4.toEulerZXZ(m0, euler);
- // Bring them to their range.
- euler[0] = (euler[0] + Math.PI * 2) % (Math.PI * 2);
- euler[1] = (euler[1] - Math.PI * 2) % (Math.PI * 2);
- euler[2] = (euler[2] + Math.PI * 2) % (Math.PI * 2);
- assertElementsRoughlyEqual([roll, tilt, pan], euler, goog.vec.EPSILON);
- }
-
- function testEulerZXZExtrema() {
- var m0 = goog.vec.Matrix4.createFromArray(
- [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
- var m1 = goog.vec.Matrix4.createFromArray(
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
-
- var euler = [0, 0, 0];
- goog.vec.Matrix4.toEulerZXZ(m0, euler);
- assertElementsRoughlyEqual([0, -Math.PI / 2, 0], euler, goog.vec.EPSILON);
- goog.vec.Matrix4.fromEulerZXZ(m1, euler[0], euler[1], euler[2]);
- assertElementsRoughlyEqual(m0, m1, goog.vec.EPSILON);
- }
-
- function testLookAt() {
- var viewMatrix = goog.vec.Matrix4.create();
- goog.vec.Matrix4.lookAt(
- viewMatrix, [0, 0, 0], [1, 0, 0], [0, 1, 0]);
- assertElementsRoughlyEqual(
- [0, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1], viewMatrix,
- goog.vec.EPSILON);
- }
-
- function testToLookAt() {
- // This test does not use the default precision goog.vec.EPSILON due to
- // precision issues in some browsers leading to flaky tests.
- var EPSILON = 1e-4;
-
- var eyeExp = [0, 0, 0];
- var fwdExp = [1, 0, 0];
- var upExp = [0, 1, 0];
-
- var centerExp = [0, 0, 0];
- goog.vec.Vec3.add(eyeExp, fwdExp, centerExp);
-
- var view = goog.vec.Matrix4.create();
- goog.vec.Matrix4.lookAt(view, eyeExp, centerExp, upExp);
-
- var eyeRes = [0, 0, 0];
- var fwdRes = [0, 0, 0];
- var upRes = [0, 0, 0];
- goog.vec.Matrix4.toLookAt(view, eyeRes, fwdRes, upRes);
- assertElementsRoughlyEqual(eyeExp, eyeRes, EPSILON);
- assertElementsRoughlyEqual(fwdExp, fwdRes, EPSILON);
- assertElementsRoughlyEqual(upExp, upRes, EPSILON);
- }
-
- function testLookAtDecomposition() {
- // This test does not use the default precision goog.vec.EPSILON due to
- // precision issues in some browsers, which leads to flaky tests.
- var EPSILON = 1e-4;
-
- var viewExp = goog.vec.Matrix4.create();
- var viewRes = goog.vec.Matrix4.create();
- var tmp = goog.vec.Matrix4.create();
-
- // Get a valid set of random vectors eye, forward, up by decomposing
- // a random matrix into a set of lookAt vectors.
- for (var i = 0; i < tmp.length; i++)
- tmp[i] = Math.random();
- var eyeExp = [0, 0, 0];
- var fwdExp = [0, 0, 0];
- var upExp = [0, 0, 0];
- var centerExp = [0, 0, 0];
- // Project the random matrix into a real modelview matrix.
- goog.vec.Matrix4.toLookAt(tmp, eyeExp, fwdExp, upExp);
- goog.vec.Vec3.add(eyeExp, fwdExp, centerExp);
-
- // Compute the expected modelview matrix from a set of valid random vectors.
- goog.vec.Matrix4.lookAt(viewExp, eyeExp, centerExp, upExp);
-
- var eyeRes = [0, 0, 0];
- var fwdRes = [0, 0, 0];
- var upRes = [0, 0, 0];
- var centerRes = [0, 0, 0];
- goog.vec.Matrix4.toLookAt(viewExp, eyeRes, fwdRes, upRes);
- goog.vec.Vec3.add(eyeRes, fwdRes, centerRes);
-
- goog.vec.Matrix4.lookAt(viewRes, eyeRes, centerRes, upRes);
-
- assertElementsRoughlyEqual(eyeExp, eyeRes, EPSILON);
- assertElementsRoughlyEqual(fwdExp, fwdRes, EPSILON);
- assertElementsRoughlyEqual(upExp, upRes, EPSILON);
- assertElementsRoughlyEqual(viewExp, viewRes, EPSILON);
- }
-
-</script>
-</body>