Это старая версия документа.
У 3D-объекта есть следующие три свойства, которые синхронизируются между всеми клиентами виртуального мира автоматически:
Задание позиции
Чтение (копирование) позиции
Операции над позицией • Получить длину (модуль вектора) – pos.length() • Нормализовать вектор – pos.normalize() • Векторное произведение – pos.cross( new Position3D(0,0,1)); • Умножить вектор на скаляр – pos.mult( scalar); • Поделить позицию на число – pos.div(10); • Интерполяция с другой позицией с коэффициентом koef – pos.blend(pos2, koef); • Узнать угол поворота между вектором и другим вектором – var ang = pos.angle(pos2);
3.2. Свойство rotation. Задание поворота • obj.rotation = new Rotation3D(x, y, z, angle), где – x, y, z – ось вращения – angle – угол в градусах
Внимание! Не следует пытаться задать отдельные компоненты поворота, это будет работать неправильно, т.к. фактически поворот является кватернионом, который для правильного использования должен быть постоянно в нормализованном состоянии. Нормализация производится после изменения каждого компонента.
Чтение (копирование) поворота • Способ 1: – var x = obj.rotation.x; – var y = obj.rotation.y; – var z = obj.rotation.z; – var angle = obj.rotation.w; • Способ 2: – var rtn = obj.rotation.clone(); Операции над поворотом • Прибавить один поворот к другому – rtn.mult(rotation2); • Повернуть позицию вокруг начала координат – pos.mult(rotation); • Обратный поворот – rotation. conjugate(); • Интерполяция с коэффициентом koef – rotation.blend(secondRTN, koef);
3.3. Свойство scale. Задание масштаба • Способ 1: – obj.scale.x = 10; – obj.scale.y = 12; – obj.scale.z = 15; • Способ 2: – obj.scale = new Scale3D(10, 12, 15); Чтение (копирование) масштаба • Способ 1: – var x = obj.scale.x; – var y = obj.scale.y; – var z = obj.scale.z; • Способ 2: – var scl = obj.scale.clone();