aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html195
1 files changed, 0 insertions, 195 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html b/contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html
deleted file mode 100644
index 4ca7600..0000000
--- a/contexts/data/lib/closure-library/closure/goog/vec/quaternion_test.html
+++ /dev/null
@@ -1,195 +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.Quaternion</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.vec.Float32Array');
- goog.require('goog.vec.Mat4');
- goog.require('goog.vec.Quaternion');
- goog.require('goog.vec.Vec3');
- goog.require('goog.vec.Vec4');
- goog.require('goog.testing.jsunit');
-</script>
-</head>
-<body>
-<script>
-
- function testConjugate() {
- var q0 = goog.vec.Quaternion.createFloat32FromValues(1, 2, 3, 4);
- var q1 = goog.vec.Quaternion.createFloat32();
-
- goog.vec.Quaternion.conjugate(q0, q1);
- assertElementsEquals([1, 2, 3, 4], q0);
- assertElementsEquals([-1, -2, -3, 4], q1);
-
- goog.vec.Quaternion.conjugate(q1, q1);
- assertElementsEquals([1, 2, 3, 4], q1);
- }
-
- function testConcat() {
- var q0 = goog.vec.Quaternion.createFloat32FromValues(1, 2, 3, 4);
- var q1 = goog.vec.Quaternion.createFloat32FromValues(2, 3, 4, 5);
- var q2 = goog.vec.Quaternion.createFloat32();
- goog.vec.Quaternion.concat(q0, q1, q2);
- assertElementsEquals([12, 24, 30, 0], q2);
-
- goog.vec.Quaternion.concat(q0, q1, q0);
- assertElementsEquals([12, 24, 30, 0], q0);
- }
-
- function testSlerp() {
- var q0 = goog.vec.Quaternion.createFloat32FromValues(1, 2, 3, 4);
- var q1 = goog.vec.Quaternion.createFloat32FromValues(5, -6, 7, -8);
- var q2 = goog.vec.Quaternion.createFloat32();
-
- goog.vec.Quaternion.slerp(q0, q1, 0, q2);
- assertElementsEquals([5, -6, 7, -8], q2);
-
- goog.vec.Quaternion.normalize(q0, q0);
- goog.vec.Quaternion.normalize(q1, q1);
-
- goog.vec.Quaternion.slerp(q0, q0, .5, q2);
- assertElementsEquals(q0, q2);
-
- goog.vec.Quaternion.slerp(q0, q1, 0, q2);
- assertElementsEquals(q0, q2);
-
- goog.vec.Quaternion.slerp(q0, q1, 1, q2);
- if (q1[3] * q2[3] < 0) {
- goog.vec.Quaternion.negate(q2, q2);
- }
- assertElementsEquals(q1, q2);
-
- goog.vec.Quaternion.slerp(q0, q1, .3, q2);
- assertElementsRoughlyEqual(
- [-0.000501537327541, 0.4817612034640, 0.2398775270769, 0.842831337398],
- q2, goog.vec.EPSILON);
-
- goog.vec.Quaternion.slerp(q0, q1, .5, q2);
- assertElementsRoughlyEqual(
- [-0.1243045421171, 0.51879732466, 0.0107895780990, 0.845743047108],
- q2, goog.vec.EPSILON);
-
- goog.vec.Quaternion.slerp(q0, q1, .8, q0);
- assertElementsRoughlyEqual(
- [-0.291353561485, 0.506925588797, -0.3292443285721, 0.741442999653],
- q0, goog.vec.EPSILON);
- }
-
- function testToRotMatrix() {
- var q0 = goog.vec.Quaternion.createFloat32FromValues(
- 0.22094256606638, 0.53340203646030,
- 0.64777022739548, 0.497051689967954);
- var m0 = goog.vec.Mat4.createFloat32();
- goog.vec.Quaternion.toRotationMatrix4(q0, m0);
-
- assertElementsRoughlyEqual(
- [-0.408248, 0.8796528, -0.244016935, 0,
- -0.4082482, 0.06315623, 0.9106836, 0,
- 0.8164965, 0.47140452, 0.3333333, 0,
- 0, 0, 0, 1],
- m0, goog.vec.EPSILON);
- }
-
- function testFromRotMatrix() {
- var m0 = goog.vec.Mat4.createFloat32FromValues(
- -0.408248, 0.8796528, -0.244016935, 0,
- -0.4082482, 0.06315623, 0.9106836, 0,
- 0.8164965, 0.47140452, 0.3333333, 0,
- 0, 0, 0, 1);
- var q0 = goog.vec.Quaternion.createFloat32();
- goog.vec.Quaternion.fromRotationMatrix4(m0, q0);
- assertElementsRoughlyEqual(
- [0.22094256606638, 0.53340203646030,
- 0.64777022739548, 0.497051689967954],
- q0, goog.vec.EPSILON);
- }
-
- function testToAngleAxis() {
- // Test the identity rotation.
- var q0 = goog.vec.Quaternion.createFloat32FromValues(0, 0, 0, 1);
- var axis = goog.vec.Vec3.createFloat32();
- var angle = goog.vec.Quaternion.toAngleAxis(q0, axis);
- assertRoughlyEquals(0.0, angle, goog.vec.EPSILON);
- assertElementsRoughlyEqual([1, 0, 0], axis, goog.vec.EPSILON);
-
- // Check equivalent representations of the same rotation.
- goog.vec.Quaternion.setFromValues(
- q0, -0.288675032, 0.622008682, -0.17254543, 0.70710678);
- angle = goog.vec.Quaternion.toAngleAxis(q0, axis);
- assertRoughlyEquals(Math.PI / 2, angle, goog.vec.EPSILON);
- assertElementsRoughlyEqual([-0.408248, 0.8796528, -0.244016],
- axis, goog.vec.EPSILON);
- // The polar opposite unit quaternion is the same rotation, so we
- // check that the negated quaternion yields the negated angle and axis.
- goog.vec.Quaternion.negate(q0, q0);
- angle = goog.vec.Quaternion.toAngleAxis(q0, axis);
- assertRoughlyEquals(-Math.PI / 2, angle, goog.vec.EPSILON);
- assertElementsRoughlyEqual([0.408248, -0.8796528, 0.244016],
- axis, goog.vec.EPSILON);
-
- // Verify that the inverse rotation yields the inverse axis.
- goog.vec.Quaternion.conjugate(q0, q0);
- angle = goog.vec.Quaternion.toAngleAxis(q0, axis);
- assertRoughlyEquals(-Math.PI / 2, angle, goog.vec.EPSILON);
- assertElementsRoughlyEqual([-0.408248, 0.8796528, -0.244016],
- axis, goog.vec.EPSILON);
- }
-
- function testFromAngleAxis() {
- // Test identity rotation (zero angle or multiples of TWO_PI).
- var angle = 0.0;
- var axis = goog.vec.Vec3.createFloat32FromValues(-0.408248, 0.8796528,
- -0.244016);
- var q0 = goog.vec.Quaternion.createFloat32();
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual([0, 0, 0, 1], q0, goog.vec.EPSILON);
- angle = 4 * Math.PI;
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual([0, 0, 0, 1], q0, goog.vec.EPSILON);
-
- // General test of various rotations around axes of different lengths.
- angle = Math.PI / 2;
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual(
- [-0.288675032, 0.622008682, -0.17254543, 0.70710678],
- q0, goog.vec.EPSILON);
- // Angle multiples of TWO_PI with a scaled axis should be the same.
- angle += 4 * Math.PI;
- goog.vec.Vec3.scale(axis, 7.0, axis);
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual(
- [-0.288675032, 0.622008682, -0.17254543, 0.70710678],
- q0, goog.vec.EPSILON);
- goog.vec.Vec3.setFromValues(axis, 1, 5, 8);
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual(
- [0.074535599, 0.372677996, 0.596284794, 0.70710678],
- q0, goog.vec.EPSILON);
-
- // Check equivalent representations of the same rotation.
- angle = Math.PI / 5;
- goog.vec.Vec3.setFromValues(axis, 5, -2, -10);
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual(
- [0.136037146, -0.0544148586, -0.27207429, 0.951056516],
- q0, goog.vec.EPSILON);
- // The negated angle and axis should yield the same rotation.
- angle = -Math.PI / 5;
- goog.vec.Vec3.negate(axis, axis);
- goog.vec.Quaternion.fromAngleAxis(angle, axis, q0);
- assertElementsRoughlyEqual(
- [0.136037146, -0.0544148586, -0.27207429, 0.951056516],
- q0, goog.vec.EPSILON);
- }
-
-</script>
-</body>