MatrixUtil.js revision 83e1c423e969705408dfcf7d94c7cd3c762e18f8
var MatrixUtil = {
/**
* Used as value for the _rounding method.
*
* @property _rounder
* @private
*/
_rounder: 100000,
/**
* Rounds values
*
* @method _round
* @private
*/
return val;
},
/**
* Converts a radian value to a degree.
*
* @method rad2deg
* @param {Number} rad Radian value to be converted.
* @return Number
*/
return deg;
},
/**
* Converts a degree value to a radian.
*
* @method deg2rad
* @param {Number} deg Degree value to be converted to radian.
* @return Number
*/
return rad;
},
/**
* Converts an angle to a radian
*
* @method angle2rad
* @param {Objecxt} val Value to be converted to radian.
* @return Number
*/
} else { // default to deg
}
return val;
},
/**
* Converts a transform object to an array of column vectors.
*
* / \
* | matrix[0][0] matrix[1][0] matrix[2][0] |
* | matrix[0][1] matrix[1][1] matrix[2][1] |
* | matrix[0][2] matrix[1][2] matrix[2][2] |
* \ /
*
* @method getnxn
* @return Array
*/
convertTransformToArray: function(matrix)
{
var matrixArray = [
[0, 0, 1]
];
return matrixArray;
},
/**
* Returns the determinant of a given matrix.
*
* / \
* | matrix[0][0] matrix[1][0] matrix[2][0] |
* | matrix[0][1] matrix[1][1] matrix[2][1] |
* | matrix[0][2] matrix[1][2] matrix[2][2] |
* | matrix[0][3] matrix[1][3] matrix[2][3] |
* \ /
*
* @method getDeterminant
* @param {Array} matrix An nxn matrix represented an array of vector (column) arrays. Each vector array has index for each row.
* @return Number
*/
getDeterminant: function(matrix)
{
var determinant = 0,
i = 0,
if(len == 2)
{
}
for(; i < len; ++i)
{
if(i % 2 === 0 || i === 0)
{
}
else
{
}
}
return determinant;
},
/**
* Returns the inverse of a matrix
*
* @method inverse
* @param Array matrix An array representing an nxn matrix
* @return Array
*
* / \
* | matrix[0][0] matrix[1][0] matrix[2][0] |
* | matrix[0][1] matrix[1][1] matrix[2][1] |
* | matrix[0][2] matrix[1][2] matrix[2][2] |
* | matrix[0][3] matrix[1][3] matrix[2][3] |
* \ /
*/
{
var determinant = 0,
i = 0,
j,
adjunct = [],
//vector representing 2x2 matrix
minor = [],
if(len === 2)
{
inverse = [
];
}
else
{
for(; i < len; ++i)
{
adjunct[i] = [];
for(j = 0; j < len; ++j)
{
if((i + j) % 2 !== 0 && (i + j) !== 0)
{
adjunct[i][j] *= -1;
}
}
}
}
return inverse;
},
/**
* Multiplies a matrix by a numeric value.
*
* @method scalarMultiply
* @param {Array} matrix The matrix to be altered.
* @param {Number} multiplier The number to multiply against the matrix.
* @return Array
*/
{
var i = 0,
j,
for(; i < len; ++i)
{
for(j = 0; j < len; ++j)
{
}
}
return matrix;
},
/**
* Returns the transpose for an nxn matrix.
*
* @method transpose
* @param matrix An nxn matrix represented by an array of vector arrays.
* @return Array
*/
{
i = 0,
j = 0,
transpose = [];
for(; i < len; ++i)
{
transpose[i] = [];
for(j = 0; j < len; ++j)
{
}
}
return transpose;
},
/**
* Returns a matrix of minors based on a matrix, column index and row index.
*
* @method getMinors
* @param {Array} matrix The matrix from which to extract the matrix of minors.
* @param {Number} columnIndex A zero-based index representing the specified column to exclude.
* @param {Number} rowIndex A zero-based index represeenting the specified row to exclude.
* @return Array
*/
{
var minors = [],
i = 0,
j,
for(; i < len; ++i)
{
if(i !== columnIndex)
{
column = [];
for(j = 0; j < len; ++j)
{
if(j !== rowIndex)
{
}
}
}
}
return minors;
},
/**
* Returns the sign of value
*
* @method sign
* @param {Number} val value to be interpreted
* @return Number
*/
{
},
/**
* Multiplies a vector and a matrix
*
* @method vectorMatrixProduct
* @param {Array} vector Array representing a column vector
* @param {Array} matrix Array representing an nxn matrix
* @return Array
*/
{
var i,
j,
product = [],
for(i = 0; i < len; ++i)
{
rowProduct = 0;
for(j = 0; j < len; ++j)
{
}
product[i] = rowProduct;
}
return product;
},
/**
* Breaks up a 2d transform matrix into a series of transform operations.
*
* @method decompose
* @param {Array} 3x3 matrix array
* @return Array
*/
{
sx,
sy,
if((a * d - b * c) === 0)
{
return false;
}
//get length of vector(ab)
//normalize components of vector(ab)
a /= sx;
b /= sx;
c -= a * shear;
d -= b * shear;
//get length of vector(cd)
//normalize components of vector(cd)
c /= sy;
d /= sy;
if(a * b < c * d)
{
a = -a;
b = -b;
c = -c;
d = -d;
}
return [
["rotate", rotate],
["skewX", shear],
];
},
/**
* Parses a transform string and returns an array of transform arrays.
*
* @method getTransformArray
* @param {String} val A transform string
* @return Array
*/
getTransformArray: function(transform) {
transforms = [],
args,
m,
{
}
else if(m[1] == "matrix")
{
[0, 0, 1]
]);
}
}
return transforms;
},
/**
* Returns an array of transform arrays representing transform functions and arguments.
*
* @method getTransformFunctionArray
* @return Array
*/
getTransformFunctionArray: function(transform) {
var list;
switch(transform)
{
case "skew" :
break;
case "scale" :
break;
case "scaleX" :
break;
case "scaleY" :
break;
case "translate" :
break;
default :
break;
}
return list;
},
/**
* Compares to arrays or transform functions to ensure both contain the same functions in the same
* order.
*
* @method compareTransformSequence
* @param {Array} list1 Array to compare
* @param {Array} list2 Array to compare
* @return Boolean
*/
{
var i = 0,
if(isEqual)
{
for(; i < len; ++i)
{
{
isEqual = false;
break;
}
}
}
return isEqual;
},
/**
* Mapping of possible transform method names.
*
* @property transformMethods
* @type Object
*/
rotate: "rotate",
skew: "skew",
skewX: "skewX",
skewY: "skewY",
translate: "translate",
translateX: "translateX",
translateY: "tranlsateY",
scale: "scale",
scaleX: "scaleX",
scaleY: "scaleY"
}
};
Y.MatrixUtil = MatrixUtil;