Matrix
- class Matrix(l)
Представляет матрицу 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,
Для красного, зелёного, синего и альфа-каналов.
Объекты Matrix можно перемножать с помощью оператора умножения Python, чтобы создать матрицу, которая выполняет обе операции. Порядок, в котором расположены матрицы, может иметь значение. Предполагая, что v — это позиция или цвет, который преобразуется:
(step2 * step1) * v
эквивалентно:
step2 * (step1 * v)
- l
Это может быть список из 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)
Возвращает матрицу, которая смещает вершину (vertex) на фиксированную величину.
- 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)
Возвращает матрицу, которая вращает displayable вокруг начала координат.
- x, y, z
Угол вращения вокруг начала координат, в градусах.
Вращения применяются в следующем порядке:
Вращение по часовой стрелке на x градусов в плоскости Y/Z.
Вращение по часовой стрелке на y градусов в плоскости Z/X.
Вращение по часовой стрелке на z градусов в плоскости X/Y.
- Matrix.scale(x, y, z)
Возвращает матрицу, которая масштабирует displayable.
- x, y, z
Коэффициент масштабирования для каждой оси.