Версия 2.1.0

Quick search

Table Of Contents

Преобразование

Этот модуль содержит класс Matrix, используемый для вычислений в графике Kivy. В настоящее время поддерживаются следующие операции:

  • матрицы поворота, трансляции и масштабирования

  • умножение матрицы

  • матрица отсечения (с и без перспективы)

  • матрица преобразования для 3D-сенсоров

Для получения дополнительной информации о матрицах преобразования обратитесь к Учебнику по матрицам OpenGL.

Изменено в версии 1.6.0: Добавлены методы Matrix.perspective(), Matrix.look_at() и Matrix.transpose().

class kivy.graphics.transformation.Matrix

Базовый класс: builtins.object

>>> from kivy.graphics.transformation import Matrix
>>> m = Matrix()
>>> print(m)
[[ 1.000000 0.000000 0.000000 0.000000 ]
[ 0.000000 1.000000 0.000000 0.000000 ]
[ 0.000000 0.000000 1.000000 0.000000 ]
[ 0.000000 0.000000 0.000000 1.000000 ]]

[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [ 12 13 14 15]

get()

Извлекает значение текущей матрицы в виде плоского списка.

Добавлено вверсии 1.9.1.

inverse() Matrix

Возвращает обратную матрицу как новую матрицу.

look_at(double eyex, double eyey, double eyez, double centerx, double centery, double centerz, double upx, double upy, double upz)

Возвращает новую матрицу просмотра (аналогично gluLookAt).

Parameters
eyex: float

Координата X глаз

eyey: float

Координата Y глаз

eyez: float

Координата Z глаз

centerx: float

Положение точки отсчета X

centery: float

Положение точки отсчета Y

centerz: float

Положение точки отсчета Z

upx: float

Значение X вектора верха.

upy: float

Значение Y вектора верха.

upz: float

Значение Z вектора верха.

Добавлено вверсии 1.6.0.

multiply(mb, Matrix ma) Matrix

Умножьте данную матрицу на себя (слева) то есть умножьте данную матрицу на текущую матрицу и верните результат (не в inplace):

m.multiply(n) -> n * m
Parameters
ma: Matrix

Матрица для умножения

normal_matrix() Matrix

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

Добавлено вверсии 1.6.0.

perspective(double fovy, double aspect, double zNear, double zFar) Matrix

Создает матрицу перспективы (в inplace).

Parameters
fovy: float

Угол "поля зрения"

aspect: float

Соотношение сторон

zNear: float

Ближняя плоскость отсечения

zFar: float

Дальняя плоскость отсечения

Добавлено вверсии 1.6.0.

project(double objx, double objy, double objz, Matrix model, Matrix proj, double vx, double vy, double vw, double vh)

Проецирует точку из трехмерного пространства в двумерное окно просмотра.

Parameters
objx: float

Координата X точки

objy: float

Координата Y точки

objz: float

Координата Z точки

model: Matrix

Матрица модели

proj: Matrix

Матрица проекции

vx: float

Координата X окна просмотра

vy: float

Координата Y окна просмотра

vw: float

Ширина окна просмотра

vh: float

Высота окна просмотра

Добавлено вверсии 1.7.0.

rotate(double angle, double x, double y, double z) Matrix

Поворачивает матрицу на угол вокруг оси (x, y, z) (в inplace).

Parameters
angle: float

Угол поворота матрицы

x: float

X-положение точки

y: float

Y-положение точки

z: float

Z-положение точки

scale(double x, double y, double z) Matrix

Масштабирует матрицу на (x, y, z) (в inplace).

Parameters
x: float

Масштаб по оси X

y: float

Масштаб по оси Y

z: float

Масштаб по оси Z

set(flat=None, array=None)

Вставляет пользовательские значения в матрицу в формате плоского списка или в формате массива 4x4, как показано ниже:

m.set(array=[
    [1.0, 0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0, 0.0],
    [0.0, 0.0, 1.0, 0.0],
    [0.0, 0.0, 0.0, 1.0]]
)

Добавлено вверсии 1.9.0.

tolist()

Получает значение текущей матрицы в формате numpy. например, m.tolist() вернет:

[[1.000000, 0.000000, 0.000000, 0.000000],
[0.000000, 1.000000, 0.000000, 0.000000],
[0.000000, 0.000000, 1.000000, 0.000000],
[0.000000, 0.000000, 0.000000, 1.000000]]

вы можете использовать этот формат, чтобы вставить результат непосредственно в numpy таким образом: numpy.array(m.tolist())

Добавлено вверсии 1.9.0.

transform_point(double x, double y, double z, t=None) tuple

Преобразует точку матрицей и возвращает преобразованную точку в виде кортежа (x, y, z). Если точка является вектором v, возвращаемое значение v2 = matrix * v.

Если предоставлено t, оно умножается на последний столбец матрицы и возвращает преобразованный (x, y, z, t).

translate(double x, double y, double z) Matrix

Перемещает матрицу.

Parameters
x: float

Фактор смещения вдоль оси X

y: float

Фактор смещения вдоль оси Y

z: float

Фактор смещения вдоль оси Z

transpose() Matrix

Возвращает транспонированную матрицу в виде новой матрицы.

Добавлено вверсии 1.6.0.

view_clip(double left, double right, double bottom, double top, double near, double far, int perspective) Matrix

Создает матрицу обрезки (в inplace режиме).

Parameters
left: float

Координата

right: float

Координата

bottom: float

Координата

top: float

Координата

near: float

Координата

far: float

Координата

perpective: int

Координата

Изменено в версии 1.6.0: Включена поддержка параметра perspective.