229 lines
5.4 KiB
JavaScript
229 lines
5.4 KiB
JavaScript
|
if(!dojo._hasResource["dojox.gfx.tests.matrix"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
||
|
dojo._hasResource["dojox.gfx.tests.matrix"] = true;
|
||
|
dojo.provide("dojox.gfx.tests.matrix");
|
||
|
dojo.require("dojox.gfx.matrix");
|
||
|
|
||
|
(function(){
|
||
|
var m = dojox.gfx.matrix;
|
||
|
var eq = function(t, a, b){ t.t(2 * Math.abs(a - b) / ((a < 1 && b < 1) ? 1 : a + b) < 1e-6); };
|
||
|
tests.register("dojox.gfx.tests.matrix", [
|
||
|
function IdentityTest(t){
|
||
|
var a = new m.Matrix2D();
|
||
|
eq(t, a.xx, 1);
|
||
|
eq(t, a.yy, 1);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function Rot30gTest(t){
|
||
|
var a = m.rotateg(30);
|
||
|
eq(t, a.xx, a.yy);
|
||
|
eq(t, a.xy, -a.yx);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.yx, 0.5);
|
||
|
t.t(a.xy < 0);
|
||
|
t.t(a.yx > 0);
|
||
|
},
|
||
|
function Rot45gTest(t){
|
||
|
var a = m.rotateg(45);
|
||
|
eq(t, a.xx, a.yy);
|
||
|
eq(t, a.xy, -a.yx);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, a.yx);
|
||
|
eq(t, a.yy, -a.xy);
|
||
|
},
|
||
|
function Rot90gTest(t){
|
||
|
var a = m.rotateg(90);
|
||
|
eq(t, a.xx, a.yy);
|
||
|
eq(t, a.xy, -a.yx);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, 0);
|
||
|
eq(t, a.yx, 1);
|
||
|
},
|
||
|
function CombineIdentitiesTest(t){
|
||
|
var a = m.normalize([new m.Matrix2D(), new m.Matrix2D(), new m.Matrix2D()]);
|
||
|
eq(t, a.xx, 1);
|
||
|
eq(t, a.yy, 1);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function CombineExclusiveTest(t){
|
||
|
var a = m.normalize([m.rotateg(30), m.rotateg(-30)]);
|
||
|
eq(t, a.xx, 1);
|
||
|
eq(t, a.yy, 1);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function CombineInvertedTest(t){
|
||
|
var a = m.normalize([m.rotateg(30), m.invert(m.rotateg(30))]);
|
||
|
eq(t, a.xx, 1);
|
||
|
eq(t, a.yy, 1);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function Rot90gAtTest(t){
|
||
|
var a = m.rotategAt(90, 10, 10);
|
||
|
eq(t, a.xx, a.yy);
|
||
|
eq(t, a.xy, -a.yx);
|
||
|
eq(t, a.dx, 20);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, 0);
|
||
|
eq(t, a.yx, 1);
|
||
|
},
|
||
|
function MultPointTest1(t){
|
||
|
var b = m.multiplyPoint(m.rotategAt(90, 10, 10), 10, 10);
|
||
|
eq(t, b.x, 10);
|
||
|
eq(t, b.y, 10);
|
||
|
},
|
||
|
function MultPointTest2(t){
|
||
|
var b = m.multiplyPoint(m.rotategAt(90, 10, 10), {x: 10, y: 5});
|
||
|
eq(t, b.x, 15);
|
||
|
eq(t, b.y, 10);
|
||
|
},
|
||
|
function MultPointTest3(t){
|
||
|
var b = m.multiplyPoint(m.rotategAt(90, 10, 10), 10, 15);
|
||
|
eq(t, b.x, 5);
|
||
|
eq(t, b.y, 10);
|
||
|
},
|
||
|
function ScaleTest1(t){
|
||
|
var a = m.normalize([m.scale(2, 1), m.invert(m.rotateg(45))]);
|
||
|
eq(t, a.xx, 2 * a.yy);
|
||
|
eq(t, a.xy, -2 * a.yx);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, a.xy);
|
||
|
eq(t, a.yy, -a.yx);
|
||
|
},
|
||
|
function ScaleTest2(t){
|
||
|
var a = m.normalize([m.scale(1, 2), m.invert(m.rotateg(45))]);
|
||
|
eq(t, 2 * a.xx, a.yy);
|
||
|
eq(t, 2 * a.xy, -a.yx);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, a.xy);
|
||
|
eq(t, a.yy, -a.yx);
|
||
|
},
|
||
|
function ScaleTest3(t){
|
||
|
var a = m.normalize([m.rotateg(45), m.scale(2, 1)]);
|
||
|
eq(t, a.xx, 2 * a.yy);
|
||
|
eq(t, a.yx, -2 * a.xy);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, a.yx);
|
||
|
eq(t, a.yy, -a.xy);
|
||
|
},
|
||
|
function ScaleTest4(t){
|
||
|
var a = m.normalize([m.rotateg(45), m.scale(1, 2)]);
|
||
|
eq(t, 2 * a.xx, a.yy);
|
||
|
eq(t, 2 * a.yx, -a.xy);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
eq(t, a.xx, a.yx);
|
||
|
eq(t, a.yy, -a.xy);
|
||
|
},
|
||
|
function ScaleTest5(t){
|
||
|
var a = m.normalize([m.rotategAt(45, 100, 100), m.scale(2)]);
|
||
|
eq(t, a.xx, a.yy);
|
||
|
eq(t, a.xy, -a.yx);
|
||
|
eq(t, a.xx, a.yx);
|
||
|
eq(t, a.yy, -a.xy);
|
||
|
eq(t, a.dx, 100);
|
||
|
t.t(a.dy < 0);
|
||
|
var b = m.normalize([m.scale(2), m.rotategAt(45, 100, 100)]);
|
||
|
eq(t, b.xx, b.yy);
|
||
|
eq(t, b.xy, -b.yx);
|
||
|
eq(t, b.xx, b.yx);
|
||
|
eq(t, b.yy, -b.xy);
|
||
|
eq(t, b.dx, 200);
|
||
|
t.t(b.dy < 0);
|
||
|
eq(t, a.xx, b.xx);
|
||
|
eq(t, a.xy, b.xy);
|
||
|
eq(t, a.yx, b.yx);
|
||
|
eq(t, a.yy, b.yy);
|
||
|
eq(t, 2 * a.dx, b.dx);
|
||
|
eq(t, 2 * a.dy, b.dy);
|
||
|
var c = m.normalize([m.rotateg(45), m.scale(2)]);
|
||
|
eq(t, c.xx, c.yy);
|
||
|
eq(t, c.xy, -c.yx);
|
||
|
eq(t, c.xx, c.yx);
|
||
|
eq(t, c.yy, -c.xy);
|
||
|
eq(t, c.dx, 0);
|
||
|
eq(t, c.dy, 0);
|
||
|
var d = m.normalize([m.scale(2), m.rotateg(45)]);
|
||
|
eq(t, d.xx, d.yy);
|
||
|
eq(t, d.xy, -d.yx);
|
||
|
eq(t, d.xx, d.yx);
|
||
|
eq(t, d.yy, -d.xy);
|
||
|
eq(t, d.dx, 0);
|
||
|
eq(t, d.dy, 0);
|
||
|
eq(t, a.xx, c.xx);
|
||
|
eq(t, a.xy, c.xy);
|
||
|
eq(t, a.yx, c.yx);
|
||
|
eq(t, a.yy, c.yy);
|
||
|
eq(t, a.xx, d.xx);
|
||
|
eq(t, a.xy, d.xy);
|
||
|
eq(t, a.yx, d.yx);
|
||
|
eq(t, a.yy, d.yy);
|
||
|
},
|
||
|
function ScaleTest6(t){
|
||
|
var a = m.normalize(6);
|
||
|
eq(t, a.xx, 6);
|
||
|
eq(t, a.yy, 6);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function ScaleTest7(t){
|
||
|
var a = m.normalize([2, m.scale(2, 1)]);
|
||
|
eq(t, a.xx, 4);
|
||
|
eq(t, a.yy, 2);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 0);
|
||
|
eq(t, a.dy, 0);
|
||
|
},
|
||
|
function TranslateTest(t){
|
||
|
var a = m.normalize({dx: 100, dy: 200});
|
||
|
eq(t, a.xx, 1);
|
||
|
eq(t, a.yy, 1);
|
||
|
eq(t, a.xy, 0);
|
||
|
eq(t, a.yx, 0);
|
||
|
eq(t, a.dx, 100);
|
||
|
eq(t, a.dy, 200);
|
||
|
},
|
||
|
function ReflectTest1(t){
|
||
|
var b = m.multiplyPoint(m.reflect(1, 1), 1, 0);
|
||
|
eq(t, b.x, 0);
|
||
|
eq(t, b.y, 1);
|
||
|
},
|
||
|
function ReflectTest2(t){
|
||
|
var b = m.multiplyPoint(m.reflect(1, 1), 0, 1);
|
||
|
eq(t, b.x, 1);
|
||
|
eq(t, b.y, 0);
|
||
|
},
|
||
|
function ProjectTest1(t){
|
||
|
var b = m.multiplyPoint(m.project(1, 1), 1, 0);
|
||
|
eq(t, b.x, 0.5);
|
||
|
eq(t, b.y, 0.5);
|
||
|
},
|
||
|
function ProjectTest2(t){
|
||
|
var b = m.multiplyPoint(m.project(1, 1), 0, 1);
|
||
|
eq(t, b.x, 0.5);
|
||
|
eq(t, b.y, 0.5);
|
||
|
}
|
||
|
]);
|
||
|
})();
|
||
|
|
||
|
}
|