| <html> |
| <head> |
| <script src="../http/tests/inspector/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| InspectorTest.runTestSuite([ |
| |
| function testVectorLength(next) |
| { |
| var testVectors = [ |
| new WebInspector.Geometry.Vector(3, 4, 5), |
| new WebInspector.Geometry.Vector(-1, 0, -1), |
| new WebInspector.Geometry.Vector(6, -2, 3) |
| ]; |
| InspectorTest.addResult("Testing vector length"); |
| for (var i = 0; i < testVectors.length; ++i) |
| InspectorTest.addResult(String.sprintf("Vector length: %.4f", testVectors[i].length())); |
| |
| next(); |
| }, |
| |
| function testVectorNormalize(next) |
| { |
| var testVectors = [ |
| new WebInspector.Geometry.Vector(3, 4, 5), |
| new WebInspector.Geometry.Vector(-1, 0, -1), |
| new WebInspector.Geometry.Vector(6, -2, 3) |
| ]; |
| |
| var eps = 1e-05; |
| for (var i = 0; i < testVectors.length; ++i) { |
| testVectors[i].normalize(); |
| InspectorTest.assertTrue(Math.abs(testVectors[i].length() - 1) <= eps, "Length of normalized vector is not 1") |
| } |
| |
| var zeroVector = new WebInspector.Geometry.Vector(0, 0, 0); |
| zeroVector.normalize(); |
| InspectorTest.assertTrue(zeroVector.length() <= eps, "Zero vector after normalization isn't zero vector"); |
| next(); |
| }, |
| |
| function testScalarProduct(next) |
| { |
| var vectorsU = [ |
| new WebInspector.Geometry.Vector(3, 4, 5), |
| new WebInspector.Geometry.Vector(-1, 0, -1), |
| new WebInspector.Geometry.Vector(6, -2, 3) |
| ]; |
| |
| var vectorsV = [ |
| new WebInspector.Geometry.Vector(1, 10, -5), |
| new WebInspector.Geometry.Vector(2, 3, 4), |
| new WebInspector.Geometry.Vector(0, 0, 0) |
| ]; |
| |
| for (var i = 0; i < vectorsU.length; ++i) |
| InspectorTest.addResult("Scalar Product:" + WebInspector.Geometry.scalarProduct(vectorsU[i], vectorsV[i])) |
| |
| next(); |
| }, |
| |
| function testCrossProduct(next) |
| { |
| var vectorsU = [ |
| new WebInspector.Geometry.Vector(3, 4, 5), |
| new WebInspector.Geometry.Vector(-1, 0, -1), |
| new WebInspector.Geometry.Vector(6, -2, 3) |
| ]; |
| |
| var vectorsV = [ |
| new WebInspector.Geometry.Vector(1, 10, -5), |
| new WebInspector.Geometry.Vector(2, 3, 4), |
| new WebInspector.Geometry.Vector(0, 0, 0) |
| ]; |
| |
| for (var i = 0; i < vectorsU.length; ++i) { |
| var result = WebInspector.Geometry.crossProduct(vectorsU[i], vectorsV[i]); |
| InspectorTest.addResult(String.sprintf("Cross Product: [%.4f, %.4f, %.4f]", result.x, result.y, result.z)); |
| } |
| |
| next(); |
| }, |
| |
| function testCalculateAngle(next) |
| { |
| var vectorsU = [ |
| new WebInspector.Geometry.Vector(3, 4, 5), |
| new WebInspector.Geometry.Vector(-1, 0, -1), |
| new WebInspector.Geometry.Vector(1, 1, 0), |
| new WebInspector.Geometry.Vector(6, -2, 3), |
| ]; |
| |
| var vectorsV = [ |
| new WebInspector.Geometry.Vector(-3, -4, -5), |
| new WebInspector.Geometry.Vector(2, 3, 4), |
| new WebInspector.Geometry.Vector(-1, 1, 0), |
| new WebInspector.Geometry.Vector(0, 0, 0), |
| ]; |
| |
| for (var i = 0; i < vectorsU.length; ++i) |
| InspectorTest.addResult(String.sprintf("Calculate angle: %.4f", WebInspector.Geometry.calculateAngle(vectorsU[i], vectorsV[i]))); |
| |
| next(); |
| }, |
| |
| function testRadToDeg(next) |
| { |
| var angles = [Math.PI, Math.PI / 4, Math.PI / 6]; |
| for (var i = 0; i < angles.length; ++i) |
| InspectorTest.addResult(String.sprintf("deg: %.4f", WebInspector.Geometry.radToDeg(angles[i]))); |
| |
| next(); |
| }, |
| |
| function testEulerAnglesFromRotationMatrix(next) |
| { |
| var rotationMatrices = [ |
| "matrix3d(0.612, 0.353, -0.707, 0, 0.280, 0.739, 0.612, 0, 0.739, -0.573, 0.353, 0, 0, 0, 0, 1)", |
| |
| "matrix3d(0.353, 0.612, -0.707, 0, -0.573, 0.739, 0.353, 0, 0.739, 0.280, 0.612, 0, 0, 0, 0, 1)", |
| |
| "matrix3d(0.342, 0, -0.939, 0, 0.321, 0.939, 0.116, 0, 0.883, -0.342, 0.321, 0, 0, 0, 0, 1)" |
| ]; |
| |
| for (var i = 0; i < rotationMatrices.length; ++i) { |
| var angles = WebInspector.Geometry.EulerAngles.fromRotationMatrix(new WebKitCSSMatrix(rotationMatrices[i])); |
| InspectorTest.addResult(String.sprintf("Euler angles: %.4f %.4f %.4f", angles.alpha, angles.beta, angles.gamma)); |
| } |
| next(); |
| } |
| |
| ]); |
| |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests Geometry utility class</p> |
| </body> |
| </html> |