This module originated from Blender (the opens-source 3d package), where it has been used for some years in production as a utility module for use in areas including animation, games and mesh manipulation.
This differs from numpy
in that it is computer graphics focused,
combining Matrix and Vector types with rotation classes which is very useful
for use with animation or anywhere Euler
and Quaternion
values are used frequently.
This project is mainly a build system around the actively maintained mathutils
code in
Blender to allow non Blender related projects to make use of it.
A link to the Blender repository is used so the source never gets out of sync.
mathutils
module, with classes:Matrix
,Vector
,Quaternion
,Euler
andColor
.mathutils.geometry
module for useful functions such asintersect_ray_tri
,intersect_line_line
andarea_tri
.- Supports operations you'd expect, slicing, multiplication, comparison, division addition where applicable.
- Supports swizzle style access on vectors: v.xyz, v.zy, v.xxyz... etc.
Python 3 only
Written in portable C
Extensible...
mathutils types can be sub-classed from python.C/C++ code can have mathutils objects synchronize with internal data using callbacks, or wrap the data directly.Documentation here
GPLv2 or later since this is apart of the Blender project.
To build on unix like systems...
git clone https://gitlab.com/ideasman42/blender-mathutils.git
cd blender-mathutils
To build you can choose between pythons distutils or CMake.
distutils:
python setup.py build
sudo python setup.py install
CMake:
cmake .
make
sudo make install