Матрица (Matrix)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску


Matrix(/)
Представляет собой матрицу 4x4, которая используется в различных местах Ren'Py.
Для преобразования координат используют 16 элементов этой матрицы:
xdx, xdy, xdz, xdw,
ydx, ydy, ydz, ydw,
zdx, zdy, zdz, zdw,
wdx, wdy, wdz, wdw
где x' = xdx * x + xdy * y + xdz * z + xdw * w, где x - исходное значение x, а x' - преобразованное значение, и аналогично для x, y, z и w. Обычно это применяется к позиции, где w равно 1, что позволяет выразить любую комбинацию перемещения, поворота и масштабирования в одной матрице.


При преобразование цветов используют 16 элементов этой матрицы:
rdr, rdg, rdb, rda,
gdr, gdg, gdg, gda,
bdr, bdg, bdb, bda,
adr, adg, adb, ada,
Для красного, зелёного, синего и альфа-каналов.


Матричные объекты можно перемножать с помощью оператора умножения языка Python, для создания матрицы, которая выполняет обе операции. Порядок, в котором появляются матрицы, может иметь значение. Предположим, что v - это позиция или цвет, которые преобразуются:
(step2 * step1) * v
это эквивалентно:
step2 * (step1 * v)


/
Это может быть список из 4, 9 или 16 чисел, который используется для введения этой матрицы. Если не все 16, инициализируется верхний левый угол матрицы, при этом zdz и wdw устанавливаются в 1.0, если не заданы. Например:
Matrix([ 1, 2, 3, 4 ])
приведёт к появлению Матрицы:
1.0, 2.0, 0.0, 0.0,
3.0, 4.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0,


Matrix.identity()

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


Matrix.offset(x, y, z)

Возвращает матрицу, которая смещает вершину на фиксированную величину.


Matrix.perspective(w, h, n, p, f)

Возвращает матрицу, подходящую для перспективной проекции изображения в системе координат Ren'Py. Это вид в системе координат, в котором z=0, (0, 0) соответствует левому верхнему углу экрана, а (w, h) - правому нижнему углу экрана.
w, h
Ширина и высота входной плоскости в пикселях.
n
Расстояние ближней плоскости от камеры.
p
На каком расстоянии от камеры находится плоскость z=0. Здесь также один виртуальный пиксель равен одной координатной единице по x и y.
f
Расстояние дальней плоскости от камеры.


Matrix.rotate(x, y, z)

Возвращает матрицу, которая вращает отображаемый объект вокруг начала координат.
x, y, z
Величина поворота вокруг начала координат в градусах.


Вращения применяются в следующем порядке:
  • Поворот по часовой стрелке на x градусов в плоскости Y/Z.
  • Поворот по часовой стрелке на y градусов в плоскости Z/X.
  • Поворот по часовой стрелке на z градусов в плоскости X/Y.


Matrix.scale(x, y, z)

Возвращает матрицу, которая масштабирует отображаемый объект.
x, y, z
Коэффициент, на который масштабируется каждая ось.

Источник[править | править код]

Статья "Matrix" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи