Метод
Метод
Это метод можно использовать совместно с методом
Класс Vector3D может также представлять направление, стрелку от исходной точки координатной системы с координатами (0,0,0) до конечной точки; или компоненты плавающей запятой цветовой модели RGB (Red, Green, Blue — красный, зеленый, синий).
Кватернион добавляет четвертый элемент, свойство
В результате сложения двух векторов получается результирующий вектор. Одним из способов визуализации результата является рисование вектора из начальной или конечной точки первого вектора до конечной или начальной точки второго вектора. Полученным в результате вектором будет являться расстояние между начальной точкой первого вектора и конечной точкой второго вектора.
Метод
Для перевода градусов в радианы можно использовать следующую формулу:
Можно использовать нормализованное векторное произведение двух вершин поверхности многоугольника и нормализованного вектора камеры или точки обзора наблюдателя для получения скалярного произведения. Значение скалярного произведения определяет, будет ли поверхность трехмерного объекта невидимой.
Метод
Если текущий объект Vector3D является результатом умножения объекта Vector3D на объект проекции Matrix3D, в свойстве
Запись кватерниона включает в себя угол в качестве четвертого элемента вычисления трехмерного вращения. Свойство
Более того, свойство
To support a camera viewpoint and motion, create a camera class that keeps a Matrix3D object for
handling the movement of the display objects relative to the camera. In the camera space, the display objects
move in the opposite direction of the camera movement. For example, when the camera moves closer, the objects
become bigger. In other words, if the camera moves down the world z axis, the objects moves up
the z axis. One way to produce this effect is by setting the Matrix3D object of the camera class
to the inverse of the display objects' transformation. If the display objects are children of the root
display object, the Matrix3D object of the camera class can be set to the inverse of the root
display object. Another option is to have the display objects as children of a camera object.
В одной матрице могут сочетаться несколько преобразований и их одновременное применение к трехмерному экранному объекту. Например, матрицу можно применить к трехмерным координатам для выполнения поворота с последующим перемещением.
Если свойство
Доступ к объекту Matrix3D трехмерного экранного объекта можно получить с помощью свойства
Значение свойства
Примечание. Если один объект Matrix3D назначен двум различным экранным объектам, возникает ошибка выполнения.
В классе Matrix3D используется квадратная матрица размерностью 4x4, представляющая собой таблицу чисел из четырех строк и столбцов, в которой содержатся данные для преобразования. В первых трех строках матрицы содержатся данные для каждой трехмерной оси (x,y,z). Данные о преобразовании находятся в последнем столбце. Данные об ориентации и масштабировании хранятся в первых трех столбцах. Коэффициенты масштабирования являются диагональными числами в первых трех столбцах. Ниже представлены элементы Matrix3D:
Для использования класса Matrix3D не требуется понимание принципов вычисления матриц. В нем предоставляются определенные методы, которые позволяют упростить задачи преобразования и проецирования, например методы
В экранных объектах выполняется кэширование свойств поворота осей для выполнения отдельного поворота каждой оси и управления различными комбинациями поворотов. При вызове метода объекта Matrix3D для преобразования экранного объекта кэш поворота объекта становится недействительным.
Если отсутствуют заданные параметры, конструктор создает единичный объект Matrix3D. По определению в единичной матрице присвоены единичные значения для всех элементов по главной диагонали и нулевые значения для всех остальных элементов. Значением свойства
Поворот экранного объекта определяется осью, постепенно увеличивающимся углом поворота вокруг оси и дополнительной точкой поворота для центра поворота объекта. Ось может располагаться в одном из общепринятых направлений. Наиболее часто используемыми осями являются
Порядок преобразования учитывается. Эффект преобразования поворота с последующим перемещением отличается от преобразования перемещения с последующим поворотом.
Эффект поворота не является абсолютным. Он выполняется относительно текущего положения и ориентации. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод
Когда преобразование метода
Одним из способов вращения экранного объекта вокруг определенной точки относительно его расположения является настройка перемещения объекта в заданную точку, вращение объекта с использованием метода
Масштаб определяется как набор трех инкрементных изменений вдоль трех осей (x,y,z). Каждую ось можно умножить на различное число. При применении изменений масштаба к экранному объекту размер объекта увеличивается или уменьшается. Например, установка осей x, y и z на значение 2 увеличивает размер объекта вдвое, тогда как установка этих осей на значение
Метод
Порядок преобразования учитывается. Эффект масштабирования с последующим перемещением отличается от эффекта перемещения с последующим преобразованием масштаба.
Перемещение определяется как набор из трех инкрементных изменений вдоль трех осей (x,y,z). Когда преобразование применяется к экранному объекту, экранный объект перемещается из текущего положения вдоль осей x, y и z в соответствии с заданными параметрами. Чтобы перемещение выполнялось только относительно определенной оси, необходимо задать для остальных параметров нулевые значения. Нулевое значение параметра означает, что изменение вдоль заданной оси выполняться не будет.
Изменения перемещения не являются абсолютными. Они выполняются относительно текущего расположения и ориентации матрицы. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод
Умножение матриц отличается от сложения матриц. Умножение матриц не является коммутативным. Другими словами, A, умноженное на Б, не равно Б, умноженному на А. При использовании метода
При первом вызове метода
Метод
Некоторые методы Matrix3D, например метод
Чтобы модифицировать преобразование матрицы с использованием абсолютной родительской системой координат, получите параметры при помощи метода
Параметр метода
Метод
Преобразование объекта путем применения единичной матрицы не выполняется. Другими словами, если матрица умножается на единичную матрицу, в результате получается матрица, идентичная исходной матрице.
Метод
При последующих вызовах метода
Метод
При последующих вызовах метода
Обратную матрицу можно использовать для деления одной матрицы на другую. Разделить матрицу A на матрицу B можно, умножив матрицу А на обратную матрицу B. Обратную матрицу можно также использовать с пространством камеры. При перемещении камеры в пространстве мировых координат объект в этом пространстве должен перемещаться в обратном направлении для выполнения преобразования представления в мировых координатах в пространство камеры или обзора. Например, когда камера перемещается ближе, объекты становятся больше. Другими словами, если камера перемещается вниз по оси z мировой системы координат, объект перемещается вверх по оси z мировой системы координат.
Метод
Объект Matrix3D должен быть обратимым.
Метод
Примечание. Если метод
Поворот экранного объекта определяется осью, постепенно увеличивающимся углом поворота вокруг оси и дополнительной точкой поворота для центра поворота объекта. Ось может располагаться в одном из общепринятых направлений. Наиболее часто используемыми осями являются
Порядок преобразования учитывается. Эффект преобразования поворота с последующим перемещением отличается от перемещения с последующим поворотом.
Эффект поворота не является абсолютным. Эффект относится к объекту, то есть относительно координатной системы исходного положения и ориентации. Для выполнения абсолютного изменения преобразования необходимо использовать метод
Когда преобразование метода
Одним из способов вращения экранного объекта вокруг определенной точки относительно его расположения является настройка перемещения объекта в заданную точку, вращение объекта с использованием метода
Масштаб определяется как набор трех инкрементных изменений вдоль трех осей (x,y,z). Каждую ось можно умножить на различное число. При применении изменений масштаба к экранному объекту размер объекта увеличивается или уменьшается. Например, установка осей x, y и z на значение 2 увеличивает размер объекта вдвое, тогда как установка этих осей на значение
Метод
Порядок преобразования учитывается. Эффект масштабирования с последующим перемещением отличается от эффекта перемещения с последующим преобразованием масштаба.
Перемещение определяет расстояние, на которое передвигается экранный объект из текущего положения вдоль осей x, y и z. Метод
Изменения перемещения не являются абсолютными. Эффект относится к объекту, то есть относительно координатной системы исходного положения и ориентации. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод
Умножение матриц отличается от сложения матриц. Умножение матриц не является коммутативным. Другими словами, A, умноженное на Б, не равно Б, умноженному на А. При использовании метода
При помощи метода
Метод
Чтобы модифицировать преобразование матрицы с использованием абсолютной родительской системой координат, получите параметры при помощи метода
Параметр метода
Если результат метода
Метод
Ортогональная матрица является квадратной матрицей, транспонирование которой равнозначно обращению.
Объект Matrix3D должен быть обратимым. Свойство
Только для квадратной матрицы, такой как класс Matrix3D, предусмотрен определитель.
С помощью свойства
Исключение выдается, если свойство
Для применения преобразований цвета: создайте объект ColorTransform, задайте настройки цвета, используя методы и свойства объекта, затем назначьте свойство
Для применения двухмерных преобразований: создайте объект Matrix, задайте двухмерное преобразование матрицы, затем назначьте свойство
Для применения трехмерных преобразований: начните с создания трехмерного экранного объекта. Трехмерный экранный объект имеет значение свойства
Для модификации перспективной проекции рабочей области или корневого объекта: при помощи свойства
Так как и объект PerspectiveProjection, и объект Matrix3D выполняют перспективные преобразования, не назначайте оба эти объекта экранному объекту одновременно. Используйте объект PerspectiveProjection для изменения фокусного расстояния и центра проекции. Для расширенного управления перспективным преобразованием создайте объект перспективной проекции Matrix3D.
blueColorTransform
to
the Transform object trans
. This ColorTransform converts the color of the MovieClip
rect
from red to blue.
blueColorTransform
is then applied to the Transform object parentTrans
which
adjusts the color of both parent and child MovieClips towards blue. Notice how child.concatenatedColorTransform
is the
combination of parentTrans
and childTrans
.
scaleMatrix
is then applied to the Transform object parentTrans
which
scales both parent and child MovieClips. Notice how child.concatenatedMatrix
is the
combination of parentTrans
and childTrans
.
Если свойству
scaleMatrix
to the Transform
object trans
. This Matrix scales the MovieClip rect
by a factor of two.
Если свойству
Объект PerspectiveProjection по умолчанию назначается корневому объекту на основе поля обзора и соотношения сторон (размеров) рабочей области.
trans
and traces out
its pixelBounds
. Notice that pixel bounds returns a bounding box with values
equal to MovieClip's getBounds()
and getRect()
methods.
Все эти преобразования называются аффинные преобразования. При аффинных преобразованиях сохраняется прямолинейность линий, поэтому параллельные линии остаются параллельными.
Чтобы применить матрицу преобразования к экранному объекту, необходимо создать объект Transform, настроить его свойство
Объект матрицы преобразования является матрицей размерностью 3x3 со следующим содержимым:
В традиционных матрицах преобразования свойства
Можно получить и настроить значения остальных шести свойств объекта Matrix:
Класс Matrix поддерживает четыре основных типа преобразований: перемещение, масштабирование, поворот и наклон. С помощью специальных методов можно настроить три из перечисленных преобразования, как описано в следующей таблице:
Каждая функция преобразования изменяет текущие свойства матрицы, поэтому можно эффективно комбинировать несколько преобразований. Для этого необходимо вызвать несколько функций преобразования перед применением матрицы к целевому экранному объекту (при использовании свойства
Используйте конструктор
Если в конструкторе
a = 1
b = 0
c = 0
d = 1
tx = 0
ty = 0
В матричном представлении единичная матрица имеет следующий вид:
clonedMatrix
from myMatrix
.
Notice that the Matrix class does not have an equals method, so the following example
uses a custom written function to test the equality of two Matricies.
rotate45Matrix
and doubleScaleMatrix
are applied to the two rectangles
rectangleMc_1
and rectangleMc_2
. Then, the third
Matrix is created using the concat()
method on rotate45Matrix
and
doubleScaleMatrix
to create scaleAndRotateMatrix
.
This Matrix is then applied to rectangleMc_3
to scale and rotate it.
Например, если матрица
Этот метод заменяет исходную матрицу сцепленной матрицей. Если необходимо выполнить сцепление двух матриц без изменения этих двух исходных матриц, сначала скопируйте исходную матрицу с помощью метода
С помощью метода
Например, рассмотрим градиент со следующими характеристиками:
В следующем примере показаны градиенты, в которых матрица была определена с помощью метода
width = 25; height = 25; rotation = 0; tx = 0; ty = 0;
width = 25; height = 25; rotation = 0; tx = 25; ty = 0;
width = 50; height = 50; rotation = 0; tx = 0; ty = 0;
width = 50; height = 50; rotation = Math.PI / 4; // 45 degrees tx = 0; ty = 0;
deltaTransformPoint()
method
to create deltaTransformedPoint
from myPoint
. Notice that
the translate()
method has no affect on the position of deltaTransformedPoint
.
In the example, however, scale()
does affect the position. It
increases the original x
value by a factor of three from 50 to 150.
После вызова метода
В матричном представлении единичная матрица имеет следующий вид:
rotate()
method rotates rectangleMc
30 degrees clockwise. Notice that applying myMatrix
to rectangleMc
resets its _x value leaving us to reset it to 100 manually.
_x
property of the MovieClip object
to position rectangleMc
. Generally, when dealing with Matrix
positioning, mixing positioning techniques is considered bad style. The
example above written in good style would concatenate a translation Matrix to
myMatrix
to change the horizontal location of rectangleMc
.
The following example demonstrates this.
Метод
scale()
method to
scale myMatrix
by a factor of 3 horizontally and a factor of 4
vertically.
Метод
myMatrix
and converts its values
to a String in the format of (a=A, b=B, c=C, d=D, tx=TX, ty=TY).
transformPoint()
method
to create transformedPoint
from myPoint
. Notice that
the translate()
method does have an affect on the position of transformedPoint
.
In the example, scale()
increases the original x
value by a factor of three from 50 to 150, and translate()
increases
x
by 300 for a total value of 450.
translate()
method to position
rectangleMc
x:100 and y:50. Notice that translate()
affects
the translate values tx
and ty
but not a
, b
,
c
, or d
.
Метод
Свойства
В следующих методах и свойствах используются объекты Rectangle:
Конструктор
Примечание. Класс Rectangle не определяет экранный объект прямоугольной формы. Чтобы нарисовать объект прямоугольной формы на экране, необходимо использовать метод
clone
member.
В следующих двух примерах кода получается одинаковый результат:
width
by 16 ~~ 2 (32) and it's height
by 32 ~~ 2 (64)
rect_1
between rect_2
?
rect_1
intersect with rect_2
?
Этот метод задает нулевые значения свойств
rect_1
with some helpful
debugging text.
For example, consider a rectangle with properties x=20
, y=50
, width=60
, and
height=30
(20, 50, 60, 30) and a second rectangle with properties (150, 130, 50, 30).
The union of these two rectangles would be a larger rectangle encompassing the two rectangles
with the properties (20, 50, 180, 110).
Примечание. Метод
rect.right
is also
changed.
width
property
from 10 to 20. Notice that rect.right
also
changes.
rect.left
is also changed.
Значение свойства
rect.top
is also changed.
Значение свойства
bottomRight
property as a Point object.
rect.height
is also
changed.
rect.x
is also changed.
Значение свойства
rect.width
is also
changed.
size
,
changes the size
and sets the new values on the Rectangle instance.
It is critical to remember that the Point
object used by size
uses x and y values to represent the width
and height
properties
of the Rectangle.
topLeft
property as a Point object.
rect.y
is also changed.
Значение свойства
Когда объект ColorTransform применяется к экранному объекту, новое значение для каждого цветового канала вычисляется следующим образом:
Если после вычисления значение цветового канала превышает 255, для него настраивается значение 255. Если значение меньше 0, задается значение 0.
Объекты ColorTransform можно использовать следующими способами:
Необходимо использовать конструктор
Преобразования цветов не применяются к цвету фона фрагмента ролика (например, загруженный объект SWF). Они применяются только к изображениям и символам, прикрепленным к фрагменту ролика.
colorTrans_2
to colorTrans_1
resulting in a full red offset combined with a .5 alpha multiplier.
colorTrans
and calls its toSting()
method. This method results in a string with the format
(redMultiplier=RM, greenMultiplier=GM, blueMultiplier=BM, alphaMultiplier=AM, redOffset=RO, greenOffset=GO, blueOffset=BO, alphaOffset=AO).
colorTrans
and adjusts its alphaMultiplier
from 1 to .5.
Если значение альфа-прозрачности экранного объекта задано напрямую с помощью свойства
colorTrans
and adjusts its alphaOffset
from 0 to -128.
colorTrans
and adjusts its blueMultiplier
from 1 to .5.
colorTrans
and adjusts its blueOffset
from 0 to 255.
colorTrans
and adjusts its greenMultiplier
from 1 to .5.
colorTrans
and adjusts its greenOffset
from 0 to 255.
colorTrans
and adjusts its redMultiplier
from 1 to .5.
colorTrans
and adjusts its redOffset
from 0 to 255.
my_mc
. To see this code work, place a movie clip on the Stage with the instance name my_mc
. Then place the following code on Frame 1 in the main Timeline and select Control > Test Movie:
var my_color:Color = new Color(my_mc);
my_color.setRGB(0xFF0000); // my_mc turns red
При настройке этого свойства изменяются три значения коррекции цвета (
При передаче значения для этого свойства необходимо использовать формат 0xRRGGBB. Каждое значение RR, GG и BB состоит из двух шестнадцатеричных чисел, которые задают коррекцию каждого компонента цвета. Значение 0x указывает компилятору ActionScript, что число является шестнадцатеричным значением.
Следующий код позволяет создать точку с координатами (0,0):
В методах и свойствах следующих классов используются объекты Point:
Конструктор
point_1
with the default constructor.
point_2
with the coordinates x = 1 and y = 2.
resultPoint
by adding point_2
to
point_1
.
clonedPoint
from the values found in
myPoint
. The clonedPoint
contains all the
the values from myPoint
but is not the same object.
interpolatedPoint
) half way (50%) between point_1
and point_2
.
normalizedPoint
object from 5 to 10.
cartesianPoint
from the value of angleInRadians
and a line length of 5. The angleInRadians
value equal to Math.atan(3/4)
is used because of the characteristics of right triangles with sides that
have ratios of 3:4:5.
Math.PI
, consider using the Math.round()
function, as shown
in the following example.
point_3
by subtracting point_2
from point_1
.
myPoint
and gets myX
from myPoint.x
.
myPoint
and gets myY
from myPoint.y
.
myPoint
, and determines the length of a line from (0, 0) to that Point.
В методах
Эйлеровы углы могут иногда приводить к ошибкам анимации из за таких проблем, как сингулярность при вращении вокруг оси x или блокировка вращения. Например, так как при работе с эйлеровыми углами каждая ось обрабатывается отдельно, блокировка вращения может произойти при вращении вокруг двух и более осей. Оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов.
Свойства вращения оси экранного объекта выполняют вращение по типу эйлеровых углов.
В методе
Проекция — это способ представления трехмерного объекта в двухмерном пространстве, например проекция куба на экран компьютера. В перспективной проекции используется конус видимости, прямоугольная пирамида, для моделирования и проецирования трехмерного пространства и его объектов на экране. Конус видимости значительно расширяется по мере удаления от исходного положения точки обзора. Исходным положением точки обзора может являться камера или глаза наблюдателя, смотрящего на экран. Спроецированная перспектива создает иллюзию трехмерного пространства с глубиной и расстоянием, в котором объекты, расположенные ближе к экрану, имеют большие размеры, чем объекты, расположенные на удаленном расстоянии от экрана.
Объект PerspectiveProjection по умолчанию является каркасом, определенным для перспективного преобразования корневого объекта на основе поля обзора и соотношения сторон (размеров) сцены. Центр проекции, точка схода, задан в центре рабочей области, что обозначает, что трехмерные экранные объекты будут исчезать в центре рабочей области при перемещении в обратном направлении по оси z. Точкой просмотра по умолчанию является точка с координатами (0,0) при просмотре сверху вниз вдоль положительной оси z. Ось y направлена вниз экрана. Можно получить доступ к параметрам перспективной проекции экранного объекта
Можно изменить параметр перспективной проекции экранного объекта также посредством перспективной проекции родительского объекта. Сначала создайте объект PerspectiveProjection и задайте его свойства
В экранном объекте, например корневом объекте, можно создать объект PerspectiveProjection без необходимости определения свойства Matrix3D для его преобразования. На самом деле, объект PerspectiveProjection или Matrix3D следует использовать для определения перспективного преобразования. Если при использовании объекта PerspectiveProjection требовался объект Matrix3D, метод
Значение, близкое к
Значение, близкое к
Свойство