blob: eef1c5bfdb259a0059b53626b8f56348ce61d83b [file] [log] [blame]
<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>