T.M. SoftStudio

feci quod potui, faciant meliora potentes

EWGL-matrices


Библиотека EWGL-matrices (http://code.google.com/p/ewgl-matrices/) была создана как альтернатива библиотекам Sylvester и glUtils.js, тестированием доказывая что EWGL-matrices работает быстрее Sylvester.

Библиотека EWGL-matrices оперирует матрицами 4х4 и векторами с 3 элементами.

Матрицы 4х4 представляет класс m4x4, а векторы — класс v3.

Для работы с матрицами предоставляются статические методы: I ,set, $, makeFrustum, makePerspective, makeOrtho, makeRotate, makeScale и методы экземпляра: identity, I, e, row, col, dimensions, rows, cols, eql, setElements, dup, map, add, substract, x, multiply, translate, rotate, scale, transpose, max, min, indexOf, diagonal, det, determinant, isSingular, tr, trace, inverse, view, rand класса m4x4.

Для работы с векторами предоставляются статический метод set и методы экземпляра: setElements, add, sub, mul, length, dot, normalize класса v3.


Класс m4x4

Статические методы класса:

I

m4x4.I();

Создает экземпляр единичной матрицы с элементами [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1].



set или $

Возвращает матрицу с указанными элементами:

m4x4.set(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4);

var array1 = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4];

m4x4.set(array1);



makeFrustum

Возвращает проекционную матрицу:

m4x4.makeFrustrum(left, right, bottom, top, znear, zfar);



makePerspective

Возвращает проекционную матрицу:

m4x4.makePerspective(fovy, aspect, znear, zfar);



makeOrtho

Возвращает матрицу ортогональной проекции:

m4x4.makeOrtho(left, right, bottom, top, znear, zfar);



makeRotate

Возвращает матрицу вращения:

m4x4.makeRotate(angle,vector);



makeScale

Возвращает матрицу масштабирования:

m4x4.makeScale(vector);



makeTranslate

Возвращает матрицу перемещения:

m4x4.makeTranslate(vector);



Методы экземпляра класса:

var m= new matrix(els);



identity или I

m.I() или m.identity()

Устанавливает матрицу как единичную.



E

m.e(i,j)

Возвращает указанный элемент матрицы.



Row

m.row(i)

Возвращает указанную строку матрицы в виде массива.



Col

m.col(i)

Возвращает указанный столбец матрицы в виде массива.



Dimensions

m.dimensions()

Возвращает размерность матрицы в виде строки {'rows':4,'cols':4}.



Rows

m.rows()

Возвращает 4.



cols

m.cols()

Возвращает 4.



eql

m.eql(matrix)

Сравнивает две матрицы.



SetElements

m.setElements(els)

Устанавливает элементы матрицы.



Dup

m.dup()

Возвращает копию матрицы.



Map

m.map(fn)

Преобразует элементы матрицы с помощью функции.



add

m.add(matrix)

Складывает две матрицы.



Substract

m.substract(matrix)

Вычитает две матрицы.



X или multiply

m.multiply(matrix) или m.x(matrix)

Перемножает две матрицы.



Translate

m.translate(vector)

Перемножает матрицу на матрицу перемещения.



Rotate

m.rotate(theta,vector)

Перемножает матрицу на матрицу вращения.



Scale

m.scale(vector)

Перемножает матрицу на матрицу масштабирования.



Transpose

m.transpose()

Возвращает транспонированную матрицу.



Max

m.max()

Возвращает максимальный элемент матрицы.



Min

m.min()

Возвращает минимальный элемент матрицы.



IndexOf

m.indexOf(value)

Возвращает позицию указанного элемента матрицы или ноль.



Diagonal

m.diagonal()

Возвращает диагональ матрицы.



Det или determinant

m.determinant() или m.det()

Возвращает определитель матрицы.



IsSingular

m.isSingular()

Возвращает true, если определитель матрицы равен нулю.



Tr или trace

m.trace() или m.tr()

Возвращает сумму элементов диагонали матрицы.



Inverse

m.inverse()

Возвращает обратную матрицу.



View

m.view()

Возвращает строковое представление матрицы.



rand

m.rand ()

Возвращает матрицу, заполненную случайными числами.





Класс v3



Статические методы класса:

set

v3.set(els)

Возвращает матрицу 4х4, содержащую указанные элементы.



Методы экземпляра класса:

v=new v3(els);



setElements

v.setElements(vector)

Устанавливает элементы вектора.



add

v.add(vector)

Складывает два вектора.



sub

v.sub(vector)

Вычитает два вектора.



mul

v.mul(vector)

Перемножает два вектора.



length

v.length()

Возвращает корень квадратный из суммы квадратов элементов вектора.



dot

v.dot(vector)

Возвращает скалярное произведение двух векторов.



normalize

v.normalize()

Нормализует вектор путем умножения его элементов на величину обратную его длине l = 1/Math.sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]).