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.
- 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.