init
This commit is contained in:
32
nv/html/dwv/tests/math/matrix.test.js
Normal file
32
nv/html/dwv/tests/math/matrix.test.js
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Tests for the 'math/point.js' file.
|
||||
*/
|
||||
/** @module tests/math */
|
||||
// Do not warn if these variables were not defined before.
|
||||
/* global QUnit */
|
||||
QUnit.module("matrix");
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Matrix33}.
|
||||
* @function module:tests/math~Matrix33
|
||||
*/
|
||||
QUnit.test("Test Matrix44.", function (assert) {
|
||||
var m0 = new dwv.math.getIdentityMat33();
|
||||
var m1 = new dwv.math.getIdentityMat33();
|
||||
var m2 = new dwv.math.Matrix33(
|
||||
1, 2, 3,
|
||||
4, 5, 6,
|
||||
7, 8, 9 );
|
||||
|
||||
// equals
|
||||
assert.equal(m0.equals(m1), true, "equals true");
|
||||
assert.equal(m0.equals(m2), false, "equals false");
|
||||
|
||||
// get
|
||||
assert.equal(m2.get(0,0), 1, "get(0,0)");
|
||||
assert.equal(m2.get(0,1), 2, "get(0,1)");
|
||||
assert.equal(m2.get(0,2), 3, "get(0,2)");
|
||||
assert.equal(m2.get(1,0), 4, "get(1,0)");
|
||||
assert.equal(m2.get(1,1), 5, "get(1,1)");
|
||||
assert.equal(m2.get(1,2), 6, "get(1,2)");
|
||||
});
|
||||
146
nv/html/dwv/tests/math/point.test.js
Normal file
146
nv/html/dwv/tests/math/point.test.js
Normal file
@@ -0,0 +1,146 @@
|
||||
/**
|
||||
* Tests for the 'math/point.js' file.
|
||||
*/
|
||||
/** @module tests/math */
|
||||
// Do not warn if these variables were not defined before.
|
||||
/* global QUnit */
|
||||
QUnit.module("point");
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Point2D}.
|
||||
* @function module:tests/math~Point2D
|
||||
*/
|
||||
QUnit.test("Test Point2D.", function (assert) {
|
||||
var p0 = new dwv.math.Point2D(1,2);
|
||||
// getX
|
||||
assert.equal(p0.getX(), 1, "getX");
|
||||
// getY
|
||||
assert.equal(p0.getY(), 2, "getY");
|
||||
// can't modify internal x
|
||||
p0.x = 3;
|
||||
assert.equal(p0.getX(), 1, "getX after .x");
|
||||
// can't modify internal y
|
||||
p0.y = 3;
|
||||
assert.equal(p0.getY(), 2, "getY after .y");
|
||||
// equals: true
|
||||
var p1 = new dwv.math.Point2D(1,2);
|
||||
assert.equal(p0.equals(p1), true, "equals true");
|
||||
// equals: false
|
||||
assert.equal(p0.equals(null), false, "null equals false");
|
||||
var p2 = new dwv.math.Point2D(2,1);
|
||||
assert.equal(p0.equals(p2), false, "equals false");
|
||||
// to string
|
||||
assert.equal(p0.toString(), "(1, 2)", "toString");
|
||||
|
||||
// distance
|
||||
var p30 = new dwv.math.Point2D(1,3);
|
||||
assert.equal(p0.getDistance(p30), 1, "getDistance #1");
|
||||
var p31 = new dwv.math.Point2D(2,2);
|
||||
assert.equal(p0.getDistance(p31), 1, "getDistance #2");
|
||||
var p32 = new dwv.math.Point2D(2,1);
|
||||
assert.equal(p0.getDistance(p32), Math.sqrt(2), "getDistance #3");
|
||||
var p33 = new dwv.math.Point2D(0,1);
|
||||
assert.equal(p0.getDistance(p33), Math.sqrt(2), "getDistance #4");
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.FastPoint2D}.
|
||||
* @function module:tests/math~FastPoint2D
|
||||
*/
|
||||
QUnit.test("Test FastPoint2D.", function (assert) {
|
||||
var p0 = new dwv.math.FastPoint2D(1,2);
|
||||
// x
|
||||
assert.equal(p0.x, 1, "x");
|
||||
// y
|
||||
assert.equal(p0.y, 2, "y");
|
||||
// can modify x
|
||||
p0.x = 3;
|
||||
assert.equal(p0.x, 3, "modified x");
|
||||
// can modify y
|
||||
p0.y = 4;
|
||||
assert.equal(p0.y, 4, "modified y");
|
||||
// equals: true
|
||||
var p1 = new dwv.math.FastPoint2D(3,4);
|
||||
assert.equal(p0.equals(p1), true, "equals true");
|
||||
// equals: false
|
||||
assert.equal(p0.equals(null), false, "null equals false");
|
||||
var p2 = new dwv.math.FastPoint2D(4,3);
|
||||
assert.equal(p0.equals(p2), false, "equals false");
|
||||
// to string
|
||||
assert.equal(p0.toString(), "(3, 4)", "toString");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Point3D}.
|
||||
* @function module:tests/math~Point3D
|
||||
*/
|
||||
QUnit.test("Test Point3D.", function (assert) {
|
||||
var p0 = new dwv.math.Point3D(1,2,3);
|
||||
// getX
|
||||
assert.equal(p0.getX(), 1, "getX");
|
||||
// getY
|
||||
assert.equal(p0.getY(), 2, "getY");
|
||||
// getZ
|
||||
assert.equal(p0.getZ(), 3, "getZ");
|
||||
// can't modify internal x
|
||||
p0.x = 3;
|
||||
assert.equal(p0.getX(), 1, "getX after .x");
|
||||
// can't modify internal y
|
||||
p0.y = 3;
|
||||
assert.equal(p0.getY(), 2, "getY after .y");
|
||||
// can't modify internal z
|
||||
p0.z = 3;
|
||||
assert.equal(p0.getZ(), 3, "getZ after .z");
|
||||
// equals: true
|
||||
var p1 = new dwv.math.Point3D(1,2,3);
|
||||
assert.equal(p0.equals(p1), true, "equals true");
|
||||
// equals: false
|
||||
assert.equal(p0.equals(null), false, "null equals false");
|
||||
var p2 = new dwv.math.Point3D(3,2,1);
|
||||
assert.equal(p0.equals(p2), false, "equals false");
|
||||
// to string
|
||||
assert.equal(p0.toString(), "(1, 2, 3)", "toString");
|
||||
|
||||
// distance
|
||||
var p30 = new dwv.math.Point3D(1,2,4);
|
||||
assert.equal(p0.getDistance(p30), 1, "getDistance #1");
|
||||
var p31= new dwv.math.Point3D(2,2,3);
|
||||
assert.equal(p0.getDistance(p31), 1, "getDistance #2");
|
||||
var p32 = new dwv.math.Point3D(2,1,3);
|
||||
assert.equal(p0.getDistance(p32), Math.sqrt(2), "getDistance #3");
|
||||
var p33 = new dwv.math.Point3D(0,1,3);
|
||||
assert.equal(p0.getDistance(p33), Math.sqrt(2), "getDistance #4");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Index3D}.
|
||||
* @function module:tests/math~Index3D
|
||||
*/
|
||||
QUnit.test("Test Index3D.", function (assert) {
|
||||
var i0 = new dwv.math.Index3D(1,2,3);
|
||||
// getX
|
||||
assert.equal(i0.getI(), 1, "getI");
|
||||
// getY
|
||||
assert.equal(i0.getJ(), 2, "getJ");
|
||||
// getZ
|
||||
assert.equal(i0.getK(), 3, "getK");
|
||||
// can't modify internal i
|
||||
i0.i = 3;
|
||||
assert.equal(i0.getI(), 1, "getI after .i");
|
||||
// can't modify internal j
|
||||
i0.j = 3;
|
||||
assert.equal(i0.getJ(), 2, "getJ after .j");
|
||||
// can't modify internal k
|
||||
i0.k = 3;
|
||||
assert.equal(i0.getK(), 3, "getK after .k");
|
||||
// equals: true
|
||||
var i1 = new dwv.math.Index3D(1,2,3);
|
||||
assert.equal(i0.equals(i1), true, "equals true");
|
||||
// equals: false
|
||||
assert.equal(i0.equals(null), false, "null equals false");
|
||||
var i2 = new dwv.math.Index3D(3,2,1);
|
||||
assert.equal(i0.equals(i2), false, "equals false");
|
||||
// to string
|
||||
assert.equal(i0.toString(), "(1, 2, 3)", "toString");
|
||||
});
|
||||
206
nv/html/dwv/tests/math/shapes.test.js
Normal file
206
nv/html/dwv/tests/math/shapes.test.js
Normal file
@@ -0,0 +1,206 @@
|
||||
/**
|
||||
* Tests for the 'math/shapes.js' file.
|
||||
*/
|
||||
// Do not warn if these variables were not defined before.
|
||||
/* global QUnit */
|
||||
QUnit.module("shapes");
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Circle}.
|
||||
* @function module:tests/math~Circle
|
||||
*/
|
||||
QUnit.test("Test Circle.", function (assert) {
|
||||
var center = new dwv.math.Point2D(0,0);
|
||||
var c0 = new dwv.math.Circle(center,2);
|
||||
// getCenter
|
||||
assert.equal(c0.getCenter(), center, "getCenter");
|
||||
// getRadius
|
||||
assert.equal(c0.getRadius(), 2, "getRadius");
|
||||
// getSurface
|
||||
assert.equal(c0.getSurface(), Math.PI*2*2, "getSurface");
|
||||
// equals: true
|
||||
assert.equal(c0.getWorldSurface(0.5,0.5), Math.PI, "getWorldSurface");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Ellipse}.
|
||||
* @function module:tests/math~Ellipse
|
||||
*/
|
||||
QUnit.test("Test Ellipse.", function (assert) {
|
||||
var center = new dwv.math.Point2D(0,0);
|
||||
var e0 = new dwv.math.Ellipse(center,2,4);
|
||||
// getCenter
|
||||
assert.equal(e0.getCenter(), center, "getCenter");
|
||||
// getA
|
||||
assert.equal(e0.getA(), 2, "getA");
|
||||
// getB
|
||||
assert.equal(e0.getB(), 4, "getB");
|
||||
// getSurface
|
||||
assert.equal(e0.getSurface(), Math.PI*2*4, "getSurface");
|
||||
// equals: true
|
||||
assert.equal(e0.getWorldSurface(0.5,0.25), Math.PI, "getWorldSurface");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Line}.
|
||||
* @function module:tests/math~Line
|
||||
*/
|
||||
QUnit.test("Test Line.", function (assert) {
|
||||
var p0 = new dwv.math.Point2D(0,0);
|
||||
var p1 = new dwv.math.Point2D(0,-5);
|
||||
var l0 = new dwv.math.Line(p0,p1);
|
||||
// getBegin
|
||||
assert.equal(l0.getBegin(), p0, "getBegin");
|
||||
// getEnd
|
||||
assert.equal(l0.getEnd(), p1, "getEnd");
|
||||
// getLength
|
||||
assert.equal(l0.getLength(), 5, "getLength");
|
||||
// getWorldLength
|
||||
assert.equal(l0.getWorldLength(0.5,0.5), 2.5, "getWorldLength");
|
||||
// getMidpoint
|
||||
var pMid = new dwv.math.Point2D(0,-2); // rounded...
|
||||
assert.equal(l0.getMidpoint().equals(pMid), true, "getMidpoint");
|
||||
// slope
|
||||
var p20 = new dwv.math.Point2D(1,1);
|
||||
var l10 = new dwv.math.Line(p0,p20);
|
||||
assert.equal(l10.getSlope(), 1, "getSlope");
|
||||
var p21 = new dwv.math.Point2D(1,-1);
|
||||
var l11 = new dwv.math.Line(p0,p21);
|
||||
assert.equal(l11.getSlope(), -1, "getSlope (negative)");
|
||||
var p3 = new dwv.math.Point2D(1,0);
|
||||
var l2 = new dwv.math.Line(p0,p3);
|
||||
assert.equal(l2.getSlope(), 0, "getSlope (horizontal)");
|
||||
assert.equal(l0.getSlope(), -Infinity, "getSlope (vertical)");
|
||||
// inclination
|
||||
assert.equal(l10.getInclination(), 135, "Inclination"); // 180 - 45
|
||||
assert.equal(l11.getInclination(), 225, "Inclination (negative)"); // 180 + 45
|
||||
assert.equal(l2.getInclination(), 180, "Inclination (horizontal)");
|
||||
assert.equal(l0.getInclination(), 270, "Inclination (vertical)"); // 180 + 90
|
||||
// angle
|
||||
assert.equal(dwv.math.getAngle(l10, l11), 90, "getAngle");
|
||||
var p4 = new dwv.math.Point2D(0,-1);
|
||||
var p5 = new dwv.math.Point2D(1,-1);
|
||||
var l3 = new dwv.math.Line(p4,p5);
|
||||
assert.equal(dwv.math.getAngle(l2, l3), 180, "getAngle (horizontal parallel)");
|
||||
var l4 = new dwv.math.Line(p3,p21);
|
||||
assert.equal(dwv.math.getAngle(l0, l4), 180, "getAngle (vertical parallel)");
|
||||
// intercept
|
||||
assert.equal(l10.getIntercept(), 0, "getIntercept (zero)");
|
||||
var p6 = new dwv.math.Point2D(0,1);
|
||||
var p7 = new dwv.math.Point2D(1,2);
|
||||
var l5 = new dwv.math.Line(p6,p7);
|
||||
assert.equal(l5.getIntercept(), 1, "getIntercept");
|
||||
var p8 = new dwv.math.Point2D(0,-1);
|
||||
var p9 = new dwv.math.Point2D(1,-2);
|
||||
var l6 = new dwv.math.Line(p8,p9);
|
||||
assert.equal(l6.getIntercept(), -1, "getIntercept (negative)");
|
||||
var p10 = new dwv.math.Point2D(0,1);
|
||||
var p11 = new dwv.math.Point2D(-1,2);
|
||||
var l7 = new dwv.math.Line(p10,p11);
|
||||
assert.equal(l7.getIntercept(), 1, "getIntercept (back)");
|
||||
var p12 = new dwv.math.Point2D(0,-1);
|
||||
var p13 = new dwv.math.Point2D(-1,-2);
|
||||
var l8 = new dwv.math.Line(p12,p13);
|
||||
assert.equal(l8.getIntercept(), -1, "getIntercept (back negative)");
|
||||
// perpendicular
|
||||
var l0p = dwv.math.getPerpendicularLine(l0, p0, 2);
|
||||
var pl0pbeg = new dwv.math.Point2D(-1,0);
|
||||
assert.ok(l0p.getBegin().equals( pl0pbeg ), "perpendicular horizon begin");
|
||||
var pl0pend = new dwv.math.Point2D(1,0);
|
||||
assert.ok(l0p.getEnd().equals( pl0pend ), "perpendicular horizon end");
|
||||
|
||||
var l2p = dwv.math.getPerpendicularLine(l2, p0, 2);
|
||||
var pl2pbeg = new dwv.math.Point2D(0,-1);
|
||||
assert.ok(l2p.getBegin().equals( pl2pbeg ), "perpendicular vertical begin");
|
||||
var pl2pend = new dwv.math.Point2D(0,1);
|
||||
assert.ok(l2p.getEnd().equals( pl2pend ), "perpendicular vertical end");
|
||||
|
||||
var isSimilar = function (a, b) {
|
||||
return Math.abs(a-b) < 1e-10;
|
||||
};
|
||||
var isSimilarPoint2D = function (p0, p1) {
|
||||
return isSimilar(p0.getX(), p1.getX()) &&
|
||||
isSimilar(p0.getY(), p1.getY());
|
||||
};
|
||||
|
||||
var l5p = dwv.math.getPerpendicularLine(l5, p6, 2);
|
||||
var halfSqrt2 = Math.sqrt(2) / 2;
|
||||
var pl5pbeg = new dwv.math.Point2D(-halfSqrt2,1 + halfSqrt2);
|
||||
assert.ok(isSimilarPoint2D(l5p.getBegin(), pl5pbeg ), "perpendicular begin");
|
||||
var pl5pend = new dwv.math.Point2D(halfSqrt2,1 - halfSqrt2);
|
||||
assert.ok(isSimilarPoint2D(l5p.getEnd(), pl5pend ), "perpendicular end");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Rectangle}.
|
||||
* @function module:tests/math~Rectangle
|
||||
*/
|
||||
QUnit.test("Test Rectangle.", function (assert) {
|
||||
var p0 = new dwv.math.Point2D(0,0);
|
||||
var p1 = new dwv.math.Point2D(-4,-4);
|
||||
var r0 = new dwv.math.Rectangle(p0,p1);
|
||||
// getBegin
|
||||
assert.equal(r0.getBegin().equals(p1), true, 'getBegin');
|
||||
// getEnd
|
||||
assert.equal(r0.getEnd().equals(p0), true, "getEnd");
|
||||
// getRealWidth
|
||||
assert.equal(r0.getRealWidth(), 4, "getRealWidth");
|
||||
// getRealHeight
|
||||
assert.equal(r0.getRealHeight(), 4, "getRealHeight");
|
||||
// getWidth
|
||||
assert.equal(r0.getWidth(), 4, "getWidth");
|
||||
// getHeight
|
||||
assert.equal(r0.getHeight(), 4, "getHeight");
|
||||
// getSurface
|
||||
assert.equal(r0.getSurface(), 16, "getSurface");
|
||||
// getWorldSurface
|
||||
assert.equal(r0.getWorldSurface(0.5,0.5), 4, "getWorldSurface");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.ROI}.
|
||||
* @function module:tests/math~ROI
|
||||
*/
|
||||
QUnit.test("Test ROI.", function (assert) {
|
||||
var r0 = new dwv.math.ROI();
|
||||
// getLength
|
||||
assert.equal(r0.getLength(), 0, "getLength");
|
||||
// add a point
|
||||
var p0 = new dwv.math.Point2D(0,0);
|
||||
r0.addPoint(p0);
|
||||
// getLength
|
||||
assert.equal(r0.getLength(), 1, "getLength");
|
||||
// add another point
|
||||
var p1 = new dwv.math.Point2D(-4,-4);
|
||||
r0.addPoint(p1);
|
||||
// getPoint first
|
||||
assert.equal(r0.getPoint(0), p0, "getPoint first");
|
||||
// getPoint second
|
||||
assert.equal(r0.getPoint(1), p1, "getPoint second");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Path}.
|
||||
* @function module:tests/math~Path
|
||||
*/
|
||||
QUnit.test("Test Path.", function (assert) {
|
||||
var path0 = new dwv.math.Path();
|
||||
// getLength
|
||||
assert.equal(path0.getLength(), 0, "getLength");
|
||||
// add a point
|
||||
var p0 = new dwv.math.Point2D(0,0);
|
||||
path0.addPoint(p0);
|
||||
// getLength
|
||||
assert.equal(path0.getLength(), 1, "getLength");
|
||||
// add another point
|
||||
var p1 = new dwv.math.Point2D(-4,-4);
|
||||
path0.addPoint(p1);
|
||||
// getPoint first
|
||||
assert.equal(path0.getPoint(0), p0, "getPoint first");
|
||||
// getPoint second
|
||||
assert.equal(path0.getPoint(1), p1, "getPoint second");
|
||||
// add first point a control point
|
||||
path0.addControlPoint(p0);
|
||||
// check if control point
|
||||
assert.equal(path0.isControlPoint(p0), 1, "isControlPoint");
|
||||
});
|
||||
60
nv/html/dwv/tests/math/stats.test.js
Normal file
60
nv/html/dwv/tests/math/stats.test.js
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Tests for the 'math/stats.js' file.
|
||||
*/
|
||||
// Do not warn if these variables were not defined before.
|
||||
/* global QUnit */
|
||||
QUnit.module("stats");
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.getStats}.
|
||||
* @function module:tests/math~getStats
|
||||
*/
|
||||
QUnit.test("Test getStats.", function (assert) {
|
||||
var arr0 = [1, 2, 3, 4, 5];
|
||||
var q0 = dwv.math.getStats(arr0);
|
||||
// min
|
||||
assert.equal(q0.min, 1, "min.0");
|
||||
// max
|
||||
assert.equal(q0.max, 5, "max.0");
|
||||
// mean
|
||||
assert.equal(q0.mean, 3, "mean.0");
|
||||
// stdDev
|
||||
assert.equal(q0.stdDev, 1.4142135623730951, "stdDev.0");
|
||||
|
||||
var arr1 = [9, 2, 5, 4, 12, 7, 8, 11, 9, 3, 7, 4, 12, 5, 4, 10, 9, 6, 9, 4];
|
||||
var q1 = dwv.math.getStats(arr1);
|
||||
// min
|
||||
assert.equal(q1.min, 2, "min.1");
|
||||
// max
|
||||
assert.equal(q1.max, 12, "max.1");
|
||||
// mean
|
||||
assert.equal(q1.mean, 7, "mean.1");
|
||||
// stdDev
|
||||
assert.equal(q1.stdDev, 2.9832867780352594, "stdDev.1");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.guid}.
|
||||
* @function module:tests/math~guid
|
||||
*/
|
||||
QUnit.test("Test GUID.", function (assert) {
|
||||
var id0 = dwv.math.guid();
|
||||
var id1 = dwv.math.guid();
|
||||
assert.equal((id0 === id1), false, "Two GUids should not be equal.");
|
||||
|
||||
var duplicates = 0;
|
||||
// create an array of guids
|
||||
var ids = [];
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
ids[ids.length] = dwv.math.guid();
|
||||
}
|
||||
// check duplicates
|
||||
var id = 0;
|
||||
for (i = 0; i < ids.length - 1; ++i) {
|
||||
id = ids.pop();
|
||||
if (ids.indexOf(id) !== -1) {
|
||||
++duplicates;
|
||||
}
|
||||
}
|
||||
assert.equal(duplicates, 0, "1000 GUids should not be equal.");
|
||||
});
|
||||
124
nv/html/dwv/tests/math/vector.test.js
Normal file
124
nv/html/dwv/tests/math/vector.test.js
Normal file
@@ -0,0 +1,124 @@
|
||||
/**
|
||||
* Tests for the 'math/point.js' file.
|
||||
*/
|
||||
/** @module tests/math */
|
||||
// Do not warn if these variables were not defined before.
|
||||
/* global QUnit */
|
||||
QUnit.module("vector");
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Vector3D}.
|
||||
* @function module:tests/math~Vector3D
|
||||
*/
|
||||
QUnit.test("Test Vector3D.", function (assert) {
|
||||
var v0 = new dwv.math.Vector3D(1,2,3);
|
||||
// getX
|
||||
assert.equal(v0.getX(), 1, "getX");
|
||||
// getY
|
||||
assert.equal(v0.getY(), 2, "getY");
|
||||
// getZ
|
||||
assert.equal(v0.getZ(), 3, "getZ");
|
||||
// can't modify internal x
|
||||
v0.x = 3;
|
||||
assert.equal(v0.getX(), 1, "getX after .x");
|
||||
// can't modify internal y
|
||||
v0.y = 3;
|
||||
assert.equal(v0.getY(), 2, "getY after .y");
|
||||
// can't modify internal z
|
||||
v0.z = 3;
|
||||
assert.equal(v0.getZ(), 3, "getZ after .z");
|
||||
// equals: true
|
||||
var v1 = new dwv.math.Vector3D(1,2,3);
|
||||
assert.equal(v0.equals(v1), true, "equals true");
|
||||
// equals: false
|
||||
assert.equal(v0.equals(null), false, "null equals false");
|
||||
var v2 = new dwv.math.Vector3D(3,2,1);
|
||||
assert.equal(v0.equals(v2), false, "equals false");
|
||||
// to string
|
||||
assert.equal(v0.toString(), "(1, 2, 3)", "toString");
|
||||
|
||||
// norm
|
||||
var v10 = new dwv.math.Vector3D(1,0,0);
|
||||
assert.equal(v10.norm(), 1, "norm unit #0");
|
||||
var v11 = new dwv.math.Vector3D(0,1,0);
|
||||
assert.equal(v11.norm(), 1, "norm unit#1");
|
||||
var v12 = new dwv.math.Vector3D(0,0,1);
|
||||
assert.equal(v12.norm(), 1, "norm unit #2");
|
||||
|
||||
var v13 = new dwv.math.Vector3D(1,1,0);
|
||||
assert.equal(v13.norm(), Math.sqrt(2), "norm other #0");
|
||||
var v14 = new dwv.math.Vector3D(0,1,1);
|
||||
assert.equal(v14.norm(), Math.sqrt(2), "norm other #1");
|
||||
var v15 = new dwv.math.Vector3D(1,0,1);
|
||||
assert.equal(v15.norm(), Math.sqrt(2), "norm other #2");
|
||||
var v16 = new dwv.math.Vector3D(1,1,1);
|
||||
assert.equal(v16.norm(), Math.sqrt(3), "norm other #3");
|
||||
var v17 = new dwv.math.Vector3D(1,2,3);
|
||||
assert.equal(v17.norm(), Math.sqrt(14), "norm other #4");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Vector3D}.
|
||||
* @function module:tests/math~Vector3D
|
||||
*/
|
||||
QUnit.test("Test Vector3D crossProduct.", function (assert) {
|
||||
// test vectors
|
||||
var v0 = new dwv.math.Vector3D(0,0,0);
|
||||
var v0x = new dwv.math.Vector3D(1,0,0);
|
||||
var v0y = new dwv.math.Vector3D(0,1,0);
|
||||
var v0my = new dwv.math.Vector3D(0,-1,0);
|
||||
var v0z = new dwv.math.Vector3D(0,0,1);
|
||||
var v0mz = new dwv.math.Vector3D(0,0,-1);
|
||||
|
||||
// self cross product is zero vector
|
||||
assert.equal(v0x.crossProduct(v0x).equals(v0), true, "crossProduct self");
|
||||
|
||||
// cross product of parallel vector is zero vector
|
||||
var v1x = new dwv.math.Vector3D(2,0,0);
|
||||
assert.equal(v0x.crossProduct(v1x).equals(v0), true, "crossProduct parallel #0");
|
||||
var v1y = new dwv.math.Vector3D(0,6,0);
|
||||
assert.equal(v0y.crossProduct(v1y).equals(v0), true, "crossProduct parallel #1");
|
||||
var v10 = new dwv.math.Vector3D(1,1,1);
|
||||
var v11 = new dwv.math.Vector3D(5,5,5);
|
||||
assert.equal(v10.crossProduct(v11).equals(v0), true, "crossProduct parallel #2");
|
||||
var v12 = new dwv.math.Vector3D(-5,-5,-5);
|
||||
assert.equal(v10.crossProduct(v12).equals(v0), true, "crossProduct parallel #3");
|
||||
|
||||
// unit vectors
|
||||
assert.equal(v0x.crossProduct(v0y).equals(v0z), true, "crossProduct unit #0");
|
||||
// anticommutative a * b = - (b * a)
|
||||
assert.equal(v0y.crossProduct(v0x).equals(v0mz), true, "crossProduct unit #1");
|
||||
assert.equal(v0z.crossProduct(v0x).equals(v0y), true, "crossProduct unit #2");
|
||||
assert.equal(v0x.crossProduct(v0z).equals(v0my), true, "crossProduct unit #3");
|
||||
});
|
||||
|
||||
/**
|
||||
* Tests for {@link dwv.math.Vector3D}.
|
||||
* @function module:tests/math~Vector3D
|
||||
*/
|
||||
QUnit.test("Test Vector3D dotProduct.", function (assert) {
|
||||
// orthogonal
|
||||
var v00 = new dwv.math.Vector3D(1,0,0);
|
||||
var v01 = new dwv.math.Vector3D(0,1,0);
|
||||
assert.equal(v00.dotProduct(v01), 0, "dotProduct orthogonal #0");
|
||||
var v02 = new dwv.math.Vector3D(0,0,1);
|
||||
assert.equal(v00.dotProduct(v02), 0, "dotProduct orthogonal #1");
|
||||
|
||||
// parallel
|
||||
var v10 = new dwv.math.Vector3D(2,0,0);
|
||||
assert.equal(v00.dotProduct(v10), 2, "dotProduct parallel #0");
|
||||
var v11 = new dwv.math.Vector3D(-1,0,0);
|
||||
assert.equal(v00.dotProduct(v11), -1, "dotProduct parallel #1");
|
||||
|
||||
var simiFunc = function (a,b) {
|
||||
return Math.abs(a - b) < 1e-6;
|
||||
};
|
||||
|
||||
// regular
|
||||
var v20 = new dwv.math.Vector3D(1,1,0);
|
||||
var dot20 = v20.norm() * v00.norm() * Math.cos(Math.PI/4);
|
||||
assert.equal(simiFunc(v20.dotProduct(v00), dot20), true, "dotProduct regular #0");
|
||||
var v21 = new dwv.math.Vector3D(0,1,0);
|
||||
var dot21 = v20.norm() * v21.norm() * Math.cos(Math.PI/4);
|
||||
assert.equal(simiFunc(v20.dotProduct(v21), dot21), true, "dotProduct regular #1");
|
||||
});
|
||||
Reference in New Issue
Block a user