T.M. SoftStudio

feci quod potui, faciant meliora potentes

Программный интерфейс Sylvester API


Библиотека Sylvester (http://sylvester.jcoglan.com/) обеспечивает моделирование векторов и матриц различных размеров.

Программный интерфейс Sylvester API состоит из классов Vector, Matrix, Line и Plane.


Класс Vector представляет вектор в n-размерном пространстве, объект которого можно создать с помощью конструктора класса или используя статические методы класса Vector.

К созданному вектору могут быть применены методы, обеспечивающие операции сложения, произведения и вычитания двух векторов, а также возвращающие различные свойства вектора.


Класс Matrixпредставляет матрицу (n x m), объект которой можно создать с помощью конструктора класса или используя статические методы класса Matrix.

К созданной матрице могут быть применены методы, обеспечивающие операции сложения, сращивания, произведения и вычитания двух матриц, операции преобразования, а также возвращающие различные свойства матрицы, такие как ее определитель, размеры, диагональ, ранг и элементы.


Класс Line представляет бесконечную линию, характеризующуюся якорем и направлением, объект которой можно создать с помощью конструктора класса или используя статические методы класса Line.

К созданной линии могут быть применены методы, обеспечивающие операции сравнения с другими линиями, векторами и плоскостями.


Класс Plane представляет плоскость, характеризующуюся якорем и нормалью, объект которой можно создать с помощью конструктора класса или используя статические методы класса Plane.

К созданной плоскости могут быть применены методы, обеспечивающие операции сравнения с другими линиями, векторами и плоскостями.


Класс Vector



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

  • Vector.create(elements) (вместо Vector можно использовать $V) — создает вектор из массива:

var v = Vector.create([6,2,9]);


  • Vector.i, Vector.j, Vector.k — создают единичные векторы:



  • Vector.Random(n) — создает случайный n-размерный вектор со значениями от 0 до 1.

  • Vector.Zero(n) — создает n-размерный пустой вектор.



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

  • add(vector) — складывает два одноразмерных вектора.

  • angleFrom(vector) — возвращает угол между двумя одноразмерными векторами.

  • cross(vector) — возвращает векторное произведение двух трехмерных векторов.

  • dimensions() - возвращает размерность векторов.

  • distanceFrom(vector) – вычитает два вектора:

a.distanceFrom(b) эквивалентно |a − b|


  • dot(vector) — возвращает скалярное произведение двух векторов.

  • dup() - возвращает копию вектора.

  • e(i) — возвращает элемент вектора по его индексу, начиная с 1.

  • each(iterator) — обеспечивает итератор вектора:

$V([4,9,3,6]).each(function(x, i) {

alert(i + ': ' + x);

});


  • eql(vector) — возвращает true, если два вектора равны.

  • indexOf(x) — возвращает позицию элемента, равного х.

  • inspect() - возвращает строковое представление вектора.

  • isAntiparallelTo(vector) — возвращает true, если угол между векторами равен 180 гр.

  • isParallelTo(vector) — возвращает true, если угол между векторами равен 0.

  • isPerpendicularTo(vector) — возвращает true, если угол между векторами равен 90 гр.

  • liesIn(plane) — возвращает true, если трехмерный вектор является точкой плана Plane.

  • liesOn(line) — возвращает true, если трехмерный вектор является точкой линии Line.

  • map(iterator):

var c = a.map(function(x, i) { return x + i; });


  • max() - возвращает наибольший элемент вектора.

  • modulus() - возвращает модуль вектора.

  • multiply(k) или x(k) — умножает элементы вектора на к.

  • reflectionIn(object) — a.reflectionIn(b) возвратит b + (b − a).

  • rotate(angle, axis) — вращает вектор вокруг оси. Для двухмерного вектора:

var a = $V([10,5]);

var b = $V([5,5]);

var c = a.rotate(Math.PI/2, b);

// c is the point (5,10)

Для трехмерного вектора ось должна быть линией Line.



  • round() - округляет элементы вектора.

  • setElements(els) – устанавливает элементы вектора согласно массива els.

  • snapTo(x) — устанавливает элементы, близкие к х в значение х.

  • subtract(vector) — вычитает два вектора.

  • to3D() - приводит двухмерный вектор к трехмерному с дополнительным элементом 0.

  • toDiagonalMatrix() - приводит вектор к матрице Matrix, диагональю которой служат элементы вектора.

  • toUnitVector() - возвращает вектор, модуль которого равен 1.



Класс Matrix



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

  • Matrix.create(elements) (вместо Matrix можно использовать $M) — создает матрицу из двухмерного массива:

var M = $M([

[8,3,9],

[2,0,7],

[1,9,3]

]);


  • Matrix.Diagonal(elements) — создает диагональную матрицу из одномерного массива:

var D = Matrix.Diagonal([4,3,7,1]);


4 0 0 0

0 3 0 0

0 0 7 0

0 0 0 1


  • Matrix.I(n) — создает n-размерную единичную матрицу.

  • Matrix.Random(n, m) — создает (n x m) матрицу, заполненную случайными числами от 0 до 1.

  • Matrix.Rotation(angle [, axis]) — с одним аргументом возвращает 2х2 матрицу вращения против часовой стрелки, с двумя аргументами возвращает 3х3 матрицу вращения вокруг оси, представленной 3-х мерным вектором.

  • Matrix.RotationX(angle), Matrix.RotationY(angle), Matrix.RotationZ(angle) — возвращают 3х3 матрицу вращения вокруг осей X,Y,Z.

  • Matrix.Zero(n, m) — создает (n x m) нулевую матрицу.



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

  • add(matrix) — складывает две матрицы.

  • augment(matrix) — сращивает две матрицы:

var M = $M([

[8,3,0],

[4,4,2],

[9,1,5]

]).augment(Matrix.I(3));


8 3 0 1 0 0

4 4 2 0 1 0

9 1 5 0 0 1


  • canMultiplyFromLeft(matrix) — возвращает true, если две матрицы могут быть перемножены.

  • col(j) — возвращает j-й столбец матрицы в виде вектора Vector.

  • сols() - возвращает число столбцов матрицы.

  • determinant() или det() - для квадратной матрицы возвращает ее определитель.

  • diagonal() - для квадратной матрицы возвращает ее диагональ в виде вектора Vector.

  • dimensions() - возвращает размеры матрицы:

var dims = Matrix.Zero(4,3).dimensions();

// dims : {rows: 4, cols: 3}


  • dup() - возвращает копию матрицы.

  • e(i, j) — возвращает элемент матрицы.

  • eql(matrix) — возвращает true, если две матрицы равны.

  • indexOf(x) — возвращает позицию элемента, равного х:

var foo = $M([

[0,9,4],

[9,5,8],

[1,5,3]

]).indexOf(9);


// foo : {row: 1, col: 2}


  • inspect() - возвращает строковое представление матрицы.

  • inverse() или inv() - для квадратной матрицы возвращает обратную матрицу.

  • isSameSizeAs(matrix) — возвращает true, если матрицы одинаковых размеров.

  • isSingular() - возвращает true, если определитель квадратной матрицы равен 0.

  • isSquare() - возвращает true, если матрица квадратная.

  • map(iterator) — связывает две матрицы:

var is_sym = (A.map(

function(x, i, j) { return (A.e(i,j) == A.e(j,i)) ? 1 : 0; }

).indexOf(0) === null);


  • max() - возвращает максимальный элемент матрицы.

  • minor(i, j, n, m) — возвращает подматрицу, начинающуюся с i, j элемента и имеющую размеры n х m.

  • multiply(object) или x(k) — перемножает на матрицу, вектор и скаляр.

  • rank() или rk() - возвращает ранг матрицы.

  • round() - округляет элементы матрицы.

  • row(i) — возвращает строку матрицы как вектор Vector.

  • rows() - возвращает количество строк матрицы.

  • setElements(elements) — устанавливает элементы матрицы из двухмерного массива.

  • snapTo(x) — устанавливает элементы, близкие к х в значение х.

  • subtract(matrix) — вычитает две матрицы.

  • toRightTriangular() или toUpperTriangular() - преобразует матрицу в треугольную матрицу.

  • trace() или tr() - для квадратной матрицы возвращает сумму элементов диагонали.

  • transpose() - заменяет строки на столбцы.



Класс Line



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

  • Line.create(anchor, direction) (вместо Line можно использовать $L) — создает бесконечную прямую линию по двум точкам:

var A = Line.create([4,8], [1,5]);

var B = Line.create($V([4,8]), $V([1,5]));

var C = Line.create([9,2,5], $V([8,2,0]));


  • Line.X, Line.Y, Line.Z — линии, представленные осями координат.



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

  • contains(point) — возвращает true, если линия содержит вектор.

  • distanceFrom(obj) — возвращает расстояние до линии, плоскости и вектора Line, Plane, Vector.

  • dup() - возвращает копию линии.

  • eql(line) — возвращает true, если две линии равны, при этом параметр anchor должен быть точкой другой линии.

  • intersectionWith(obj) — возвращает вектор Vector, представляющий точку пересечения линии с линией или плоскостью Line или Plane.

  • intersects(obj) — возвращает true, если линия пересекается с линией или плоскостью Line или Plane.

  • isParallelTo(line) — возвращает true, если две линии параллельны.

  • liesIn(plane) — возвращает true, если линии лежит в плоскости.

  • pointClosestTo(obj) — возвращает точку Vector, наиболее близкую к вектору или линии.

  • reflectionIn(obj) — возвращает линию, отраженную в линии, векторе или плоскости.

  • rotate(angle, axis) — вращает линию вокруг оси:

var L = Line.X.rotate(Math.PI/2, $V([5,0]));


  • setVectors(anchor, direction) — устанавливает свойства линии.

  • translate(vector) — перемещает линию.



Класс Plane



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

  • Plane.create(anchor, v1 [, v2]) — создает плоскость, содержащую точку anchor и нормаль v1 или v1 × v2.

  • Plane.XY, Plane.XZ, Plane.YX, Plane.YZ, Plane.ZX, Plane.ZY — создают плоскости, представленные плоскостями системы координат.



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

  • contains(obj) — возвращает true, если линия или вектор Line или Vector лежат в плоскости.

  • distanceFrom(obj) — возвращает расстояние до линии, плоскости или вектора Line, Plane, Vector.

  • dup() - возвращает копию плоскости.

  • eql(plane) — возвращает true, если плоскости равны, при этом якорь должен лежать в другой плоскости.

  • intersectionWith(obj) — возвращает вектор или линию, представляющие пересечение с линией или плоскостью.

  • intersects(obj) — возвращает true, если есть пересечение с линией или плоскостью.

  • isParallelTo(obj) — возвращает true, если плоскость параллельна линии или плоскости.

  • isPerpendicularTo(plane) — возвращает true, если плоскость перпендикулярна другой плоскости.

  • pointClosestTo(point) — возвращает точку Vector, наиболее близкую к другой точке.

  • reflectionIn(obj) — возвращает плоскость отражения в линии, плоскости или векторе Line, Plane, Vector.

  • rotate(angle, axis) — вращает плоскость вокруг линии.

  • setVectors(anchor, v1 [, v2]) — устанавливает свойства плоскости.

  • translate(vector) — перемещает плоскость.