Hi there! Internet Explorer is no longer supported.

Please use a modern web browser such as Firefox, Chromium or Edge. Thank you!

New Matrix Functions

Matrix
Matrix

Matrix image courtesy of mavaddat.

In now-merged PR 8603 new FreeCAD contributor Daniel-Khodabakhsh developed a new set of matrix-construction convenience functions that are provide a much nicer API than the original matrix creation methods.

The following functions were added which are shorthand for the create function:

New function Object type Analog
matrix(...) Matrix create(<<matrix>>; ...)
placement(...) Placement create(<<placement>>; ...)
rotation(...) Rotation create(<<rotation>>; ...)
rotationx(angle) Rotation create(<<rotation>>; create(<<vector>>; 1; 0; 0); angle)
rotationy(angle) Rotation create(<<rotation>>; create(<<vector>>; 0; 1; 0); angle)
rotationz(angle) Rotation create(<<rotation>>; create(<<vector>>; 0; 0; 1); angle)
translationm(x; y; z) Matrix create(<<matrix>>; 1; 0; 0; x; 0; 1; 0; y; 0; 0; 1; z; 0; 0; 0; 1)
vector(...) Vector create(<<vector>>; ...)

The following matrix functions were also added. These functions are following the same pattern previously established by the existing minvert and mscale.

New function Description
mrotate Rotate given object.
mrotatex Rotate given object around the X-axis.
mrotatey Rotate given object around the Y-axis.
mrotatez Rotate given object around the Z-axis.
mtranslate Translate given object (Rotation objects will be returned as a Placement object)

These functions return the same type of object which was supplied with the exception of mtranslate.

The functions can be chained together like so:

=mtranslate(mrotatex(placement(vector(1; 2; 3); rotation(0; 0; 0)); 45); 1; 2; 3)

Thanks to Daniel-Khodabakhsh for this valuable contribution to FreeCAD`s Expression API.