Three.js

Three.js

Математика

В этом разделе рассматриваются некоторые объекты и функции, имеющие отношение к математике.

Box2

Представляет собой ограниченный прямоугольник в двумерном пространстве.

Конструктор

Box2( 
сокращ. от англ. слова minimum - минимум');" onmouseout="hide()">min
,
сокращ. от англ. слова maximum - максимум');" onmouseout="hide()">max
)
min - двумерный вектор (Vector2), представляющий нижнюю границу (x, y) прямоугольника, дополнительный, необязательный параметр. Значением по умолчанию является ( +Infinity, +Infinity ).
max - двумерный вектор (Vector2), представляющий верхнюю границу (x, y) прямоугольника, дополнительный, необязательный параметр. Значением по умолчанию является ( -Infinity, -Infinity ).
Создает прямоугольник, ограниченный по min и max.

Свойства



сокращ. от англ. слова minimum - минимум');" onmouseout="hide()">.min
Двумерный вектор (Vector2), представляющий нижнюю границу (x, y) прямоугольника. Значением по умолчанию является ( +Infinity, +Infinity ).


сокращ. от англ. слова maximum - максимум');" onmouseout="hide()">.max
Двумерный вектор (Vector2), представляющий верхнюю границу (x, y) прямоугольника. Значением по умолчанию является ( -Infinity, -Infinity ).

Методы



clamp point - зажать (закрепить) точку');" onmouseout="hide()">.clampPoint
(
point - точка');" onmouseout="hide()">point
,
optional target - дополнительная цель');" onmouseout="hide()">optionalTarget
)

point - точка')" onmouseout="hide()">point
- двумерный вектор (Vector2), который нужно закрепить.

optional target - дополнительная цель')" onmouseout="hide()">optionalTarget
— если этот параметр указан, то результат будет скопирован в данный двумерный вектор (Vector2), в противном случае будет создан новый Vector2. Дополнительный, необязательный параметр.
Метод зажимает точку внутри границ заданного прямоугольника.
Примечание переводчика: Вот перевод вышеприведенной статьи из английской Википедии
В компьютерной графике, зажим (clamping) - это процесс ограничения (фиксации) местоположения в какой-либо области. В отличие от упаковки (wrapping'а), зажим (clamping) просто перемещает точку к ближайшему доступному значению.
В общем случае, зажим (clamping) используется для ограничения значения в заданном диапазоне. Например, в OpenGL glClearColor принимает значение GLclampf, которым является число gl с плавающей запятой, «зажатое» в диапазоне [0,1].
Одно из многих применений зажима (clamping'а) в компьютерной графике является размещение некоей детали в полигоне - например, отверстие от пули в стене. Также зажим может использоваться для создания различных эффектов.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает новый Box2 с теми же самыми значениями min и max как у этого.

.containsBox( 
box - коробка, ящик, клетка')" onmouseout="hide()">box
)
Возвращает значение true, если в данный прямоугольник включен целиком прямоугольник, указанный в параметре box. Если данный прямоугольник и указанный в параметре box одинаковы, эта функция также возвратит значение true.

.containsPoint( 
point - точка')" onmouseout="hide()">point
)

point - точка')" onmouseout="hide()">point
- двумерный вектор (Vector2) для проверки на включение.
Возвращает значение true, если точка, указанная в параметре
point - точка')" onmouseout="hide()">point
, лежит внутри или на границах данного прямоугольника.

.copy( box )
Копирует значения min и max из прямоугольника указанного в box в данный прямоугольник.

.distanceToPoint( point )
point - двумерный вектор (Vector2) до которого измеряется расстояние.
Метод возвращает расстояние от любого края данного прямоугольника до указанной точки. Если точка (point) лежит внутри данного прямоугольника, то расстояние будет равно 0.

.equals( box )
box - прямоугольник для сравнения с данным прямоугольником.
Возвращает значение true, если данный прямоугольник и прямоугольник box имеют одни и теже нижние и верхние границы.

.expandByPoint( point )
point - вектор (Vector2), который должен быть включен в этот прямоугольник.
Расширяет границы данного прямоугольника для включения точки point.

.expandByScalar ( scalar )
scalar - Distance to expand the box by.
Expands each dimension of the box by scalar. If negative, the dimensions of the box will be contracted.

.expandByVector ( vector )
vector - Vector2 to expand the box by.
Expands this box equilaterally by vector. The width of this box will be expanded by the x component of vector in both directions. The height of this box will be expanded by the y component of vector in both directions.

.getCenter ( optionalTarget )
optionalTarget — если этот параметр указан, то результат будет скопирован в данный двумерный вектор (Vector2), в противном случае будет создан новый Vector2. Дополнительный, необязательный параметр.
Returns the center point of the box as a Vector2.

.getParameter ( point, optionalTarget )
point - Vector2.
optionalTarget — если этот параметр указан, то результат будет скопирован в данный двумерный вектор (Vector2), в противном случае будет создан новый Vector2. Дополнительный, необязательный параметр.
Returns a point as a proportion of this box's width and height.

.getSize( optionalTarget )
optionalTarget — если этот параметр указан, то результат будет скопирован в данный двумерный вектор (Vector2), в противном случае будет создан новый Vector2. Дополнительный, необязательный параметр.
Возвращает ширину и высоту данного прямоугольника.

.intersect( box )
box - Box to intersect with.
Returns the intersection of this and box, setting the upper bound of this box to the lesser of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes' lower bounds.

.intersectsBox( box )
box - прямоугольник для проверки на наличие пересечения.
Определяет, пересекается ли данный прямоугольник с прямоугольником box.

.isEmpty( )
Метод возвращает значение true, если данный прямоугольник содержит нулевые точки внутри своих границ if this box includes zero points within its bounds.
Обратите внимание, что прямоугольник с одинаковыми нижними и верхними границами все же включает одну точку, которая принадлежит одновременно обоим границам Returns true if this box includes zero points within its bounds. Note that a box with equal lower and upper bounds still includes one point, the one both bounds share.

.makeEmpty( )
Метод делает данный прямоугольник пустым.

.set( min, max )
min - обязательный аргумент. (required ) Vector2 representing the lower (x, y) boundary of the box.
max - обязательный аргумент. (required) Vector2 representing the lower upper (x, y) boundary of the box.
Sets the lower and upper (x, y) boundaries of this box.

.setFromCenterAndSize( center, size )
center - Desired center position of the box (Vector2).
size - Desired x and y dimensions of the box (Vector2).
Centers this box on center and sets this box's width and height to the values specified in size.

.setFromPoints( points )
points - массив из двумерных векторов (Vector2), которые будет содержать получающийся прямоугольник.
Устанавливает верхние и нижние границы данного прямоугольника так, что в него будут входить все точки, указанные в points.

.translate ( offset )
offset - направление и расстояние смещения.
Добавляет смещение к обоим, верхней и нижней, границам данного прямоугольника, фактически перемещая этот прямоугольник Adds offset to both the upper and lower bounds of this box, effectively moving this box offset units in 2D space.

.union ( box )
box - прямоугольник, который будет объединен с данным прямоугольником.
Метод объединяет данный прямоугольник с прямоугольником, представленным в параметре box, устанавливая верхнюю границу данного прямоугольника выше верхних границ обоих прямоугольников, а нижнюю границу этого прямоугольника ниже нижних границ обоих прямоугольников. Unions this box with box, setting the upper bound of this box to the greater of the two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes' lower bounds.

Исходники



Box3

Представляет собой прямоугольный параллелепипед или куб в 3-мерном пространстве. Основное назначение данного класса - представление прямоугольного параллелепипеда со сторонами, параллельными осям координат (в англоязычном варианте это Minimum Bounding Boxes), для ограничения некоторых геометрических объектов в пространстве.

Конструктор

Box3( min, max )
min - трехмерный вектор (Vector3), представляющий нижнюю границу (x, y, z) прямоугольника, дополнительный, необязательный параметр. Значением по умолчанию является ( +Infinity, +Infinity, +Infinity ).
max - трехмерный вектор (Vector3), представляющий верхнюю границу (x, y, z) прямоугольника, дополнительный, необязательный параметр. Значением по умолчанию является ( -Infinity, -Infinity, -Infinity ).
Создает Box3, с границами по min и max.

Свойства


.isBox3
Свойство используется для проверки, является ли данный и производные от него классы Box3-ами. Значением по умолчанию является true.
Его нельзя изменять, так как оно используется внутри three.js для оптимизации.

.min
Трехмерный вектор (Vector3), представляющий нижнюю границу (x, y, z) Box3. Значением по умолчанию является ( +Infinity, +Infinity, +Infinity ).

.max
Трехмерный вектор (Vector3), представляющий верхнюю границу (x, y, z) Box3. Значением по умолчанию является ( -Infinity, -Infinity, -Infinity ).

Методы


.applyMatrix4( matrix )
matrix - The Matrix4 to apply
Метод преобразует данный Box3 Transforms this Box3 with the supplied matrix.

.clampPoint ( point, optionalTarget )
point - трехмерный вектор (Vector2), который нужно зафиксировать.
optionalTarget — если этот параметр указан, то результат будет скопирован в данный трехмерный вектор (Vector3), в противном случае будет создан новый Vector3. Дополнительный, необязательный параметр.
Метод зажимает точку внутри границ заданного прямоугольника.
Примечание переводчика: Вот перевод вышеприведенной статьи из английской Википедии
В компьютерной графике, зажим (clamping) - это процесс ограничения (фиксации) местоположения в какой-либо области. В отличие от упаковки (wrapping'а), зажим (clamping) просто перемещает точку к ближайшему доступному значению.
В общем случае, зажим (clamping) используется для ограничения значения в заданном диапазоне. Например, в OpenGL glClearColor принимает значение GLclampf, которым является число gl с плавающей запятой, «зажатое» в диапазоне [0,1].
Одно из многих применений зажима (clamping'а) в компьютерной графике является размещение некоей детали в полигоне - например, отверстие от пули в стене. Также зажим может использоваться для создания различных эффектов.

.clone( )
Возвращает новый Box3 с теми же самыми значениями min и max как у этого.

.containsBox ( box )
box - параллелепипед Box2 для проверки на включение.
Возвращает значение true, если в данный параллелепипед включен целиком параллелепипед, указанный в параметре box. Если данный параллелепипед и указанный в параметре box одинаковы, эта функция также возвратит значение true.

.containsPoint ( point )
point - трехмерный вектор (Vector3) для проверки на включение.
Возвращает значение true, если точка, указанная в параметре point, лежит внутри или на границах данного параллелепипеда.

.copy ( box )
Копирует значения min и max из параллелепипеда указанного в box в данный параллелепипед.

.distanceToPoint( point )
point - трехмерный вектор (Vector3) до которого измеряется расстояние.
Метод возвращает расстояние от любого края данного параллелепипеда до указанной точки. Если точка (point) лежит внутри данного параллелепипеда, то расстояние будет равно 0.

.equals( box )
box - параллелепипед для сравнения с данным параллелепипедом.
Возвращает значение true, если данный параллелепипед и параллелепипед box имеют одни и теже нижние и верхние границы.

.expandByObject( object )
object - Object3D, под который нужно расширить параллелепипед.
Расширяет границы данного параллелепипеда, чтобы включить объект с его дочерними объектами с учетом их глобальных преобразований. Expands the boundaries of this box to include object and its children, accounting for the object's, and children's, world transforms.

.expandByPoint( point )
point - вектор (Vector3), который должен быть включен в этот параллелепипед.
Расширяет границы данного параллелепипеда для включения точки point.

.expandByScalar( scalar )
scalar - Distance to expand the box by.
Expands each dimension of the box by scalar. If negative, the dimensions of the box will be contracted.

.expandByVector( vector )
vector - Vector3 to expand the box by.
Expands this box equilaterally by vector. The width of this box will be expanded by the x component of vector in both directions. The height of this box will be expanded by the y component of vector in both directions. The depth of this box will be expanded by the z component of vector in both directions.

.getBoundingSphere( optionalTarget )
optionalTarget — (optional) if specified, the result will be copied into this Sphere, otherwise a new Sphere will be created.
Gets a Sphere that bounds the box.

.getCenter( optionalTarget )
optionalTarget — если этот параметр указан, то результат будет скопирован в данный трехмерный вектор (Vector3), в противном случае будет создан новый Vector3. Дополнительный, необязательный параметр.
Метод возвращает центральную точку параллелепипеда в виде трехмерного вектора Vector3.

.getParameter( point, optionalTarget )
point - трехмерный вектор (Vector3).
optionalTarget — если этот параметр указан, то результат будет скопирован в данный трехмерный вектор (Vector3), в противном случае будет создан новый Vector3. Дополнительный, необязательный параметр.
Returns a point as a proportion of this box's width and height.

.getSize( optionalTarget )
optionalTarget — если этот параметр указан, то результат будет скопирован в данный двумерный вектор (Vector3), в противном случае будет создан новый Vector3. Дополнительный, необязательный параметр.
Возвращает ширину и высоту данного прямоугольника.

[method:Box3 set( [page:Vector3 min, [page:Vector3 max )
min -- Lower (x, y, z) boundary of the box.
max -- Upper (x, y, z) boundary of the box.
Sets the lower and upper (x, y, z) boundaries of this box.
[method:Boolean intersectsBox( [page:Box3 box ) [page:Box3 this
box -- Box to check for intersection against.
Determines whether or not this box intersects *box*.

[method:Box3 setFromObject( [page:Object3D object )

object -- [page:Object3D to compute the bounding box for.
Computes the world-axis-aligned bounding box of an object (including its children), accounting for both the object's, and childrens', world transforms

[method:Box3 intersect( [page:Box3 box )

box -- Box to intersect with.
Returns the intersection of this and *box*, setting the upper bound of this box to the lesser
of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes'
lower bounds.

[method:Boolean isEmpty()

Returns true if this box includes zero points within its bounds.
Note that a box with equal lower and upper bounds still includes one point, the one both bounds share.

[method:Box3 makeEmpty()

Makes this box empty.

[method:Vector3 center( [page:Vector3 optionalTarget )

optionalTarget -- If specified, the result will be copied here.
Returns the center point of this box.
[method:Box3 setFromCenterAndSize( [page:Vector3 center, [page:Vector3 size )
center -- Desired center position of the box.
size -- Desired x, y and z dimensions of the box.
Centers this box on *center* and sets this box's width, height and depth to the values specified in *size*.
.setFromPoints( points )
points - массив из трехмерных векторов (Vector3), которые будет содержать получающийся прямоугольник.
Устанавливает верхние и нижние границы данного параллелепипеда так, что в него будут входить все точки, указанные в points.

.translate ( offset )
offset - направление и расстояние смещения.
Добавляет смещение к обоим, верхней и нижней, границам данного прямоугольника, фактически перемещая этот прямоугольник Adds offset to both the upper and lower bounds of this box, effectively moving this box offset units in 2D space.

.union ( box )
box - прямоугольный параллелепипед, который будет объединен с данным прямоугольным параллелепипедом.
Метод объединяет данный прямоугольник с прямоугольником, представленным в параметре box, устанавливая верхнюю границу данного параллелепипеда по наибольшей из верхних границ обоих параллелепипедов, а нижнюю границу этого параллелепипеда по наименьшей из нижних границ обоих параллелепипедов.

Исходники



Color

Класс представляющий цвет.

Пример

Класс Color может быть инициализирован любым из следующих способов:
// empty constructor - will default white
// пустой конструктор - по умолчанию цвет будет белым
var color = new THREE.Color();
// Hexadecimal color (recommended) // шестнадцатиричное значение цвета (рекомендуется) var color = new THREE.Color( 0xff0000 );
// RGB string // строковое RGB значение var color = new THREE.Color("rgb(255, 0, 0)"); var color = new THREE.Color("rgb(100%, 0%, 0%)");
// X11 color name - all 140 color names are supported. // Note the lack of CamelCase in the name // название цвета X11 - поддерживаются все 140 названий цвета. // обратите внимание, в названии цвета отсутствует CamelCase - верблюжий стиль var color = new THREE.Color( 'skyblue' );
// HSL string // строковое значение HSL var color = new THREE.Color("hsl(0, 100%, 50%)");
// Separate RGB values between 0 and 1 // отдельные значения RGB от 0 до 1 var color = new THREE.Color( 1, 0, 0 );

Конструктор

Color( r, g, b )
r - (дополнительный, необязательный параметр) если указаны аргументы g и b, то данный аргумент определяет красный компонент цвета. Если их нет, это может быть либо шестнадцатиричное значение цвета (рекомендуется) (у автора здесь hexadecimal triplet), либо строковое значение цвета в стиле CSS, либо другой экземпляр Color. Вот статья Википедии о цвете в HTML на русском языке.
g - (дополнительный, необязательный параметр), если указан, то определяет зеленый компонент цвета.
b - (дополнительный, необязательный параметр), если указан, то определяет синий компонент цвета.
Цвет по умолчанию - белый (white).
Если указаны все аргументы, то r будет красным компонентом, g - зеленым, а b будет синим компонентом цвета.
Когда установлен только аргумент r, то:
  • это может быть шестнадцатиричное значение цвета (рекомендуется к применению).
  • это может быть другой экземпляр цвета.
  • это может быть строковое значение стиля CSS, например:
    'rgb(250, 0,0)'
    'rgb(100%,0%,0%)'
    'hsl(0, 100%, 50%)'
    '#ff0000'
    '#f00'
    'red'

Свойства


.isColor
Свойство используется для проверки, является ли данный и производные от него классы цветом. Значением по умолчанию является true.
Его нельзя изменять, так как оно используется внутри three.js для оптимизации.

.r
Значение красного канала цвета, от 0 до 1. По умолчанию равно 1.

.g
Значение зеленого канала цвета, от 0 до 1. По умолчанию равно 1.

.b
Значение синего канала цвета, от 0 до 1. По умолчанию равно 1.

Методы


.add( color )
Метод выполняет сложение RGB значений цвета, переданного в параметре color, со RGB значениями данного цвета.

.addColors( color1, color2 )
Sets this color's RGB values to the sum of the RGB values of color1 and color2.

.addScalar( s )
Adds s to the RGB values of this color.

.clone( )
Метод возвращает новый экземпляр класса Color с теми же самыми значениями r, g и b как у данного.

.convertGammaToLinear( )
Метод конвертирует данный цвет из гамма-пространства в линейное возведением в квадрат значений r, g и b. Converts this color from gamma to linear space by squaring the values of r, g and b ).

.convertLinearToGamma( )
Метод конвертирует данный цвет из линейного в гамма-пространство с помощью извлечения квадратного корня из значений r, g и b. Converts this color from linear to gamma space by taking the square root of r, g and b).

.copy( color )
Метод копирует параметры r, g и b цвета, переданного в аргументе color, в данный цвет.

.copyGammaToLinear( color, gammaFactor )
color — Color to copy.
gammaFactor - (optional). Значение по умолчанию равно 2.0.
Copies the given color into this color while converting it from gamma to linear space by taking r, g and b to the power of gammaFactor.

.copyLinearToGamma( color, gammaFactor )
color — Color to copy.
gammaFactor - (optional). Значение по умолчанию равно 2.0.
Copies the given color into this color while converting it from linear to gamma space by taking r, g and b to the power of 1 / gammaFactor.
.equals( color )
Метод сравнивает значения RGB, переданные в аргументе color с такими же значениями данного объекта. Если они одинаковы, возвращается значение true, в противном случае возвращается значение false.

.fromArray( array, offset )
array - массив чисел с плавающей запятой в форме [ .r, .g, .b ].
offset - дополнительное смещение в массиве.
Метод устанавливает компоненты данного цвета основываясь на массиве в формате [ .r, .g, .b ].

.getHex( )
Возвращает шестнадцатиричное значение данного цвета.

.getHexString( )
Метод возвращает шестнадцатиричное значение данного цвета в виде строки (например, 'FFFFFF').

.getHSL( optionalTarget )
optionalTarget — (optional) if specified, adds h, s and l keys to the object (if not already present) and sets the results there. Otherwise, a new Object will be created.
Конвертирует значения r, g и b данного цвета в формат HSL и возвращает объект в виде { h:0, s:0, l:0 }.
Вот статья Википедии о HSL на русском языке

.getStyle( )
Возвращает значение данного цвета в виде строки CSS стиля. Пример: 'rgb(255,0,0)'.

.lerp( color, alpha )
color - цвет, с которым производится сближение.
alpha - коэффициент интерполяции в закрытом интервале [0, 1].
Метод выполняет операцию линейного интерполирования между значениями RGB данного цвета и RGB значениям цвета, переданного в аргументе color. Аргумент alpha можно рассматривать как соотношение между двумя цветами, где 0.0 означает данный цвет, а 1.0 - цвет, переданный в первом аргументе.

.multiply( color )
Умножает значения RGB данного цвета на значения RGB цвета, переданного в аргументе color.

.multiplyScalar( s )
Метод умножает значения RGB данного цвета на число, переданное в аргументе s.

.offsetHSL( h, s, l )
Метод добавляет значения h, s, и l к значениям данного цвета. Внутри же метода, вначале конвертируются значения r, g и b в HSL, добавляются значения h, s, и l, а затем цвет конвертируется обратно в RGB.

.set( value )
value - значение для установки в данный цвет.
Более подробную информацию о том, какое значение может быть указано в аргументе value, см. в разделе Конструктор. В зависимости от введенного типа, выполнение передается методам copy, setStyle, или setHex.

.setHex( hex )
hex — значение цвета в шестнадцатиричном формате (у автора здесь hexadecimal triplet). Вот статья Википедии о цвете в HTML на русском языке.
Метод устанавливает значение данного цвета из шестнадцатиричного значения, переданного в параметре hex.

.setHSL( h, s, l )
h — значение оттенка цвета в диапазоне от 0.0 до 1.0.
s — значение насыщенности цвета в диапазоне от 0.0 до 1.0.
l — значение яркости цвета в диапазоне от 0.0 до 1.0.
Метод устанавливает данный цвет из значений HSL.

.setRGB( r, g, b )
r — значение красного канала в диапазоне от 0.0 до 1.0.
g — значение зеленого канала в диапазоне от 0.0 до 1.0.
b — значение синего канала в диапазоне от 0.0 до 1.0.
Метод устанавливает данный цвет из значений RGB.

.setScalar( scalar )
scalar — значение в диапазоне между 0.0 и 1.0.
Метод устанавливает все три компонента цвета равными значению, переданному в параметре scalar.

.setStyle( style )
style — строковое значение в стиле CSS в качестве значения цвета.
Метод устанавливает данный цвет из строкового значения в стиле CSS. Например, "rgb(250, 0,0)", "rgb(100%, 0%, 0%)", "hsl(0, 100%, 50%)", "#ff0000", "#f00" или "red" (или любое название цвета из цветовой схемы X11 - поддерживаются все 140 названий цвета). Вот эта страничка Википедии о цвете из схемы X11 на русском языке.
Также принимаются полупрозрачные цвета, такие как "rgba(255, 0, 0, 0.5)" и "hsla(0, 100%, 50%, 0.5)", но значение альфа-канала (канал прозрачности) отбрасывается.
Обратите внимание, что названия цвета в схеме X11, состоящие из нескольких слов, вроде Dark Orange (темно-оранжевый), становятся строковым значением 'darkorange' (все буквы строчные).

.sub( color )
Метод вычитает из RGB компонентов данного цвета компоненты RGB цвета, переданного в параметре color. Если в результате получается отрицательное значение компонента, этот компонент устанавливается равным нулю.

.toArray( array, offset )
array - дополнительный массив для хранения значений цвета.
offset - дополнительное смещение в массиве.
Метод возвращает массив в виде [ r, g, b ].

Исходники



Cylindrical

Координаты точки в цилиндрической системе координат.
Цилиндрическая система координат на русском языке.

Конструктор

Cylindrical( radius, theta, y )
radius - расстояние от начала координат до точки в плоскости x-z. Значение по умолчанию равно 1.0.
theta - угол против часовой стрелки в плоскости x-z, измеренный в радианах от положительной оси z. Значение по умолчанию равно 0.
y - высота над плоскостью x-z. Значение по умолчанию равно 0.

Свойства


Методы


.clone( )
Метод возвращает новый cylindrical с теми же самыми свойствами radius, theta и y как у данного.

.copy( other )
Метод копирует значения свойств radius, theta и y Cylindrical, переданного в аргументе other, в данный cylindrical.

.set( .radius, .theta, .y )
Устанавливает значения свойств radius, theta и y данного Cylindrical.

.setFromVector3( vec3 )
Устанавливает значения свойств radius, theta и y данного Cylindrical из трехмерного вектора, переданного в аргументе vec3.
Значение свойства radius устанавливается как длина вектора от начала координат, измеряемая вдоль плоскости x-z, тогда как значение свойства theta устанавливается по его направлению на плоскости x-z, а значение свойства y задается из y-компоненты вектора.

Исходники



Euler

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

Пример

var a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );
var b = new THREE.Vector3( 1, 0, 1 );
b.applyEuler(a);

Конструктор

Euler( x, y, z, order )
x -- угол по оси x в радианах. Дополнительный, необязательный параметр, значение по умолчанию равно 0.
y -- угол по оси y в радианах. Дополнительный, необязательный параметр, значение по умолчанию равно 0.
z -- угол по оси z в радианах. Дополнительный, необязательный параметр, значение по умолчанию равно 0.
order -- строковое значение, представляющее порядок применения вращения. Дополнительный, необязательный параметр, значением по умолчанию является XYZ (символы должны быть в верхнем регистре).

Свойства


.isEuler
Свойство используется для проверки, является ли данный класс и производные от него классы Eulers. Значением по умолчанию является true.
Не изменяйте это свойство, так как оно используется для оптимизации внутри three.js.

.order
Порядок (последовательность) применения вращения по осям. Значением по умолчанию является XYZ, которое означает, что вначале объект будет поворачиваться вокруг своей оси X, затем вокруг своей оси Y и наконец, вокруг оси Z. Другие возможные значения: YZX, ZXY, XZY, YXZ и ZYX. Символы должны быть в верхнем регистре.
three.js использует собственные углы Тейта-Брайана. Это значит что вращения выполняются относительно локальной системы координат. То есть, Three.js uses intrinsic Tait-Bryan angles. This means that rotations are performed with respect to the local coordinate system. That is, for order 'XYZ', the rotation is first around the local-X axis (which is the same as the world-X axis), then around local-Y (which may now be different from the world Y-axis), then local-Z (which may be different from the world Z-axis).
Если order изменен, будет вызван метод onChangeCallback.

.x
Текущее значение составляющей угла по оси x.
Если значение изменено, будет вызван метод onChangeCallback.

.y
Текущее значение составляющей угла по оси y.
Если значение изменено, будет вызван метод onChangeCallback.

.z
Текущее значение составляющей угла по оси z.
Если значение изменено, будет вызван метод onChangeCallback.

Методы


.copy ( euler )
Копирует значение из Copies value of euler to this euler.

.clone ()
Возвращает новый Euler с теми же самыми параметрами, как у этого.

.equals ( euler )
Checks for strict equality of this euler and euler.

.fromArray ( array )
array длиной 3 или 4. Дополнительный, необязательный 4-ый аргумент соответствует order.
Assigns this euler's x angle to array[0].
Assigns this euler's y angle to array[1].
Assigns this euler's z angle to array[2].
Optionally assigns this euler's order to array[3].

.onChange( onChangeCallback )
onChangeCallback - set the value of the onChangeCallback() function.

.onChangeCallback( )
By default this is an empty function, however it can be set via onChange(). It gets called after changing the x, y, z or order properties, and also after calling most setter functions (see those for details).

.reorder( newOrder )
Resets the euler angle with a new order by creating a quaternion from this euler angle and then setting this euler angle with the quaternion and the new order.
Предупреждение:WARNING: this discards revolution information.

.set( x, y, z, order )
x - the angle of the x axis in radians.
y - the angle of the y axis in radians.
z - the angle of the z axis in radians.
order - (optional) a string representing the order that the rotations are applied.
Sets the angles of this euler transform and optionally the order and then call onChangeCallback().

.setFromRotationMatrix( m, order, update )
m - a Matrix4 of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).
order - (optional) a string representing the order that the rotations are applied.
update - (optional) whether to call onChangeCallback() after applying the matrix.
Sets the angles of this euler transform from a pure rotation matrix based on the orientation specified by order.

.setFromQuaternion( q, order, update )
q - a normalized quaternion.
order - (optional) a string representing the order that the rotations are applied.
update - (optional) whether to call onChangeCallback() after applying the matrix.
Sets the angles of this euler transform from a normalized quaternion based on the orientation specified by order.

.setFromVector3( vector, order )
vector - Vector3.
order - (optional) a string representing the order that the rotations are applied.
Set the x, y and z, and optionally update the order. onChangeCallback() is called after these changes are made.

.toArray( array, offset )
array - (optional) array to store the euler in.
offset - (optional) offset in the array.
Возвращает массив в виде [ x, y, z, order ].

.toVector3( )
Returns the Euler's x, y and z properties as a Vector3.

Исходники



Frustum

Frustums are used to determine what is inside the camera's field of view. They help speed up the rendering process.
Frustums are used to determine what is inside the camera's field of view. They help speed up the rendering process - object which lie outside a camera's frustum can safely be excluded from rendering.
Статья о усеченной пирамиде в русскоязычной Википедии.
Этот класс в основном предназначен для внутреннего использования визуализатором (рендерером) для расчета усеченных пирамид камеры и теневой камеры. This class is mainly intended for use internally by a renderer for calculating a camera or shadowCamera's frustum.

Конструктор

Frustum( p0, p1, p2, p3, p4, p5 )
p0 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
p1 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
p2 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
p3 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
p4 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
p5 -- дополнительный, необязательный параметр. Значением по умолчанию является новая плоскость.
Создает новый Frustum.

Свойства


.planes
Массив из 6 плоскостей.

Методы


.clone( )
Return a new Frustum with the same parameters as this one.

.containsPoint( point )
point - Vector3 to test.
Checks to see if the frustum contains the point.

.copy( frustum )
frustum - The frustum to copy
Copies the properties of the passed frustum into this one.

.intersectsBox( box )
box - Box3 to check for intersection.
Return true if box intersects with this frustum.

.intersectsObject( object )
Checks whether the object's bounding sphere is intersecting the Frustum. Note that the object must have a Geometry or BufferGeometry so that the bounding sphere can be calculated.

.intersectsSphere( sphere )
sphere - Sphere to check for intersection.
Return true if sphere intersects with this frustum.

.intersectsSprite( sprite )
Checks whether the sprite is intersecting the Frustum.

.set ( p0, p1, p2, p3, p4, p5 )
Sets the current frustum from the passed planes. No plane order is implicitely implied.

.setFromMatrix ( matrix )
matrix - Matrix4 used to set the planes
This is used by the WebGLRenderer to set up the Frustum from a Camera's projectionMatrix and matrixWorldInverse.

Исходники



Interpolant

Abstract base class of interpolants over parametric samples.
The parameter domain is one dimensional, typically the time or a path along a curve defined by the data.
The sample values can have any dimensionality and derived classes may apply special interpretations to the data.
This class provides the interval seek in a Template Method, deferring the actual interpolation to derived classes.
Time complexity is *O(1)* for linear access crossing at most two points and *O(log N)* for random access, where *N* is the number of positions.
References: [link:http://www.oodesign.com/template-method-pattern.html http://www.oodesign.com/template-method-pattern.html

Конструктор

Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
parameterPositions -- array of positions
sampleValues -- array of samples
sampleSize -- number of samples
resultBuffer -- buffer to store the interpolation results.
Примечание: Этот конструктор не предназначен для вызова напрямую.

Свойства


.parameterPositions


.resultBuffer


.sampleValues


.settings
Optional, subclass-specific settings structure.

.valueSize

Методы


.evaluate( t )
Вычисляет интерполяцию на позицию t. Evaluate the interpolant at position t.

Исходники



Interpolant →

CubicInterpolant



Пример

var interpolant = new THREE.[name](
  new Float32Array( 2 ),
  new Float32Array( 2 ),
  1,
  new Float32Array( 1 )
);
interpolant.evaluate( 0.5 );

Конструктор

CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
parameterPositions -- array of positions
sampleValues -- array of samples
sampleSize -- number of samples
resultBuffer -- buffer to store the interpolation results.

Свойства


[property:null parameterPositions


[property:null resultBuffer


[property:null sampleValues


[property:Object settings


[property:null valueSize

Методы


[method:null evaluate( [page:Number t )
Evaluate the interpolant at position *t*.

Исходники



Interpolant →

DiscreteInterpolant



Пример

var interpolant = new THREE.DiscreteInterpolant(
  new Float32Array( 2 ),
  new Float32Array( 2 ),
  1,
  new Float32Array( 1 )
);
interpolant.evaluate( 0.5 );

Конструктор

DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
parameterPositions -- array of positions
sampleValues -- array of samples
sampleSize -- number of samples
resultBuffer -- buffer to store the interpolation results.

Свойства


Методы


.evaluate( t )
Evaluate the interpolant at position t.

Исходники



Interpolant →

LinearInterpolant



Пример

var interpolant = new THREE.LinearInterpolant(
  new Float32Array( 2 ),
  new Float32Array( 2 ),
  1,
  new Float32Array( 1 )
);
interpolant.evaluate( 0.5 );

Конструктор

LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
parameterPositions -- array of positions
sampleValues -- array of samples
sampleSize -- number of samples
resultBuffer -- buffer to store the interpolation results.

Свойства


Методы


.evaluate( t )
Evaluate the interpolant at position t.

Исходники



Interpolant →

QuaternionLinearInterpolant

Пример

var interpolant = new THREE.QuaternionLinearInterpolant(
  new Float32Array( 2 ),
  new Float32Array( 2 ),
  1,
  new Float32Array( 1 )
);
interpolant.evaluate( 0.5 );

Конструктор

QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer )
parameterPositions -- array of positions
sampleValues -- array of samples
sampleSize -- number of samples
resultBuffer -- buffer to store the interpolation results.

Свойства


Методы


.evaluate( t )
Evaluate the interpolant at position t.

Исходники



Line3

Отрезок геометрической линии, представленный начальной (start) и конечной (end) точками.

Конструктор

Line3( start, end )
start -- начало отрезка линии. Значением по умолчанию является (0, 0, 0).
end -- конец отрезка линии. Значением по умолчанию является (0, 0, 0).
Создает новую Line3.

Свойства


.start
Трехмерный вектор (Vector3), представляющий начальную точку линии.

.end
Трехмерный вектор (Vector3), представляющий конечную точку линии.

Методы


.applyMatrix4( matrix )
Метод применяет матричное преобразование к отрезку линии.

.at( t, optionalTarget )
t - используйте значения в диапазоне от 0 до 1 для возврата позиции вдоль отрезка линии.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Метод возвращает вектор в определенной позиции вдоль линии. При t = 0 возвращается начальный вектор, а при t = 1 - конечный вектор.

.clone( )
Возвращает новую Line3 с теми же самыми начальным (start) и конечным (end) векторами, что и у данного.

.closestPointToPoint( point, clampToLine, optionalTarget )
point - return the closest point on the line to this point.
clampToLine - whether to clamp the returned value to the line segment.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Метод возвращает точку на линии, ближайшую к точке, указанной в аргументе point. Если аргумент clampToLine указан как true, то возвращаемое значение будет прижато к отрезку линии. Returns the closest point on the line. If clampToLine is true, then the returned value will be clamped to the line segment.

.closestPointToPointParameter( point, clampToLine )
point - the point for which to return a point parameter.
clampToLine - Whether to clamp the result to the range [0, 1].
Returns a point parameter based on the closest point as projected on the line segement. If clampToLine is true, then the returned value will be between 0 and 1.

.copy( line )
Метод копирует начальный (start) и конечный (end) векторы линии, переданной в аргументе line, в данную линию.

.delta( optionalTarget )
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Метод возвращает дельта-вектор отрезка линии (т.е. конечный вектор - end минус начальный вектор - start).

.distance( )
Метод возвращает эвклидово расстояние (расстояние по прямой) между начальной (start) и конечной (end) точками линии.
Вот статья русскоязычной Википедии о Эвклидовой метрике.

.distanceSq( )
Метод возвращает квадрат эвклидова расстояния (расстояние по прямой) между начальным (start) и конечным (end) векторами линии.
Вот статья русскоязычной Википедии о Эвклидовой метрике.

.equals( line )
line - линия (Line3), которая будет сравниваться с данной линией.
Метод возвращает значение true, если обе (и начальная - start, и конечная - end) точки равны.

.getCenter( optionalTarget )
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Метод возвращает центр отрезка линии.

.set( .start, .end )
.start - вектор, который задает начальную (start) точку линии.
.end - вектор, который задает конечную (end) точку линии.
Метод устанавливает значения начальной и конечной точек линии, копируя их из представленных векторов.

Исходники



Math

Объект с некоторыми вспомогательными математическими функциями.

Функции


.clamp( value, min, max )
value — значение, которое нужно зафиксировать.
min — минимальное значение.
max — максимальное значение.
«Зажимает» (фиксирует) значение, указанное в параметре value в диапазоне значений, заданных в аргументах min и max.

.degToRad ( degrees )
Конвертирует градусы в радианы.

.euclideanModulo ( n, m )
Вычисляет модуль (т.е. наибольший общий делитель - НОД) по алгоритму Евклида из m % n, то есть:
( ( n % m ) + m ) % m
Примечание переводчика: Символ % в JavaScript это оператор взятия остатка от деления.

.generateUUID ( )
Метод создает UUID (универсальный уникальный идентификатор).

.isPowerOfTwo ( n )
Возвращает значение true, если n является степенью числа 2.

lerp( x, y, t )
x -- начальная точка.
y -- конечная точка.
t -- коэффициент интерполяции в заданном интервале [0,1].
Возвращает линейно интерполированное значение для двух известных точек (x и y), основываясь на заданном интервале (t) - при t = 0 будет возвращен x, а при t = 1 будет возвращен y.
Статья из русскоязычной Википедии о линейной интерполяции.

.mapLinear( x, a1, a2, b1, b2 )
x — значение для отображения.
a1 — минимальное значение для диапазона A.
a2 — максимальное значение для диапазона A.
b1 — минимальное значение для диапазона B.
b2 — максимальное значение для диапазона B.
Линейное отображение x из диапазона [a1, a2] в диапазон [b1, b2].
А вот статья из англоязычной Википедии о Linear mapping.

.nearestPowerOfTwo ( n )
Возвращает ближайшую степень числа 2 для заданного числа n.

.nextPowerOfTwo ( n )
Возвращает ближайшую степень числа 2 для заданного числа n, но которая больше числа n.

.radToDeg ( radians )
Конвертирует радианы в градусы.

.randFloat ( low, high )
Возвращает случайное число с плавающей запятой в интервале чисел от low (нижняя граница) до high (верхняя граница интервала).

.randFloatSpread ( range )
Возвращает случайное число с плавающей запятой в интервале чисел от -range/2 до range/2.

.randInt ( low, high )
Возвращает случайное целое число в интервале от low (нижняя граница) до high (верхняя граница интервала).

.smoothstep( x, min, max )
x -- значение для вычисления, в зависимости от его позиции между значениями min и max.
min -- любое значение x меньше значения min будет равно 0.
max -- любое значение x больше значения max будет равно 1.
Возвращает значение в диапазоне между 0 и 1, представляющее Returns a value between 0-1 that represents the percentage that x has moved between min and max, but smoothed or slowed down the closer X is to the min and max.
Подробности смотрите в статье Википедии Smoothstep

[method:Float .smootherstep( [page:Float x, [page:Float min, [page:Float max )
x -- The value to evaluate based on its position between min and max.
min -- любое значение x меньше значения min будет равно 0.
max -- любое значение x больше значения max будет равно 1.
Возвращает значение в диапазоне от 0 до 1. Функция работает также как smoothstep, но более плавно. but more smooth. Эта функция - вариант функции smoothstep, имеющий A variation on smoothstep that has zero 1st and 2nd order derivatives at x=0 and x=1.

Исходники



Matrix3

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

Пример

var m = new Matrix3();

Примечание о упорядочивании по рядам и колонкам

Метод set() принимает аргументы, упорядоченные по рядам, в то время как внутри они хранятся в массиве элементов, упорядоченном по колонкам.
Это значит, что вызов
m.set( 11, 12, 13,
       21, 22, 23,
       31, 32, 33 );
приведет в результате к массиву элементов, содержащему:
m.elements = [ 11, 21, 31,
               12, 22, 32,
               13, 23, 33 ];
и внутри все вычисления выполняются с использованием упорядочивания по колонкам. Однако, поскольку фактически порядок размещения элементов в матрице, с точки зрения математики, не имеет никакого значения, а большинство людей привыкли представлять матрицы упорядоченными по строкам, то в документации three.js матрицы также показываются упорядоченными по строкам. Просто имейте ввиду, чтобы понять смысл расчетов, при чтении исходного кода нужно переставлять (транспонировать, в англоязычном варианте - transpose) любые матрицы, представленные здесь. То есть, нужно каждую строчку исходной матрицы записать в виде столбца в том же порядке.

Конструктор

Matrix3( )
Создает и инициализирует Matrix3 как единичную матрицу 3×3.
Вот статья русскоязычной Википедии о единичной матрице.

Свойства


.elements
Список значений матрицы, упорядоченный по колонкам.

.isMatrix3
Свойство используется для проверки, является ли данный и производные от него классы матрицами 3×3. Значением по умолчанию является true.
Его нельзя изменять, так как оно используется внутри three.js для оптимизации.

Методы


.applyToBufferAttribute( attribute )
attribute - атрибут из чисел с плавающей запятой, представляющий трехмерные векторы.
Умножает (применяет) данную матрицу на каждый трехмерный вектор, переданный в attribute.

.clone( )
Создает новую матрицу Matrix3 с точно такими же элементами как в данной.

.copy( m )
Метод копирует элементы матрицы, указанной в параметре m, в данную матрицу.

.determinant( )
Метод вычисляет и возвращает определитель (determinant) данной матрицы.

.equals( m )
Возвращает значение true, если данная матрица и матрица, указанная в параметре m равны.

.fromArray( array, offset )
array - массив, из которого считываются элементы.
offset - смещение в массиве (дополнительный, необязательный аргумент). Значением по умолчанию является 0.
Устанавливает элементы данной матрицы на основе массива (параметр array), упорядоченного по колонкам.

.getInverse( m, throwOnDegenerate )
m - матрица, которая берется для инвертирования.
throwOnDegenerate - если установлено значение true, то при вырожденной матрице (необратимой) будет выброшено сообщение об ошибке. Дополнительный, необязательный аргумент.
Метод устанавливает данную матрицу обратной (inverse) по отношению к матрице, переданной в параметре m, при помощи аналитического метода. Если аргумент throwOnDegenerate не установлен, а матрица необратима (т.е. обратной матрицы не существует), то данная матрица устанавливается как единичная матрица 3×3. Англоязычный вариант единичной матрицы называется identity matrix.

.getNormalMatrix( m )
m - четырехмерная матрица Matrix4.
Устанавливает данную матрицу как верхнюю левую часть 3×3 нормальной матрицы (normal matrix) из переданной в аргументе m четырехмерной матрицы. Нормальная матрица - это инверсия The normal matrix is the inverse transpose of the matrix m.

.identity( )
Метод сбрасывает данную матрицу в единичную матрицу 3×3:
1, 0, 0
0, 1, 0
0, 0, 1

.multiply( m )
Производится последующее умножение данной матрицы с матрицей, переданной в аргументе m.

.multiplyMatrices( a, b )
Устанавливает данную матрицу как результат действия a × b.

.multiplyScalar( s )
Метод перемножает каждый компонент данной матрицы на скалярное значение, переданное в аргументе s.

.premultiply( m )
Производится предварительное умножение данной матрицы с матрицей, переданной в аргументе m.

.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 )
n11 -- значение, которое требуется поместить в 1 ряду и 1 колонке.
n12 -- значение, которое требуется поместить в 1 ряду и 2 колонке.
...
...
n32 -- значение, которое требуется поместить в 3 ряду и 2 колонке.
n33 -- значение, которое требуется поместить в 3 ряду и 3 колонке.
Метод устанавливает значения матрицы 3×3 в заданной последовательности, упорядоченной по строкам. Sets the 3x3 matrix values to the given row-major sequence of values.

.setFromMatrix4( m )
Устанавливает эту матрицу как верхнюю матрицу 3×3 из четырехмерной матрицы (Matrix4), представленой в аргументе m.

.setUvTransform( tx, ty, sx, sy, rotation, cx, cy )
tx - offset x
ty - offset y
sx - repeat x
sy - repeat y
rotation - угол поворота (в радианах).
cx - center x of rotation
cy - center y of rotation
Sets the UV transform matrix from offset, repeat, rotation, and center.

.toArray( array, offset )
array - массив для хранения результирующего вектора (дополнительный, необязательный параметр). Если параметр не задан, будет создан новый массив.
offset - смещение в массиве, где будет размещен результат (дополнительный, необязательный параметр).
Записывает элементы данной матрицы в массив, упорядочивая их по колонкам.

.transpose( )
Транспонирует данную матрицу на месте. Вот англоязычный вариант статьи о транспонировании.

.transposeIntoArray( array )
array - массив для хранения результирующего вектора.
Транспонирует данную матрицу в предоставленный массив и возвращает саму себя без изменений.

Исходники



Matrix4

Класс, представляющий матрицу 4×4 (англоязычный вариант matrix).
Наиболее распространенным использование матрицы 4×4 в трехмерной компьютерной графике является матрица перехода (в англоязычном варианте Transformation Matrix). Чтобы иметь представление о матрицах перехода (матрицах трансформаций), используемых в WebGL, ознакомьтесь с этим руководством. Вот эта же статья на русском языке.
При помощи перемножения с матрицей, становятся возможными преобразования трехмерного вектора, представляющего точку в трехмерном пространстве, такие как перенос, вращение, сдвиг, масштабирование, отражение, ортогональное или перспективное проецирование и так далее. Это называется применением матрицы к вектору.
Каждый трехмерный объект (Object3D) имеет три, взаимосвязанных матрицы has three associated Matrix4s:
  • Object3D.matrix: здесь хранится локальное изменение объекта.
  • Object3D.matrixWorld: глобальное или "мировое" изменение объекта. Это преобразование объекта относительно его родителя. Если у объекта нет родителя, то здесь все идентично с локальным изменением.
  • Object3D.modelViewMatrix: здесь представлено преобразование объекта относительно системы координат камеры. Матрица modelViewMatrix объекта - это матрица matrixWorld предварительно перемноженная с матрицей matrixWorldInverse камеры.
Камеры имеют две дополнительные матрицы Matrix4:
  • Camera.matrixWorldInverse: матрица просмотра - инверсия матрицы "мира" (matrixWorld) камеры.
  • Camera.projectionMatrix: представляет сведения о том, как проецировать сцену на пространство клипа.
Примечание: Object3D.normalMatrix является не Matrix4, а Matrix3.
Примечание о упорядочивании по рядам и колонкам
Метод set() принимает аргументы, упорядоченные по рядам, в то время как внутри они хранятся в массиве элементов, упорядоченном по колонкам.
Это значит, что вызов
var m = new Matrix4();
m.set( 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44 );
приведет к массиву элементов, содержащему:
m.elements = [ 11, 21, 31, 41,
               12, 22, 32, 42,
               13, 23, 33, 43,
               14, 24, 34, 44 ];
и внутри все вычисления выполняются с использованием упорядочивания по колонкам. Однако, поскольку фактически порядок размещения элементов в матрице, с точки зрения математики, не имеет никакого значения, а большинство людей привыкли представлять матрицы упорядоченными по строкам, то в документации three.js матрицы также показываются упорядоченными по строкам. Просто имейте ввиду, чтобы понять смысл расчетов, при чтении исходного кода нужно переставлять (транспонировать, в англоязычном варианте - transpose) любые матрицы, представленные здесь. То есть, нужно каждую строчку исходной матрицы записать в виде столбца в том же порядке.

Конструктор

Matrix4()
Создает и инициализирует Matrix4 как единичную матрицу 4×4 (в англоязычном варианте это identity matrix).

Свойства


.elements
Список значений матрицы, упорядоченный по колонкам.

.isMatrix4
Свойство используется для проверки, является ли данный и производные от него классы матрицами 4×4. Значением по умолчанию является true.
Его нельзя изменять, так как оно используется внутри three.js для оптимизации.

Методы


.applyToBufferAttribute( attribute )
attribute - атрибут из чисел с плавающей запятой, представляющий трехмерные векторы.
Умножает (применяет) данную матрицу на каждый трехмерный вектор, переданный в attribute.

.clone( )
Создает новую матрицу Matrix4 с точно такими же элементами как в данной.

.compose( position, quaternion, scale )
Метод устанавливает в данную матрицу изменения, составленные из положения (параметр position), кватерниона (параметр quaternion) и масштаба (параметр scale). При этом внутри метода сначала вызывается метод makeRotationFromQuaternion( quaternion ), затем метод scale( scale ) и наконец метод setPosition( position ).

.copy( m )
Метод копирует элементы матрицы, указанной в параметре m, в данную матрицу.

.copyPosition( m )
Копирует компонент перемещения (трансляции) из матрицы, переданной в параметре m, в компонент перемещения данной матрицы.

.decompose( position, quaternion, scale )
Метод разлагает данную матрицу на составные части - положение (position), кватернион (quaternion) и масштаб (scale).

.determinant( )
Метод вычисляет и возвращает определитель (determinant) данной матрицы.
Выполняется на основе метода, изложенного здесь.

.equals( m )
Возвращает значение true, если данная матрица и матрица, указанная в параметре m равны.

.extractBasis( xAxis, yAxis, zAxis )
Метод извлекает базис (basis), т.е. основные элементы матрицы, по трем представленным осевым векторам. Если задана такая матрица:
a, b, c, d,
e, f, g, h,
i, j, k, l,
m, n, o, p
то xAxis, yAxis, zAxis будут установлены как:
xAxis = (a, e, i)
yAxis = (b, f, j)
zAxis = (c, g, k)

.extractRotation( m )
Метод извлекает из предоставленной матрицы m компонент вращения и устанавливает его как компонент вращения данной матрицы.

.fromArray( array, offset )
array - массив, из которого считываются элементы.
offset - смещение в массиве (дополнительный, необязательный аргумент). Значением по умолчанию является 0.
Устанавливает элементы данной матрицы на основе массива (параметр array), упорядоченного по колонкам.

.getInverse( m, throwOnDegenerate )
m - матрица, которая берется для инвертирования.
throwOnDegenerate - если установлено значение true, то при вырожденной матрице (необратимой) будет выброшено сообщение об ошибке. Дополнительный, необязательный аргумент.
Метод устанавливает данную матрицу обратной (inverse) по отношению к матрице, переданной в параметре m, при помощи способа, описанного здесь. Если аргумент throwOnDegenerate не установлен, а матрица необратима (т.е. обратной матрицы не существует), то данная матрица устанавливается как единичная матрица 4×4.

.getMaxScaleOnAxis( )
Метод получает максимальное значение масштаба по трем осям.

.identity( )
Метод сбрасывает данную матрицу в единичную матрицу (англоязычный вариант - identity matrix).

.lookAt( eye, center, up )
Метод создает матрицу вращения, наблюдающую из позиции, переданной в параметре eye, в направлении координат, переданных в параметре center, ориентируясь по вектору, переданному в up.

.makeRotationAxis( axis, theta )
axis — оси вращения, должны быть нормализованы.
theta — угол поворота в радианах.
Метод устанавливает данную матрицу как изменение вращения вокруг axis на угол theta в радианах. Это немного спорная, но математически верная альтернатива вращению посредством кватернионов (Quaternion). Посмотрите обсуждение этой темы здесь.

.makeBasis( xAxis, yAxis, zAxis )
Set this to the basis matrix consisting of the three provided basis vectors:
xAxis.x, yAxis.x, zAxis.x, 0,
xAxis.y, yAxis.y, zAxis.y, 0,
xAxis.z, yAxis.z, zAxis.z, 0,
0,       0,       0,       1

.makePerspective( left, right, top, bottom, near, far )
Метод создает матрицу перспективной проекции. Она используется внутри three.js методом PerspectiveCamera.updateProjectionMatrix.

.makeOrthographic( left, right, top, bottom, near, far )
Метод создает матрицу ортогональной проекции. Она используется внутри three.js методом OrthographicCamera.updateProjectionMatrix.

.makeRotationFromEuler( euler )
Устанавливает компонент вращения (левую верхнюю матрицу 33) данной матрицы как поворот, определенный представленными углами Эйлера (параметр euler). Оставшаяся часть матрицы устанавливается как единичная. В зависимости от свойства order угла Эйлера, возможны шесть вариантов. Полный список смотрите на этой странице. Вот матрица поворота на русском языке и отдельно rotation matrix на английском.

.makeRotationFromQuaternion( q )
Устанавливает компонент вращения данной матрицы как поворот, определенный кватернионом (параметр q), как описано здесь. Оставшаяся часть матрицы устанавливается как единичная. Так при заданном q = w + xi + yj + zk, результирующей матрицей будет:
1-2y2-2z2    2xy-2zw    2xz+2yw    0
2xy+2zw      1-2x2-2z2  2yz-2xw    0
2xz-2yw      2yz+2xw    1-2x2-2y2  0
0            0          0          1

.makeRotationX( theta )
theta — угол поворота в радианах.
Метод устанавливает данную матрицу как изменение поворота вокруг оси X на угол, указанный в параметре theta (θ), в радианах. В результате получится матрица:
1 0      0        0
0 cos(θ) -sin(θ)  0
0 sin(θ) cos(θ)   0
0 0      0        1

.makeRotationY( theta )
theta — угол поворота в радианах.
Метод устанавливает данную матрицу как изменение поворота вокруг оси Y на угол, указанный в параметре theta (θ), в радианах. В результате получится матрица:
cos(θ)  0 sin(θ) 0
0       1 0      0
-sin(θ) 0 cos(θ) 0
0       0 0      1

.makeRotationZ( theta )
theta — угол поворота в радианах.
Метод устанавливает данную матрицу как изменение поворота вокруг оси Z на угол, указанный в параметре theta (θ), в радианах. В результате получится матрица:
cos(θ) -sin(θ) 0 0
sin(θ) cos(θ)  0 0
0      0       1 0
0      0       0 1

.makeScale( x, y, z )
x - величина масштабирования по оси X.
y - величина масштабирования по оси Y.
z - величина масштабирования по оси Z.
Устанавливает данную матрицу в измененном масштабе:
x, 0, 0, 0,
0, y, 0, 0,
0, 0, z, 0,
0, 0, 0, 1

.makeShear( x, y, z )
x - величина сдвига по оси X.
y - величина сдвига по оси Y.
z - величина сдвига по оси Z.
Устанавливает данную матрицу с изменением на величину сдвига:
1, y, z, 0,
x, 1, z, 0,
x, y, 1, 0,
0, 0, 0, 1

.makeTranslation( x, y, z )
x - the amount to translate in the X axis.
y - the amount to translate in the Y axis.
z - the amount to translate in the Z axis.
Sets this matrix as a translation transform:
1, 0, 0, x,
0, 1, 0, y,
0, 0, 1, z,
0, 0, 0, 1

.multiply( m )
Post-multiplies this matrix by m.

.multiplyMatrices( a, b )
Sets this matrix to a x b.

.multiplyScalar( s )
Multiplies every component of the matrix by a scalar value s.

.premultiply( m )
Pre-multiplies this matrix by m.

.scale( v )
Multiplies the columns of this matrix by vector v.

.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 )
Метод устанавливает все элементы данной матрицы Set the elements of this matrix to the supplied row-major values n11, n12, ... n44. Sets all fields of this matrix to the supplied row-major values n11..n44.
.setPosition( v )
Sets the position component for this matrix from vector v, without affecting the rest of the matrix - i.e. if the matrix is currently:
a, b, c, d,
e, f, g, h,
i, j, k, l,
m, n, o, p
This becomes:
a, b, c, v.x,
e, f, g, v.y,
i, j, k, v.z,
m, n, o, p

.toArray( array, offset )
array - (optional) array to store the resulting vector in.
offset - (optional) offset in the array at which to put the result.
Writes the elements of this matrix to an array in column-major format.

.transpose( )
Transposes this matrix.

Исходники



Plane

Двумерная поверхность, расширяемая до бесконечности в трехмерном пространстве, представленная в Hessian normal form нормальным вектором единичной длины и константой.

Конструктор

Plane( normal, constant )
normal - трехмерный вектор (Vector3) единичной длины, определяющий нормаль к плоскости.Дополнительный, необязательный аргумент. Значением по умолчанию является (1, 0, 0).
constant - the signed distance from the origin to the plane. Дополнительный, необязательный параметр, значение по умолчанию равно 0.

Свойства


Методы


.applyMatrix4 ( matrix, optionalNormalMatrix )
matrix - the Matrix4 to apply.
optionalNormalMatrix - (optional) pre-computed normal Matrix3 of the Matrix4 being applied.
Apply a Matrix4 to the plane. The matrix must be an affine, homogeneous transform. If supplying an optionalNormalMatrix, it can be created like so:
var optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );

.clone( )
Возвращает новую плоскость с такими же нормалью и константой, как у этой.

.coplanarPoint( optionalTarget )
optionalTarget - (optional) if specified, the result will be copied into this Vector3, otherwise a new Vector3 will be created.
Returns a Vector3 coplanar to the plane, by calculating the projection of the normal vector at the origin onto the plane.

.copy( plane )
Copies the values of the passed plane's normal and constant properties to this plane.

.distanceToPoint( point )
Возвращает расстояние (со знаком, т.е. положительное или отрицательное) от данной точки до этой плоскости.

.distanceToSphere( sphere )
Возвращает расстояние (со знаком, т.е. положительное или отрицательное) от данной сферы до этой плоскости. Returns the signed distance from the sphere to the plane.

.equals( plane )
Checks to see if two planes are equal (their normal and constant properties match).

.intersectLine( line, optionalTarget ) or undefined
line - the Line3 to check for intersection.
optionalTarget - (optional) if specified, the result will be copied into this Vector3, otherwise a new Vector3 will be created.
Returns the intersection point of the passed line and the plane. Returns undefined if the line does not intersect. Returns the line's starting point if the line is coplanar with the plane.

.intersectsBox( box )
box - the Box3 to check for intersection.
Determines whether or not this plane intersects box.

.intersectsLine( line )
line - the Line3 to check for intersection.
Tests whether a line segment intersects with (passes through) the plane.

.intersectsSphere( sphere )
sphere - the Sphere to check for intersection.
Determines whether or not this plane intersects sphere.

.negate( )
Negates both the normal vector and the constant.

.normalize( )
Normalizes the normal vector, and adjusts the constant value accordingly.

.projectPoint( point, optionalTarget )
point - the Vector3 to project onto the plane.
optionalTarget - (optional) if specified, the result will be copied into this Vector3, otherwise a new Vector3 will be created.
Projects a point onto the plane.

.set( normal, constant )
normal - a unit length Vector3 defining the normal of the plane.
constant - the signed distance from the origin to the plane. Default is 0.
Sets the plane's normal and constant properties.
.setComponents( x, y, z, w )
x - x value of the unit length normal vector.
y - y value of the unit length normal vector.
z - z value of the unit length normal vector.
w - the value of the plane's constant property.
Set the individual components that define the plane.
.setFromCoplanarPoints ( a, b, c )
a - первая точка на плоскости.
b - вторая точка на плоскости.
c - третья точка на плоскости.
Определяет плоскость на основе трех предоставленных точек. Defines the plane based on the 3 provided points. The winding order is assumed to be counter-clockwise, and determines the direction of the normal.

.setFromNormalAndCoplanarPoint ( normal, point ) this
normal - a unit length Vector3 defining the normal of the plane.
point - Vector3
Устанавливает свойства плоскости Sets the plane's properties as defined by a normal and an arbitrary coplanar point.

.translate ( offset )
offset - the amount to move the plane by.
Translates the plane by the distance defined by the offset vector. Note that this only affects the plane constant and will not affect the normal vector.

Исходники



Quaternion

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

Пример

var quaternion = new THREE.Quaternion();
quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
var vector = new THREE.Vector3( 1, 0, 0 ); vector.applyQuaternion( quaternion );

Конструктор

Quaternion( x, y, z, w )
x - координата x.
y - координата y
z - координата z
w - координата w

Свойства


.x
Изменение этого свойства приведет к вызову метода onChangeCallback.

.y
Изменение этого свойства приведет к вызову метода onChangeCallback.

.z
Изменение этого свойства приведет к вызову метода onChangeCallback.

.w
Изменение этого свойства приведет к вызову метода onChangeCallback.

Методы


.clone ()
Создает новый Quaternion с такими же свойствами x, y, z и w как у данного.

.conjugate ()
Возвращает конъюгат вращения к данному кватерниону. Конъюгат кватерниона представляет собой тоже самое вращение в обратном направлении вокруг осей вращения.

.copy ( q )
Метод копирует свойства x, y, z и w кватерниона, указанного в параметре q, в данный кватернион.

.equals ( v )
v - кватернион, с которым будет сравниваться данный кватернион.
Метод сравнивает свойства x, y, z и w кватерниона, указанного в параметре v, с аналогичными свойствами данного кватерниона, чтобы определить представлено ли в них одно и то же вращение.

.dot ( v )
Метод вычисляет скалярное произведение (в англ. варианте - dot product) данного кватерниона и кватерниона, представленного в аргументе v.

.fromArray ( array, offset )
array - массив в формате (x, y, z, w), используемый для построения кватерниона.
offset - смещение в массиве (дополнительный, необязательный параметр).
Устанавливает свойства x, y, z и w данного кватерниона из массива.

.inverse( )
Метод инвертирует данный кватернион - вычисляет конъюгат и затем нормализует результат.

.length( )
Метод вычисляет евклидово расстояние (Euclidean length), т.е. длину прямой линии данного кватерниона, рассматриваемого в качестве четырехмерного вектора.

.lengthSq( )
Метод вычисляет квадрат евклидова расстояния (Euclidean length), т.е. квадрат длины прямой линии данного кватерниона, рассматриваемого в качестве четырехмерного вектора. Его удобно применять при сравнении длин двух кватернионов, поскольку это несколько более эффективный расчет чем в методе length.

.normalize ( )
Метод нормализует данный кватернион - то есть, вычисляет кватернион, выполняющий такое же вращение, как и данный, но имеет длину равную 1.
Вот статья Википедии о нормализованном, т.е. единичном векторе на русском языке.

.multiply ( q )
Метод умножает данный кватернион на кватернион, указанный в аргументе q.

.multiplyQuaternions ( a, b )
Устанавливает этот кватернион равным a × b.
Умножение производится в соответствии с методом, приведенным здесь.

.onChange ( onChangeCallback )
Устанавливает метод onChangeCallback.

.onChangeCallback ( )
Данная функция вызывается всякий раз, когда происходит одно из следующих событий:
По умолчанию это "пустая" функция, однако при необходимости вы можете ее изменить, воспользовавшись методом onChange( onChangeCallback ).

.premultiply( q )
Метод предварительно умножает данный кватернион с заданным в аргументе q.

.slerp( .qb, t )
.qb -- другой кватернион вращения.
t -- коэффициент интерполяции (interpolation factor) в закрытом (замкнутом) интервале (closed interval) [0, 1].
Метод обрабатывает сферическую линейную интерполяцию между кватернионами. Аргумент t представляет Handles the spherical linear interpolation between quaternions. *t* represents the amount of rotation between this quaternion (where *t* is 0) and quaternionB (where *t* is 1). This quaternion is set to the result. Также посмотрите статическую версию метода slerp ниже.
// rotate a mesh towards a target quaternion
// поворачиваем сетку (mesh) к целевому кватерниону
mesh.quaternion.slerp( endQuaternion, 0.01 );
Примечание переводчика: Вот статья английской Википедии о сферической линейной интерполяции. А здесь статья gamedev.ru о интерполяции кватернионов на русском языке.

set( x, y, z, w )
Устанавливает свойства x, y, z, w данного кватерниона.

.setFromAxisAngle( axis, angle )
Устанавливает этот кватернион из вращения, заданного осью и углом. Sets this quaternion from rotation specified by axis and angle.
Adapted from [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm.
Предполагается, что axis нормализованы, а angle в радианах.

.setFromEuler( euler )
Sets this quaternion from rotation specified by Euler angle.

.setFromRotationMatrix( m )
Sets this quaternion from rotation component of *m*.
Adapted from [link:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm.

[method:Quaternion .setFromUnitVectors( [page:Vector3 vFrom, [page:Vector3 vTo )
Sets this quaternion to the rotation required to rotate direction vector *vFrom* to direction vector *vTo*.
Adapted from [link:http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors.
*vFrom* and *vTo* are assumed to be normalized.

.toArray( array, offset )
array -- дополнительный, необязательный массив для хранения кватерниона. Если этот параметр не указан, будет создан новый массив.
offset -- дополнительное, необязательное смещение в выходном массиве. (optional) if specified, the result will be copied into this Array.
Метод возвращает числовые элементы данного кватерниона как массив в формате [x, y, z, w].

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

Статические методы (в противоположность методам для отдельных экземпляров) разработаны для вызова непосредственно от класса, а не от отдельного экземпляра. Поэтому для использования статической версии метода, вызов делается так:
THREE.Quaternion.slerp( qStart, qEnd, qTarget, t );
Для сравнения, чтобы вызвать "обычный" или "экземплярный" метод slerp нужно сделать следующее:
// instantiate a quaternion with default values
// создаем экземпляр кватерниона со значениями по умолчанию
var q = new THREE.Quaternion();
// call the instanced slerp method (вызов "экземплярного" метода slerp) q.slerp( qb, t )

.slerp( qStart, qEnd, qTarget, t )
qStart -- начальный кватернион (когда t равно 0).
qEnd -- конечный кватернион (когда t равно 1).
qTarget -- целевой кватернион, который устанавливается в результате операции.
t -- коэффициент интерполяции в замкнутом интервале [0, 1].
В отличие от обычного метода, статическая версия slerp в результате операции сферического линейного интерполирования устанавливает целевой кватернион.
// Code setup (код настройки)
  var startQuaternion = new THREE.Quaternion().set( 0, 0, 0, 1 ).normalize();
  var endQuaternion = new THREE.Quaternion().set( 1, 1, 1, 1 ).normalize();
  var t = 0;
// Update a mesh's rotation in the loop (обновление вращения сетки в цикле) t = ( t + 0.01 ) % 1; // constant angular momentum (постоянный угловой момент) THREE.Quaternion.slerp( startQuaternion, endQuaternion, mesh.quaternion, t );

.slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t )
dst -- выходной массив.
dstOffset -- смещение в выходном массиве.
src0 -- исходный массив начального кватерниона.
srcOffset0 -- смещение в массиве src0.
src1 -- исходный массив целевого кватерниона.
srcOffset1 -- смещение в массиве src1.
t -- коэффициент интерполяции в замкнутом интервале [0, 1].
Работает также как и статический метод slerp, описанный выше, но оперирует непосредственно с "плоскими" массивами чисел.

Исходники



Ray

Луч (ray), который испускается из источника в определенном направлении. Данный класс используется RayCaster'ом для оказания помощи с raycasting. Вот описание рейкастинга в Википедии на русском языке. Рейкастинг используется для выборки курсором мышки (вычисляет какие из объектов в трехмерном пространстве накрывает курсор мышки) среди других объектов.

Конструктор

Ray( origin, direction )
origin -- источник луча (Ray). Дополнительный, необязательный параметр, значением по умолчанию является трехмерный вектор (Vector3) с координатами (0, 0, 0).
direction -- Vector3 The direction of the Ray. This must be normalized (with Vector3.normalize) for the methods to operate properly. Default is a Vector3 at (0, 0, 0).
Создает новый Ray.

Свойства


.origin
Источник луча (Ray). Значением по умолчанию является трехмерный вектор (Vector3) с координатами (0, 0, 0).

.direction
Направление луча (Ray). Для правильной работы методов, этот вектор должен быть нормализован (с помощью метода normalize).

Методы


.applyMatrix4( matrix4 )
matrix4 -- [page:Matrix4 The [page:Matrix4 to transform this [page:Ray by.
Transform this [page:Ray by the [page:Matrix4.

.at( t, optionalTarget )
t - расстояние вдоль луча (Ray) the distance along the Ray to retrieve a position for.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Метод получает трехмерный вектор (Vector3) that is a given distance along this [page:Ray.

.clone( )
Создает новый луч (Ray) со свойствами origin и direction идентичными свойствам данного луча.

.closestPointToPoint( point, optionalTarget )
point - the point to get the closest approach to.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Get the point along this Ray that is closest to the Vector3 provided.

.copy( ray )
Copies the origin and direction properties of ray into this ray.

.distanceSqToPoint( point )
point - the Vector3 to compute a distance to.
Get the squared distance of the closest approach between the Ray and the Vector3.

.distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment )
v0 - начальная точка отрезка линии.
v1 - конечная точка отрезка линии.
optionalPointOnRay - если этот параметр представлен, он принимается как точка данного луча (Ray), ближайшая к данному отрезку линии. Дополнительный, необязательный параметр.
optionalPointOnSegment - если этот параметр представлен, он принимается как точка данного отрезка линии, ближайшая к данному лучу (Ray). Дополнительный, необязательный параметр.
Метод получает квадрат расстояния между данным лучом (Ray) и отрезком линии.

.distanceToPlane( plane )
plane - the Plane to get the distance to.
Get the distance from origin to the Plane, or null if the Ray doesn't intersect the Plane.

.distanceToPoint( point )
point - Vector3 The Vector3 to compute a distance to.
Get the distance of the closest approach between the Ray and the point.
.equals( ray )
ray - the Ray to compare to.
Returns true if this and the other ray have equal offset and direction.

.intersectBox( box, optionalTarget )
box - the Box3 to intersect with.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Intersect this Ray with a Box3, returning the intersection point or null if there is no intersection.

.intersectPlane( plane, optionalTarget )
plane - the Plane to intersect with.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Intersect this Ray with a Plane, returning the intersection point or null if there is no intersection.

.intersectSphere( sphere, optionalTarget )
sphere - the Sphere to intersect with.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Intersect this Ray with a Sphere, returning the intersection point or null if there is no intersection.

.intersectTriangle( a, b, c, backfaceCulling, optionalTarget )
a, b, c - The Vector3 points making up the triangle.
backfaceCulling - whether to use backface culling.
optionalTarget - дополнительный, необязательный аргумент. Если указан, то результат метода будет скопирован в предоставленный Vector3, в противном случае будет создан новый Vector3.
Intersect this Ray with a triangle, returning the intersection point or null if there is no intersection.

.intersectsBox( box )
box - the Box3 to intersect with.
Return true if this Ray intersects with the Box3.

.intersectsPlane( plane )
plane - the Plane to intersect with.
Return true if this Ray intersects with the Plane.

.intersectsSphere( sphere )
sphere - the Sphere to intersect with.
Return true if this Ray intersects with the Sphere.

.lookAt( v )
v - The Vector3 to look at.
Adjusts the direction of the ray to point at the vector in world coordinates.

.recast( t )
t - The distance along the Ray to interpolate.
Shift the origin of this Ray along its direction by the distance given.

.set( origin, direction )
origin - the origin of the Ray.
direction - the direction of the Ray. This must be normalized (with Vector3.normalize) for the methods to operate properly.
Метод копирует параметры свойств, переданных в аргументах origin и direction, в данный луч (Ray). Copy the parameters to the origin and direction properties of this ray.

Исходники



Sphere

Сфера, определяемая центром и радиусом.

Конструктор

Sphere( center, radius )
center -- центр сферы. Значением по умолчанию является Vector3 с координатами (0, 0, 0).
radius -- радиус сферы. Значение по умолчанию равно 0.
Создает новую сферу.

Свойства


center
Трехмерный вектор, определяющий центр сферы. Значением по умолчанию является (0, 0, 0).

.radius
Радиус сферы. Значение по умолчанию равно 0.

Методы


[method:Sphere applyMatrix4( [page:Matrix4 matrix ) [page:Sphere this
matrix -- [page:Matrix4
Transforms this sphere with the provided [page:Matrix4.

[method:Vector3 clampPoint( [page:Vector3 point, [page:Vector3 optionalTarget )
point -- [page:Vector3 The point to clamp
optionalTarget -- [page:Vector3 The optional target point to return
Clamps a point within the sphere. If the point is is outside the sphere, it will clamp it to the closets point on the edge of the sphere.

[method:Sphere clone()
Provides a new copy of the sphere.

.equals( [page:Sphere sphere )
sphere -- [page:Sphere
Checks to see if the two spheres' centers and radii are equal.

[method:Float distanceToPoint( [page:Vector3 point )
point -- [page:Vector3
Returns the closest distance from the boundary of the sphere to the point. If the sphere contains the point, the distance will be negative.

[method:Box3 getBoundingBox( [page:Box optionalTarget )
optionalTarget -- [page:Box
Returns a bounding box for the sphere, optionally setting a provided box target.

[method:Boolean containsPoint( [page:Vector3 point )
point -- [page:Vector3
Checks to see if the sphere contains the provided point inclusive of the edge of the sphere.

[method:Sphere copy( [page:Sphere sphere )
sphere -- [page:Sphere to copy
Copies the values of the passed sphere to this sphere.

[method:Boolean intersectsSphere( [page:Sphere sphere )
sphere -- [page:Sphere
Checks to see if two spheres intersect.

.empty( )
Checks to see if the sphere is empty (the radius set to 0).

.set( center, radius )
center -- центр сферы.
radius -- радиус сферы.
Метод устанавливает свойства center и radius для этой сферы.

.setFromPoints( points, optionalCenter )
points -- массив позиций трехмерных векторов (Vector3).
optionalCenter -- дополнительная позиция (Vector3) центра сферы.
Метод вычисляет минимальную ограничивающую сферу для массива точек (переданного в параметре points). Если параметр optionalCenter задан, то он будет использоваться в качестве центра сферы. В противном случае, вычисляется центр ограничивающей рамки, выровненной по осям и охватывающей весь массив точек (points).

.translate( offset )
Метод переносит центр сферы на представленный вектор смещения (параметр offset).

Исходники



Spherical

Координаты точки в сферической системе координат.
Сферическая система координат на русском языке.

Конструктор

Spherical( radius, phi, theta )
radius - радиус или the radius, or the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance (straight-line distance) from the point to the origin. Значение по умолчанию равно 1.0.
phi - полярный угол от оси y (верх). Значение по умолчанию равно 0.
Примечание переводчика: На русском языке принято называть этот угол зенитным.
theta - экваториальный угол вокруг оси y (верх). Значение по умолчанию равно 0.
Примечание переводчика: На русском языке принято называть этот угол азимутальным.
Полюсы (phi) находятся на положительной и отрицательной сторонах оси y. Экватор (theta) начинается с положительной стороны оси z.

Свойства


Методы


[method:Spherical .clone()
Returns a new plane with the same [page:.radius radius, [page:.phi phi and [page:.theta theta properties as this one.

[method:Spherical .copy( [page:Spherical s )
Copies the values of the passed Spherical's [page:.radius radius, [page:.phi phi and [page:.theta theta properties to this spherical.

[method:Spherical .makeSafe()
Restricts the polar angle page:.phi phi to be between 0.000001 and pi - 0.000001.

[method:Spherical .set( [page:Float radius, [page:Float phi, [page:Float theta )
Sets values of this spherical's [page:.radius radius, [page:.phi phi and [page:.theta theta properties.

[method:Spherical .setFromVector3( [page:Vector3 vec3 )
Sets values of this spherical's [page:.radius radius, [page:.phi phi and [page:.theta theta properties from the [page:Vector3 Vector3.
The [page:.radius radius is set the vector's [page:Vector3.length, while the [page:.phi phi and [page:.theta theta properties are set from its direction.

Исходники



Triangle

Треугольник - геометрическая фигура, определяемая тремя трехмерными векторами (Vector3), представляющими три его угла.

Конструктор

Triangle( a, b, c )
a - первый угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).
b - второй угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).
c - последний угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).
Создает новый Triangle.

Свойства


.a
Первый угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).

.b
Второй угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).

.c
Последний угол треугольника. Значением по умолчанию является трехмерный вектор (0, 0, 0).

Методы


.area( )
Метод возвращает площадь треугольника.

.barycoordFromPoint( point, optionalTarget )
point - трехмерный вектор (Vector3).
optionalTarget - если этот параметр указан, результат будет скопирован в заданный трехмерный вектор (Vector3), в противном случае будет создан новый трехмерный вектор. Дополнительный, необязательный параметр.
Метод возвращает барицентрические координаты (barycentric coordinate) из заданного вектора.
Изображение барицентрических координат.

.clone( )
Метод возвращает новый треугольник с точно такими же свойствами a, b и c как и у данного.

.closestPointToPoint( point, optionalTarget )
point - Vector3
optionalTarget - если этот параметр указан, результат будет скопирован в заданный трехмерный вектор (Vector3), в противном случае будет создан новый трехмерный вектор. Дополнительный, необязательный параметр.
Returns the closest point on the triangle to point.

.containsPoint( point )
point - Vector3 to check. Returns true if the passed vector is within the triangle.

.copy( triangle )
Copies the values of the passed triangles's a, b and c properties to this triangle.

.equals( triangle )
Returns true if the two triangles have identical a, b and c properties.

.midpoint( optionalTarget )
optionalTarget - если этот параметр указан, результат будет скопирован в заданный трехмерный вектор (Vector3), в противном случае будет создан новый трехмерный вектор. Дополнительный, необязательный параметр.
Вычисляет серединный треугольник (англоязычный вариант - midpoint triangle) данного треугольника.

.normal( optionalTarget )
optionalTarget - если этот параметр указан, результат будет скопирован в заданный трехмерный вектор (Vector3), в противном случае будет создан новый трехмерный вектор. Дополнительный, необязательный параметр.
Метод вычисляет вектор нормали () треугольника.

.plane( optionalTarget )
optionalTarget - если этот параметр указан, результат будет скопирован в заданную плоскость (Plane), в противном случае будет создана новая Plane. Дополнительный, необязательный параметр.
Метод создает плоскость на основе данного треугольника.

.set( a, b, c )
Устанавливает свойства a, b и c данного треугольника по переданным трехмерным векторам (аргументы a, b и c).

.setFromPointsAndIndices( points, i0, i1, i2 )
points - массив трехмерных векторов (Vector3).
i0 - целочисленный индекс.
i1 - целочисленный индекс.
i2 - целочисленный индекс.
Метод устанавливает векторы треугольника по векторам предоставленного массива (аргумент points).

Исходники



Vector2

Класс, представляющий двумерный (2D) вектор. (Вот статья Википедии о векторном пространстве на русском языке.) Вектор 2D - это упорядоченная пара чисел (помеченных как x и y), которая может использоваться для представления ряда вещей, таких как:
  • Точка в двумерном пространстве (т.е. позиция на плоскости).
  • Направление и расстояние по плоскости. В three.js расстояние всегда будет Эвклидовым расстоянием (т.е. расстоянием по прямой линии) от точки начала координат (0, 0) до координат заданной точки (x, y), направление также измеряется от (0, 0) к (x, y).
  • Любая произвольная упорядоченная пара чисел.
Имеются и другие вещи, которые можно представить как 2D-вектор, однако это его наиболее распространенное использование в three.js.

Пример

var a = new THREE.Vector2( 0, 1 );
// no arguments; will be initialised to (0, 0) // без аргументов вектор будет инициализирован как (0, 0) var b = new THREE.Vector2( );
var d = a.distanceTo( b );

Конструктор

Vector2( x, y )
x - значение x вектора, по умолчанию равно 0.
y - значение y вектора, по умолчанию равно 0.
Создает новый Vector2.

Свойства


.isVector2
Свойство используется для проверки, является ли данный класс и производные от него классы двумерными векторами (Vector2). Значением по умолчанию является true.
Не изменяйте это свойство, так как оно используется для оптимизации внутри three.js.

.height
Псевдоним (алиас) для y.

.width
Псевдоним (алиас) для x.

x


y

Методы


.add( v )
Метод добавляет к данному вектору вектор v.

.addScalar( s )
Метод добавляет скалярное значение s к значениям данного вектора x и y.

.addScaledVector( v, s )
Добавляет к данному вектору множество из v и s.

.addVectors( a, b )
Устанавливает данный вектор как a + b.

.angle( )
Метод вычисляет угол (в радианах) данного вектора относительно положительной оси x.

.applyMatrix3 ( m )
Multiplies this vector (with an implicit 1 as the 3rd component) by m.

.ceil( )
Компоненты x и y данного вектора округляются вверх до ближайшего целого значения.

.clamp( min, max )
min - минимальные значения x и y.
max - максимальные значения x и y.
Если значение x или y данного вектора больше значения x или y вектора, указанного в параметре max, оно заменяется этим соответствующим значением.
Если значение x или y данного вектора меньше значения x или y вектора, указанного в параметре min, оно заменяется этим соответствующим значением.

.clampLength( min, max )
min - минимальное значение длины, на котором она будет зафиксирована (зажата).
max - максимальное значение длины, на котором она будет зафиксирована (зажата).
Если длина данного вектора больше значения, указанного в параметре max, она заменяется на значение max.
Если длина данного вектора меньше значения, указанного в параметре min, она заменяется на значение min.

.clampScalar( min, max )
min - минимальное значение компонентов, на котором они будут зафиксированы (зажаты).
max - максимальное значение компонентов, на котором они будут зафиксированы (зажаты).
Если значение x или y данного вектора больше значения, указанного в параметре max, оно заменяется на значение max.
Если значение x или y данного вектора меньше значения, указанного в параметре min, оно заменяется на значение min.

.clone( )
Возвращает новый Vector2 с такими же значениями x и y, что и у данного вектора.

.copy( v )
Копирует значения свойств x и y из вектора (Vector2), переданного в параметре v, в данный вектор (Vector2).

.distanceTo ( v )
Computes the distance from this vector to v.

.manhattanDistanceTo ( v )
Computes the Manhattan distance from this vector to v.

.distanceToSquared ( v )
Computes the squared distance from this vector to v. If you are just comparing the distance with another distance, you should compare the distance squared instead as it is slightly more efficient to calculate.

.divide ( v )
Divides this vector by v.

.divideScalar ( s )
Divides this vector by scalar s. Sets vector to ( 0, 0 ) if s = 0.

.dot ( v )
Calculates the dot product of this vector and v.

.equals ( v )
Checks for strict equality of this vector and v.

.floor ()
The components of the vector are rounded down to the nearest integer value.

.fromArray ( array, offset )
array - the source array.
offset - (optional) offset into the array. Default is 0.
Sets this vector's x value to be array[ offset ] and y value to be array[ offset + 1 ].

.fromBufferAttribute ( attribute, index )
attribute - the source attribute.
index - index in the attribute.
Sets this vector's x and y values from the attribute.

.getComponent ( index )
index - 0 or 1.
If index equals 0 returns the x value. If index equals 1 returns the y value.

.length ()
Computes the Euclidean length (straight-line length) from (0, 0) to (x, y).

.manhattanLength ()
Computes the Manhattan length of this vector.

.lengthSq ()
Computes the square of the Euclidean length (straight-line length) from (0, 0) to (x, y). If you are comparing the lengths of vectors, you should compare the length squared instead as it is slightly more efficient to calculate.

.lerp ( v, alpha )
v - Vector2 to interpolate towards.
alpha - interpolation factor in the closed interval [0, 1].
Linearly interpolates between this vector and v, where alpha is the distance along the line - alpha = 0 will be this vector, and alpha = 1 will be v.

.lerpVectors ( v1, v2, alpha )
v1 - the starting Vector2.
v2 - Vector2 to interpolate towards.
alpha - interpolation factor in the closed interval [0, 1]. Sets this vector to be the vector linearly interpolated between v1 and v2 where alpha is the distance along the line connecting the two vectors - alpha = 0 will be v1, and alpha = 1 will be v2.

.negate ()
Inverts this vector - i.e. sets x = -x and y = -y.

.normalize ()
Converts this vector to a unit vector - that is, sets it equal to the vector with the same direction as this one, but length 1.

.max ( v )
If this vector's x or y value is less than v's x or y value, replace that value with the corresponding max value.

.min ( v )
If this vector's x or y value is greater than v's x or y value, replace that value with the corresponding min value.

.multiply ( v )
Multiplies this vector by v.

.multiplyScalar ( s )
Multiplies this vector by scalar s.

.rotateAround ( center, angle )
center - the point around which to rotate.
angle - the angle to rotate, in radians.
Rotates the vector around center by angle radians.

.round ()
The components of the vector are rounded to the nearest integer value.

.roundToZero ()
The components of the vector are rounded towards zero (up if negative, down if positive) to an integer value.

.set ( x, y )
Sets the x and y components of this vector.

.setComponent ( index, value )
index - 0 or 1.
value - Float
If index equals 0 set x to value. If index equals 1 set y to value

.setLength ( l )
Sets this vector to the vector with the same direction as this one, but length l.

.setScalar ( scalar )
Sets the x and y values of this vector both equal to scalar.
.setX ( x )
Replaces this vector's x value with x.

.setY ( y )
Replaces this vector's y value with y.

.sub ( v )
Метод вычитает из данного вектора вектор v.

.subScalar ( s )
Вычитает скаляр s из компонентов x и y данного вектора.

.subVectors ( a, b )
Устанавливает данный вектор как a - b.

.toArray( array, offset )
array - дополнительный, необязательный массив для хранения вектора. Если он не предоставлен, будет создан новый массив.
offset - дополнительное, необязательное смещение в массиве.
Возвращает массив в виде [x, y] или копирует x и y в предоставленный (array) массив.

Исходники



Vector3

Класс, представляющий трехмерный (3D) вектор. (Вот статья Википедии о векторном пространстве на русском языке.) Вектор 3D - это упорядоченная тройка (триплет) чисел (помеченных как x, y и z), которая может использоваться для представления ряда вещей, таких как:
  • Точка в трехмерном пространстве.
  • Направление и расстояние в трехмерном пространстве. В three.js расстояние всегда будет Эвклидовым расстоянием (т.е. расстоянием по прямой линии) от точки начала координат (0, 0, 0) до координат заданной точки (x, y, z), направление также измеряется от (0, 0, 0) к (x, y, z).
  • Любая произвольная упорядоченная тройка (триплет) чисел.
Имеются и другие вещи, которые можно представить как 3D-вектор (такие как векторы импульса и т. д.), однако это его наиболее распространенное использование в three.js.

Пример

var a = new THREE.Vector3( 0, 1, 0 );
// no arguments; will be initialised to (0, 0, 0) // без аргументов вектор будет инициализирован как (0, 0, 0) var b = new THREE.Vector3( );
var d = a.distanceTo( b );

Конструктор

Vector3 ( x, y, z )
x - значение x вектора, по умолчанию равно 0.
y - значение y вектора, по умолчанию равно 0.
z - значение z вектора, по умолчанию равно 0.
Создает новый трехмерный вектор Vector3.

Свойства


.isVector3
Свойство используется для проверки, является ли данный класс и производные от него классы трехмерными векторами (Vector3). Значением по умолчанию является true.
Не изменяйте это свойство, так как оно используется для оптимизации внутри three.js.

.x


.y


.z

Методы


.add( v )
Метод добавляет к данному вектору вектор v.

.addScalar( s )
Метод добавляет скалярное значение s к значениям данного вектора x, y и z.

.addScaledVector( v, s )
Добавляет к данному вектору множество из v и s.

.addVectors( a, b )
Устанавливает данный вектор как a + b.

.angleTo( v )
Метод возвращает угол в радианах между данным вектором и вектором, указанном в параметре v.

.applyAxisAngle( axis, angle )
axis - нормализованный вектор Vector3.
angle - угол в радианах.
Метод применяет к данному вектору поворот, указанный осями (параметр axis) и углом (параметр angle).

.applyEuler( euler )
Applies euler transform to this vector by converting the Euler object to a Quaternion and applying.

.applyMatrix3( m )
Метод умножает данный вектор на матрицу, указанную в параметре m.

.applyMatrix4( m )
Перемножает данный вектор (с подразумеваемой 1 в четвертом измерении) с матрицей m и делит на перспективу. Multiplies this vector (with an implicit 1 in the 4th dimension) and m, and divides by perspective.

.applyQuaternion ( quaternion )
Applies a Quaternion transform to this vector.

.ceil( )
Компоненты вектора x, y и z округляются вверх до ближайшего целочисленного значения.

.clamp( min, max )
min - минимальные значения x, y и z в желаемом диапазоне.
max - максимальные значения x, y и z в желаемом диапазоне.
Если значение x, y или z данного вектора больше значения x, y или z вектора, указанного в параметре max, оно заменяется этим соответствующим значением.
Если значение x, y или z данного вектора меньше значения x, y или z вектора, указанного в параметре min, оно заменяется этим соответствующим значением.

.clampLength( min, max )
min - минимальное значение длины, на котором она будет зафиксирована (зажата).
max - максимальное значение длины, на котором она будет зафиксирована (зажата).
Если длина данного вектора больше значения, указанного в параметре max, она заменяется на значение max.
Если длина данного вектора меньше значения, указанного в параметре min, она заменяется на значение min.

.clampScalar( min, max )
min - минимальное значение компонентов, на котором они будут зафиксированы (зажаты).
max - максимальное значение компонентов, на котором они будут зафиксированы (зажаты).
Если значение x, y или z данного вектора больше значения, указанного в параметре max, оно заменяется на значение max.
Если значение x, y или z данного вектора меньше значения, указанного в параметре min, оно заменяется на значение min.

.clone( )
Возвращает новый Vector3 с такими же значениями x, y и z, что и у данного вектора.

.copy( v )
Копирует значения свойств x, y и z из вектора, переданного в параметре v, в данный трехмерный вектор.

.cross( v )
Метод устанавливает данный вектор как векторное произведение (в англоязычном варианте это cross product) самого себя и вектора, указанного в параметре v.

.crossVectors( a, b )
Устанавливает данный вектор как векторное произведение (в англоязычном варианте это cross product) векторов, указанных в параметрах a и b.

.distanceTo( v )
Метод вычисляет расстояние от данного вектора до вектора, указанного в параметре v.

.distanceToManhattan( v )
Метод вычисляет манхэттенское расстояние (Manhattan length) от данного вектора до вектора, указанного в параметре v.

.distanceToSquared( v )
Вычисляет квадрат расстояния от данного вектора до вектора, указанного в параметре v. При простом сравнении одного расстояния с другим взамен следует сравнивать именно квадраты расстояний, так как это вычисление несколько более эффективно.
Примечание переводчика: Вычисление расстояния методом distanceTo это вычисление квадратного корня из результата, полученного методом distanceToSquared.

.divide( v )
Метод делит данный вектор на вектор, указанный в параметре v.

.divideScalar( s )
Делит данный вектор на скалярное значение s. Если значение скаляра равно нулю (s = 0), вектор устанавливается как (0, 0).

.dot( v )
Метод вычисляет скалярное произведение (dot product) данного вектора и вектора, переданного в параметре v.

.equals( v )
Метод проверяет точное равенство данного вектора и вектора, переданного в параметре v.

.floor( )
Этим методом компоненты вектора округляются вниз, до ближайшего целочисленного значения.

.fromArray ( array, offset )
array - исходный массив в виде [x, y, z, w].
offset - смещение массива (дополнительный, необязательный параметр). Значение по умолчанию равно 0.
Метод устанавливает для данного вектора значение x равное array[ offset + 0 ], значение y равное array[ offset + 1 ] и значение z равное array[ offset + 2 ].

.fromBufferAttribute( attribute, index )
attribute - исходный атрибут.
index - индекс в атрибуте.
Устанавливает значения x, y и z данного вектора из атрибута, указанного в параметре attribute.

.getComponent( index )
index -- целочисленное значение, может быть 0, 1 или 2.
Если индекс равен 0, возвращается значение x.
Если индекс равен 1, возвращается значение y.
Если индекс равен 2, возвращается значение z.

.length( )
Вычисляет евклидову длину (Euclidean length), т.е. расстояние по прямой линии, от точки начала координат (0, 0, 0) до точки с заданными координатами (x, y, z).

.lengthManhattan( )
Метод вычисляет манхэттенское расстояние (Manhattan length) данного вектора.

.lengthSq( )
Метод вычисляет квадрат евклидовой длины (Euclidean length), т.е. квадрат расстояния по прямой линии, от точки начала координат (0, 0, 0) до точки с заданными координатами (x, y, z). При сравнении длин векторов, взамен сравнения длин, следует сравнивать квадраты длины, так как для расчета это несколько более эффективно.
Примечание переводчика: Вычисление длины вектора методом length это вычисление квадратного корня из результата, полученного методом lengthSq.

.lerp( v, alpha )
v - трехмерный вектор (Vector3), до которого будет проводится операция интерполирования.
alpha - коэффициент интерполяции в закрытом интервале [0, 1].
Метод выполняет операцию линейного интерполирования между данным вектором и вектором, переданным в параметре v с коэффициентом интерполяции alpha, причем alpha можно рассматривать как расстояние вдоль линии соединения этих двух векторов - при alpha = 0, он будет равен данному вектору, а при alpha = 1 - вектору v.

.lerpVectors( v1, v2, alpha )
v2 - трехмерный вектор (Vector3), до которого будет проводится операция интерполирования.
alpha - коэффициент интерполяции в закрытом интервале [0, 1].
Метод устанавливает данный вектор как линейно интерполированный вектор между векторами v1 и v2, и где alpha - это расстояние вдоль линии соединения этих двух векторов - при alpha = 0, он будет равен вектору v1, при alpha = 1 - вектору v2.

.max( v )
Если значение x, y или z данного вектора меньше значения x, y или z вектора, переданного в параметре v, то это значение заменяется соответствующим значением вектора v.

.min( v )
Если значение x, y или z данного вектора больше значения x, y или z вектора, переданного в параметре v, то это значение заменяется соответствующим значением вектора v.

.multiply( v )
Метод умножает данный вектор на вектор, указанный в параметре v.

.multiplyScalar( s )
Метод умножает данный вектор на скаляр, переданный в параметре s.

.multiplyVectors( a, b )
Устанавливает данный вектор равным a×b.

.negate( )
Метод инвертирует данный вектор, т.е. устанавливает x = -x, y = -y и z = -z.

.normalize( )
Метод преобразовывает данный вектор в единичный вектор (unit vector) - то есть, направление его остается тем же самым, а длина вектора (length) устанавливается равной 1.

.project( camera )
camera — камера, используемая в проекции.
Метод проецирует вектор на камеру. Projects the vector with the camera.

.projectOnPlane( planeNormal )
planeNormal - A vector representing a plane normal.
Метод проецирует данный вектор на плоскость путем вычитания из данного вектора проекции данного вектора на нормаль к этой плоскости.

.projectOnVector( Vector3 )
Метод проецирует данный вектор на другой вектор (параметр Vector3).

.reflect( normal )
normal - нормаль (перпендикуляр) к плоскости отражения.
Метод отражает вектор от плоскости, перпендикулярной (ортогональной) к нормали (параметр normal). Предполагается что нормаль имеет единичную длину.

.round( )
Метод округляет компоненты вектора до ближайшего целочисленного значения.

.roundToZero( )
Метод округляет компоненты вектора к нулю (если значение отрицательно - происходит округление вверх, если положительное - вниз) до целочисленного значения.

.set ( x, y, z )
Устанавливает компоненты x, y и z данного вектора.

.setComponent( index, value )
index -- целочисленное значение, может быть 0, 1 или 2.
value -- число с плавающей запятой.
Если индекс равен 0, устанавливается значение x.
Если индекс равен 1, устанавливается значение y.
Если индекс равен 2, устанавливается значение z.

.setFromCylindrical( c )
Sets this vector from the cylindrical coordinates c.

.setFromMatrixColumn( matrix, index )
Sets this vector's x, y and z equal to the column of the matrix specified by the index.

.setFromMatrixPosition( m )
Sets this vector to the position elements of the transformation matrix m.

.setFromMatrixScale( m )
Sets this vector to the scale elements of the transformation matrix m.

.setFromSpherical( s )
Sets this vector from the spherical coordinates s.

.setLength ( l )
Метод устанавливает данный вектор как вектор с тем же самым направлением, но длиной (length) равной l.

.setScalar( scalar )
Устанавливает все значения x, y и z данного вектора равными скалярному значению, указанному в параметре scalar.

.setX( x )
Метод заменяет значение x данного вектора на значение, переданное в параметре x.

.setY( y )
Метод заменяет значение y данного вектора на значение, переданное в параметре y.

.setZ( z )
Метод заменяет значение z данного вектора на значение, переданное в параметре z.

.sub ( v )
Метод вычитает из данного вектора вектор, указанный в параметре v.

.subScalar ( s )
Метод вычитает из компонентов x, y и z данного вектора скалярное значение, указанное в параметре s.

.subVectors( a, b )
Метод устанавливает данный вектор как разницу векторов a - b.

.toArray( array, offset )
array - дополнительный, необязательный массив для хранения вектора. Если он не предоставлен, создается новый массив.
offset - дополнительное, необязательное смещение в массиве.
Возвращает массив в виде [x, y, z], или копирует x, y и z в предоставленный (array) массив.

.transformDirection ( m )
Метод изменяет данный вектор на матрицу (набор 3×3 вверху слева в матрице, переданной в параметре m) и затем нормализует результат.

.unproject ( camera )
camera — камера, используемая в проекции.
Отменяет проецирование вектора на матрицу проекции камеры. Unprojects the vector with the camera's projection matrix.

Исходники



Vector4

Класс, представляющий четырехмерный (4D) вектор. (Вот статья Википедии о векторном пространстве на русском языке.) Вектор 4D - это упорядоченная четверка (квадруплет) чисел (помеченных как x, y, z и w), которая может использоваться для представления ряда вещей, таких как:
  • Точка в четырехмерном пространстве.
  • Направление и расстояние в четырехмерном пространстве. В three.js расстояние всегда будет Эвклидовым расстоянием (т.е. расстоянием по прямой линии) от точки начала координат (0, 0, 0, 0) до координат заданной точки (x, y, z, w), направление также измеряется от (0, 0, 0, 0) к (x, y, z, w).
  • Любая произвольная упорядоченная четверка (квадруплет) чисел.
Имеются и другие вещи, которые можно представить как 4D-вектор, однако это его наиболее распространенное использование в three.js.

Пример

var a = new THREE.Vector4( 0, 1, 0, 0 );
// no arguments; will be initialised to (0, 0, 0, 1) // без аргументов вектор будет инициализирован как (0, 0, 0, 1) var b = new THREE.Vector4( );
var d = a.dot( b );

Конструктор

Vector4 ( x, y, z, w )
x - значение x вектора, по умолчанию равно 0.
y - значение y вектора, по умолчанию равно 0.
z - значение z вектора, по умолчанию равно 0.
w - значение w вектора, по умолчанию равно 1.
Создает новый Vector4.

Свойства


.isVector4
Свойство используется для проверки, является ли данный класс и производные от него классы четырехмерными векторами (Vector4). Значением по умолчанию является true.
Не изменяйте это свойство, так как оно используется для оптимизации внутри three.js.

.x


.y


.z


.w

Методы


.add( v )
Метод добавляет к данному вектору вектор v.

.addScalar( s )
Метод добавляет скалярное значение s к значениям данного вектора x, y, z и w.

.addScaledVector( v, s )
Добавляет к данному вектору множество из v и s.

.addVectors( a, b )
Устанавливает данный вектор как a + b.

.applyMatrix4( m )
Метод умножает данный вектор с матрицей 4×4, заданной в аргументе m.

.ceil( )
Компоненты вектора x, y, z и w округляются вверх до ближайшего целочисленного значения.

.clamp( min, max )
min - минимальные значения x, y, z и w в желаемом диапазоне.
max - максимальные значения x, y, z и w в желаемом диапазоне.
Если значение x, y, z или w данного вектора больше значения x, y, z или w вектора, указанного в параметре max, оно заменяется этим соответствующим значением.
Если значение x, y, z или w данного вектора меньше значения x, y, z или w вектора, указанного в параметре min, оно заменяется этим соответствующим значением.

.clampLength( min, max )
min - минимальное значение длины, на котором она будет зафиксирована (зажата).
max - максимальное значение длины, на котором она будет зафиксирована (зажата).
Если длина данного вектора больше значения, указанного в параметре max, она заменяется на значение max.
Если длина данного вектора меньше значения, указанного в параметре min, она заменяется на значение min.

.clampScalar( min, max )
min - минимальное значение компонентов, на котором они будут зафиксированы (зажаты).
max - максимальное значение компонентов, на котором они будут зафиксированы (зажаты).
Если значение x, y, z или w данного вектора больше значения, указанного в параметре max, оно заменяется на значение max.
Если значение x, y, z или w данного вектора меньше значения, указанного в параметре min, оно заменяется на значение min.

.clone( )
Возвращает новый Vector4 с такими же значениями x, y, z и w, что и у данного вектора.

.copy( v )
Копирует значения свойств x, y, z и w из вектора, переданного в параметре v, в данный четырехмерный вектор.

.divideScalar( s )
Делит данный вектор на скалярное значение s. Если значение скаляра равно нулю (s = 0), вектор устанавливается как (0, 0).

.dot( v )
Метод вычисляет скалярное произведение (dot product) данного вектора и вектора, переданного в параметре v.

.equals( v )
Метод проверяет точное равенство данного вектора и вектора, переданного в параметре v.

.floor( )
Этим методом компоненты вектора округляются вниз, до ближайшего целочисленного значения.

.fromArray ( array, offset )
array - исходный массив в виде [x, y, z, w].
offset - смещение массива (дополнительный, необязательный параметр). Значение по умолчанию равно 0.
Метод устанавливает для данного вектора значение x равное array[ offset + 0 ], значение y равное array[ offset + 1 ], значение z равное array[ offset + 2 ] и значение w равное array[ offset + 3 ].

.fromBufferAttribute( attribute, index )
attribute - исходный атрибут.
index - индекс в атрибуте.
Устанавливает значения x, y, z и w данного вектора из атрибута, указанного в параметре attribute.

.getComponent( index )
index -- целочисленное значение, может быть 0, 1, 2, или 3.
Если индекс равен 0, возвращается значение x.
Если индекс равен 1, возвращается значение y.
Если индекс равен 2, возвращается значение z.
Если индекс равен 3, возвращается значение w.

.length( )
Вычисляет евклидову длину (Euclidean length), т.е. расстояние по прямой линии, от точки начала координат (0, 0, 0, 0) до точки с заданными координатами (x, y, z, w).

.lengthManhattan( )
Метод вычисляет манхэттенское расстояние (Manhattan length) данного вектора.

.lengthSq( )
Метод вычисляет квадрат евклидовой длины (Euclidean length), т.е. квадрат расстояния по прямой линии, от точки начала координат (0, 0, 0, 0) до точки с заданными координатами (x, y, z, w). При сравнении длин векторов, взамен сравнения длин, следует сравнивать квадраты длины, так как для расчета это несколько более эффективно.
Примечание переводчика: Вычисление длины вектора методом length это вычисление квадратного корня из результата, полученного методом lengthSq.

.lerp( v, alpha )
v - четырехмерный вектор (Vector4), до которого будет проводится операция интерполирования.
alpha - коэффициент интерполяции в закрытом интервале [0, 1].
Метод выполняет операцию линейного интерполирования между данным вектором и вектором, переданным в параметре v с коэффициентом интерполяции alpha, причем alpha можно рассматривать как расстояние вдоль линии соединения этих двух векторов - при alpha = 0, он будет равен данному вектору, а при alpha = 1 - вектору v.

.lerpVectors( v1, v2, alpha )
v2 - четырехмерный вектор (Vector4), до которого будет проводится операция интерполирования.
alpha - коэффициент интерполяции в закрытом интервале [0, 1].
Метод устанавливает данный вектор как линейно интерполированный вектор между векторами v1 и v2, и где alpha - это расстояние вдоль линии соединения этих двух векторов - при alpha = 0, он будет равен вектору v1, при alpha = 1 - вектору v2.

.max( v )
Если значение x, y, z или w данного вектора меньше значения x, y, z или w вектора, переданного в параметре v, то это значение заменяется соответствующим значением вектора v.

.min( v )
Если значение x, y, z или w данного вектора больше значения x, y, z или w вектора, переданного в параметре v, то это значение заменяется соответствующим значением вектора v.

.multiplyScalar( s )
Метод умножает данный вектор на скаляр, переданный в параметре s.

.negate( )
Метод инвертирует данный вектор, т.е. устанавливает x = -x, y = -y, z = -z и w = -w.

.normalize( )
Метод преобразовывает данный вектор в единичный вектор (unit vector) - то есть, направление его остается тем же самым, а длина вектора (length) устанавливается равной 1.

.round( )
Метод округляет компоненты вектора до ближайшего целочисленного значения.

.roundToZero( )
Метод округляет компоненты вектора к нулю (если значение отрицательно - происходит округление вверх, если положительное - вниз) до целочисленного значения.

.set ( x, y, z, w )
Устанавливает компоненты x, y, z и w данного вектора.

.setAxisAngleFromQuaternion( q )
q - нормализованнй кватернион.
Метод устанавливает значения компонентов x, y, z данного вектора по осям кватерниона, а значение компонента w по углу.

.setAxisAngleFromRotationMatrix( m )
m - матрица 4×4, в которой матрица 3×3, вверху слева, является простой матрицей вращения.
Метод устанавливает значения x, y, z по осям вращения, а значение w по углу.

.setComponent( index, value )
index -- целочисленное значение, может быть 0, 1, 2, или 3.
value -- число с плавающей запятой.
Если индекс равен 0, устанавливается значение x.
Если индекс равен 1, устанавливается значение y.
Если индекс равен 2, устанавливается значение z.
Если индекс равен 3, устанавливается значение w.

.setLength ( l )
Метод устанавливает данный вектор как вектор с тем же самым направлением, но длиной (length) равной l.

.setScalar( scalar )
Устанавливает все значения x, y, z и w данного вектора равными скалярному значению, указанному в параметре scalar.

.setX( x )
Метод заменяет значение x данного вектора на значение, переданное в параметре x.

.setY( y )
Метод заменяет значение y данного вектора на значение, переданное в параметре y.

.setZ( z )
Метод заменяет значение z данного вектора на значение, переданное в параметре z.

.setW( w )
Метод заменяет значение w данного вектора на значение, переданное в параметре w.

.sub ( v )
Метод вычитает из данного вектора вектор, указанный в параметре v.

.subScalar ( s )
Метод вычитает из компонентов x, y, z и w данного вектора скалярное значение, указанное в параметре s.

.subVectors( a, b )
Метод устанавливает данный вектор как разницу векторов a - b.

.toArray( array, offset )
array - дополнительный, необязательный массив для хранения вектора. Если он не предоставлен, создается новый массив.
offset - дополнительное, необязательное смещение в массиве.
Возвращает массив в виде [x, y, z, w], или копирует x, y, z и w в предоставленный (array) массив.

Исходники

Vector4.js на Гитхабе