Table Of Contents
Transformation¶
This module contains a Matrix class used for our Graphics calculations. We currently support:
rotation, translation and scaling matrices
multiplication matrix
clip matrix (with or without perspective)
transformation matrix for 3d touch
For more information on transformation matrices, please see the OpenGL Matrices Tutorial.
Changed in version 1.6.0: Added Matrix.perspective()
, Matrix.look_at()
and
Matrix.transpose()
.
- class kivy.graphics.transformation.Matrix¶
Bases:
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()¶
Retrieve the value of the current as a flat list.
New in version 1.9.1.
- look_at(double eyex, double eyey, double eyez, double centerx, double centery, double centerz, double upx, double upy, double upz)¶
Returns a new lookat Matrix (similar to gluLookAt).
- Parameters
- eyex: float
Eyes X co-ordinate
- eyey: float
Eyes Y co-ordinate
- eyez: float
Eyes Z co-ordinate
- centerx: float
The X position of the reference point
- centery: float
The Y position of the reference point
- centerz: float
The Z position of the reference point
- upx: float
The X value up vector.
- upy: float
The Y value up vector.
- upz: float
The Z value up vector.
New in version 1.6.0.
- multiply(mb, Matrix ma) Matrix ¶
Multiply the given matrix with self (from the left) i.e. we premultiply the given matrix by the current matrix and return the result (not inplace):
m.multiply(n) -> n * m
- Parameters
- ma: Matrix
The matrix to multiply by
- normal_matrix() Matrix ¶
Computes the normal matrix, which is the inverse transpose of the top left 3x3 modelview matrix used to transform normals into eye/camera space.
New in version 1.6.0.
- perspective(double fovy, double aspect, double zNear, double zFar) Matrix ¶
Creates a perspective matrix (inplace).
- Parameters
- fovy: float
“Field Of View” angle
- aspect: float
Aspect ratio
- zNear: float
Near clipping plane
- zFar: float
Far clippin plane
New in version 1.6.0.
- project(double objx, double objy, double objz, Matrix model, Matrix proj, double vx, double vy, double vw, double vh)¶
Project a point from 3d space into a 2d viewport.
- Parameters
- objx: float
Points X co-ordinate
- objy: float
Points Y co-ordinate
- objz: float
Points Z co-ordinate
- model: Matrix
The model matrix
- proj: Matrix
The projection matrix
- vx: float
Viewports X co-ordinate
- vy: float
Viewports y co-ordinate
- vw: float
Viewports width
- vh: float
Viewports height
New in version 1.7.0.
- rotate(double angle, double x, double y, double z) Matrix ¶
Rotate the matrix through the angle around the axis (x, y, z) (inplace).
- Parameters
- angle: float
The angle through which to rotate the matrix
- x: float
X position of the point
- y: float
Y position of the point
- z: float
Z position of the point
- scale(double x, double y, double z) Matrix ¶
Scale the current matrix by the specified factors over each dimension (inplace).
- Parameters
- x: float
The scale factor along the X axis
- y: float
The scale factor along the Y axis
- z: float
The scale factor along the Z axis
- set(flat=None, array=None)¶
Insert custom values into the matrix in a flat list format or 4x4 array format like below:
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]] )
New in version 1.9.0.
- tolist()¶
Retrieve the value of the current matrix in numpy format. for example m.tolist() will return:
[[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]]
you can use this format to plug the result straight into numpy in this way numpy.array(m.tolist())
New in version 1.9.0.
- transform_point(double x, double y, double z, t=None) tuple ¶
Transforms the point by the matrix and returns the transformed point as a
(x, y, z)
tuple. If the point is a vectorv
, the returned values isv2 = matrix * v
.If
t
is provided, it multiplies it with the last column of the matrix and returns the transformed(x, y, z, t)
.
- translate(double x, double y, double z) Matrix ¶
Translate the matrix.
- Parameters
- x: float
The translation factor along the X axis
- y: float
The translation factor along the Y axis
- z: float
The translation factor along the Z axis
- view_clip(double left, double right, double bottom, double top, double near, double far, int perspective) Matrix ¶
Create a clip matrix (inplace).
- Parameters
- left: float
Co-ordinate
- right: float
Co-ordinate
- bottom: float
Co-ordinate
- top: float
Co-ordinate
- near: float
Co-ordinate
- far: float
Co-ordinate
- perpective: int
Co-ordinate
Changed in version 1.6.0: Enable support for perspective parameter.