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
Optimized matrix class for OpenGL:
>>> 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.
-
identity
()¶ Reset the matrix to the identity matrix (inplace).
-
inverse
()¶ Return the inverse of the matrix as a new Matrix.
-
look_at
()¶ 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
()¶ 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
()¶ 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
()¶ 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
()¶ 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
()¶ 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
()¶ 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
()¶ 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.
-
translate
()¶ 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
-
transpose
()¶ Return the transposed matrix as a new Matrix.
New in version 1.6.0.
-
view_clip
()¶ 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.
-