Version

Quick search

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.