Blender  V3.3
Macros
mathutils_Quaternion.c File Reference
#include <Python.h>
#include "mathutils.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "../generic/py_capi_utils.h"
#include "../generic/python_utildefines.h"
#include "BLI_dynstr.h"

Go to the source code of this file.

Macros

#define QUAT_SIZE   4
 

Functions

Utilities
static PyObject * quat__apply_to_copy (PyObject *(*quat_func)(QuaternionObject *), QuaternionObject *self)
 
static void quat__axis_angle_sanitize (float axis[3], float *angle)
 
static PyObject * Quaternion_to_tuple_ext (QuaternionObject *self, int ndigits)
 
Quaternion Methods: Copy/Deep-Copy
static PyObject * Quaternion_copy (QuaternionObject *self)
 
static PyObject * Quaternion_deepcopy (QuaternionObject *self, PyObject *args)
 
 PyDoc_STRVAR (Quaternion_copy_doc, ".. function:: copy()\n" "\n" " Returns a copy of this quaternion.\n" "\n" " :return: A copy of the quaternion.\n" " :rtype: :class:`Quaternion`\n" "\n" " .. note:: use this to get a copy of a wrapped quaternion with\n" " no reference to the original data.\n")
 
Quaternion Type: <tt>__new__</tt> / <tt>mathutils.Quaternion()</tt>
static PyObject * Quaternion_new (PyTypeObject *type, PyObject *args, PyObject *kwds)
 
Quaternion Methods: To Euler
 PyDoc_STRVAR (Quaternion_to_euler_doc, ".. method:: to_euler(order, euler_compat)\n" "\n" " Return Euler representation of the quaternion.\n" "\n" " :arg order: Optional rotation order argument in\n" " ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX'].\n" " :type order: string\n" " :arg euler_compat: Optional euler argument the new euler will be made\n" " compatible with (no axis flipping between them).\n" " Useful for converting a series of matrices to animation curves.\n" " :type euler_compat: :class:`Euler`\n" " :return: Euler representation of the quaternion.\n" " :rtype: :class:`Euler`\n")
 
static PyObject * Quaternion_to_euler (QuaternionObject *self, PyObject *args)
 
Quaternion Methods: To Matrix
 PyDoc_STRVAR (Quaternion_to_matrix_doc, ".. method:: to_matrix()\n" "\n" " Return a matrix representation of the quaternion.\n" "\n" " :return: A 3x3 rotation matrix representation of the quaternion.\n" " :rtype: :class:`Matrix`\n")
 
static PyObject * Quaternion_to_matrix (QuaternionObject *self)
 
Quaternion Methods: To Axis/Angle
 PyDoc_STRVAR (Quaternion_to_axis_angle_doc, ".. method:: to_axis_angle()\n" "\n" " Return the axis, angle representation of the quaternion.\n" "\n" " :return: axis, angle.\n" " :rtype: (:class:`Vector`, float) pair\n")
 
static PyObject * Quaternion_to_axis_angle (QuaternionObject *self)
 
Quaternion Methods: To Swing/Twist
 PyDoc_STRVAR (Quaternion_to_swing_twist_doc, ".. method:: to_swing_twist(axis)\n" "\n" " Split the rotation into a swing quaternion with the specified\n" " axis fixed at zero, and the remaining twist rotation angle.\n" "\n" " :arg axis: twist axis as a string in ['X', 'Y', 'Z']\n" " :return: swing, twist angle.\n" " :rtype: (:class:`Quaternion`, float) pair\n")
 
static PyObject * Quaternion_to_swing_twist (QuaternionObject *self, PyObject *axis_arg)
 
Quaternion Methods: To Exponential Map
 PyDoc_STRVAR (Quaternion_to_exponential_map_doc, ".. method:: to_exponential_map()\n" "\n" " Return the exponential map representation of the quaternion.\n" "\n" " This representation consist of the rotation axis multiplied by the rotation angle.\n" " Such a representation is useful for interpolation between multiple orientations.\n" "\n" " :return: exponential map.\n" " :rtype: :class:`Vector` of size 3\n" "\n" " To convert back to a quaternion, pass it to the :class:`Quaternion` constructor.\n")
 
static PyObject * Quaternion_to_exponential_map (QuaternionObject *self)
 
Quaternion Methods: Cross Product
 PyDoc_STRVAR (Quaternion_cross_doc, ".. method:: cross(other)\n" "\n" " Return the cross product of this quaternion and another.\n" "\n" " :arg other: The other quaternion to perform the cross product with.\n" " :type other: :class:`Quaternion`\n" " :return: The cross product.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_cross (QuaternionObject *self, PyObject *value)
 
Quaternion Methods: Dot Product
 PyDoc_STRVAR (Quaternion_dot_doc, ".. method:: dot(other)\n" "\n" " Return the dot product of this quaternion and another.\n" "\n" " :arg other: The other quaternion to perform the dot product with.\n" " :type other: :class:`Quaternion`\n" " :return: The dot product.\n" " :rtype: float\n")
 
static PyObject * Quaternion_dot (QuaternionObject *self, PyObject *value)
 
Quaternion Methods: Rotation Difference
 PyDoc_STRVAR (Quaternion_rotation_difference_doc, ".. function:: rotation_difference(other)\n" "\n" " Returns a quaternion representing the rotational difference.\n" "\n" " :arg other: second quaternion.\n" " :type other: :class:`Quaternion`\n" " :return: the rotational difference between the two quat rotations.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_rotation_difference (QuaternionObject *self, PyObject *value)
 
Quaternion Methods: Spherical Interpolation (slerp)
 PyDoc_STRVAR (Quaternion_slerp_doc, ".. function:: slerp(other, factor)\n" "\n" " Returns the interpolation of two quaternions.\n" "\n" " :arg other: value to interpolate with.\n" " :type other: :class:`Quaternion`\n" " :arg factor: The interpolation value in [0.0, 1.0].\n" " :type factor: float\n" " :return: The interpolated rotation.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_slerp (QuaternionObject *self, PyObject *args)
 
Quaternion Methods: Rotate
 PyDoc_STRVAR (Quaternion_rotate_doc, ".. method:: rotate(other)\n" "\n" " Rotates the quaternion by another mathutils value.\n" "\n" " :arg other: rotation component of mathutils value\n" " :type other: :class:`Euler`, :class:`Quaternion` or :class:`Matrix`\n")
 
static PyObject * Quaternion_rotate (QuaternionObject *self, PyObject *value)
 
 PyDoc_STRVAR (Quaternion_make_compatible_doc, ".. method:: make_compatible(other)\n" "\n" " Make this quaternion compatible with another,\n" " so interpolating between them works as intended.\n")
 
static PyObject * Quaternion_make_compatible (QuaternionObject *self, PyObject *value)
 
Quaternion Methods: Normalize

Normalize the quaternion. This may change the angle as well as the rotation axis, as all of (w, x, y, z) are scaled.

 PyDoc_STRVAR (Quaternion_normalize_doc, ".. function:: normalize()\n" "\n" " Normalize the quaternion.\n")
 
static PyObject * Quaternion_normalize (QuaternionObject *self)
 
 PyDoc_STRVAR (Quaternion_normalized_doc, ".. function:: normalized()\n" "\n" " Return a new normalized quaternion.\n" "\n" " :return: a normalized copy.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_normalized (QuaternionObject *self)
 
Quaternion Methods: Invert

Normalize the quaternion. This may change the angle as well as the rotation axis, as all of (w, x, y, z) are scaled.

 PyDoc_STRVAR (Quaternion_invert_doc, ".. function:: invert()\n" "\n" " Set the quaternion to its inverse.\n")
 
static PyObject * Quaternion_invert (QuaternionObject *self)
 
 PyDoc_STRVAR (Quaternion_inverted_doc, ".. function:: inverted()\n" "\n" " Return a new, inverted quaternion.\n" "\n" " :return: the inverted value.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_inverted (QuaternionObject *self)
 
Quaternion Methods: Set Identity
 PyDoc_STRVAR (Quaternion_identity_doc, ".. function:: identity()\n" "\n" " Set the quaternion to an identity quaternion.\n" "\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_identity (QuaternionObject *self)
 
Quaternion Methods: Negate
 PyDoc_STRVAR (Quaternion_negate_doc, ".. function:: negate()\n" "\n" " Set the quaternion to its negative.\n" "\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_negate (QuaternionObject *self)
 
Quaternion Methods: Conjugate
 PyDoc_STRVAR (Quaternion_conjugate_doc, ".. function:: conjugate()\n" "\n" " Set the quaternion to its conjugate (negate x, y, z).\n")
 
static PyObject * Quaternion_conjugate (QuaternionObject *self)
 
 PyDoc_STRVAR (Quaternion_conjugated_doc, ".. function:: conjugated()\n" "\n" " Return a new conjugated quaternion.\n" "\n" " :return: a new quaternion.\n" " :rtype: :class:`Quaternion`\n")
 
static PyObject * Quaternion_conjugated (QuaternionObject *self)
 
Quaternion Type: <tt>__repr__</tt> & <tt>__str__</tt>
static PyObject * Quaternion_repr (QuaternionObject *self)
 
static PyObject * Quaternion_str (QuaternionObject *self)
 
Quaternion Type: Rich Compare
static PyObject * Quaternion_richcmpr (PyObject *a, PyObject *b, int op)
 
Quaternion Type: Hash (<tt>__hash__</tt>)
static Py_hash_t Quaternion_hash (QuaternionObject *self)
 
Quaternion Type: Sequence & Mapping Protocols Implementation
static int Quaternion_len (QuaternionObject *UNUSED(self))
 
static PyObject * Quaternion_item (QuaternionObject *self, int i)
 
static int Quaternion_ass_item (QuaternionObject *self, int i, PyObject *ob)
 
static PyObject * Quaternion_slice (QuaternionObject *self, int begin, int end)
 
static int Quaternion_ass_slice (QuaternionObject *self, int begin, int end, PyObject *seq)
 
static PyObject * Quaternion_subscript (QuaternionObject *self, PyObject *item)
 
static int Quaternion_ass_subscript (QuaternionObject *self, PyObject *item, PyObject *value)
 
Quaternion Type: Numeric Protocol Implementation
static PyObject * Quaternion_add (PyObject *q1, PyObject *q2)
 
static PyObject * Quaternion_sub (PyObject *q1, PyObject *q2)
 
static PyObject * quat_mul_float (QuaternionObject *quat, const float scalar)
 
static PyObject * Quaternion_mul (PyObject *q1, PyObject *q2)
 
static PyObject * Quaternion_imul (PyObject *q1, PyObject *q2)
 
static PyObject * Quaternion_matmul (PyObject *q1, PyObject *q2)
 
static PyObject * Quaternion_imatmul (PyObject *q1, PyObject *q2)
 
static PyObject * Quaternion_neg (QuaternionObject *self)
 
Quaternion Type: Get/Set Item Implementation
 PyDoc_STRVAR (Quaternion_axis_doc, "Quaternion axis value.\n\n:type: float")
 
static PyObject * Quaternion_axis_get (QuaternionObject *self, void *type)
 
static int Quaternion_axis_set (QuaternionObject *self, PyObject *value, void *type)
 
 PyDoc_STRVAR (Quaternion_magnitude_doc, "Size of the quaternion (read-only).\n\n:type: float")
 
static PyObject * Quaternion_magnitude_get (QuaternionObject *self, void *UNUSED(closure))
 
 PyDoc_STRVAR (Quaternion_angle_doc, "Angle of the quaternion.\n\n:type: float")
 
static PyObject * Quaternion_angle_get (QuaternionObject *self, void *UNUSED(closure))
 
static int Quaternion_angle_set (QuaternionObject *self, PyObject *value, void *UNUSED(closure))
 
 PyDoc_STRVAR (Quaternion_axis_vector_doc, "Quaternion axis as a vector.\n\n:type: :class:`Vector`")
 
static PyObject * Quaternion_axis_vector_get (QuaternionObject *self, void *UNUSED(closure))
 
static int Quaternion_axis_vector_set (QuaternionObject *self, PyObject *value, void *UNUSED(closure))
 
Quaternion Type: C/API Constructors
PyObject * Quaternion_CreatePyObject (const float quat[4], PyTypeObject *base_type)
 
PyObject * Quaternion_CreatePyObject_wrap (float quat[4], PyTypeObject *base_type)
 
PyObject * Quaternion_CreatePyObject_cb (PyObject *cb_user, uchar cb_type, uchar cb_subtype)
 

Variables

Quaternion Type: Protocol Declarations
static PySequenceMethods Quaternion_SeqMethods
 
static PyMappingMethods Quaternion_AsMapping
 
static PyNumberMethods Quaternion_NumMethods
 
Quaternion Type: Get/Set Item Definitions
static PyGetSetDef Quaternion_getseters []
 
Quaternion Type: Method Definitions
static struct PyMethodDef Quaternion_methods []
 

Quaternion Type: Python Object Definition

PyTypeObject quaternion_Type
 
 PyDoc_STRVAR (quaternion_doc, ".. class:: Quaternion([seq, [angle]])\n" "\n" " This object gives access to Quaternions in Blender.\n" "\n" " :param seq: size 3 or 4\n" " :type seq: :class:`Vector`\n" " :param angle: rotation angle, in radians\n" " :type angle: float\n" "\n" " The constructor takes arguments in various forms:\n" "\n" " (), *no args*\n" " Create an identity quaternion\n" " (*wxyz*)\n" " Create a quaternion from a ``(w, x, y, z)`` vector.\n" " (*exponential_map*)\n" " Create a quaternion from a 3d exponential map vector.\n" "\n" " .. seealso:: :meth:`to_exponential_map`\n" " (*axis, angle*)\n" " Create a quaternion representing a rotation of *angle* radians over *axis*.\n" "\n" " .. seealso:: :meth:`to_axis_angle`\n")
 

Macro Definition Documentation

◆ QUAT_SIZE

#define QUAT_SIZE   4

Definition at line 21 of file mathutils_Quaternion.c.

Function Documentation

◆ PyDoc_STRVAR() [1/25]

PyDoc_STRVAR ( Quaternion_angle_doc  ,
"Angle of the quaternion.\n\n:type: float  
)

◆ PyDoc_STRVAR() [2/25]

PyDoc_STRVAR ( Quaternion_axis_doc  ,
"Quaternion axis value.\n\n:type: float  
)

◆ PyDoc_STRVAR() [3/25]

PyDoc_STRVAR ( Quaternion_axis_vector_doc  ,
"Quaternion axis as a vector.\n\n:type: :class:`Vector`"   
)

◆ PyDoc_STRVAR() [4/25]

PyDoc_STRVAR ( Quaternion_conjugate_doc  ,
".. function:: conjugate()\n" "\n" " Set the quaternion to its conjugate (negate x, y, z).\n"   
)

◆ PyDoc_STRVAR() [5/25]

PyDoc_STRVAR ( Quaternion_conjugated_doc  ,
".. function:: conjugated()\n" "\n" " Return a new conjugated quaternion.\n" "\n" " :return: a new quaternion.\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [6/25]

PyDoc_STRVAR ( Quaternion_copy_doc  ,
".. function:: copy()\n" "\n" " Returns a copy of this quaternion.\n" "\n" " :return: A copy of the quaternion.\n" " :rtype: :class:`Quaternion`\n" "\n" " .. note:: use this to get a copy of a wrapped quaternion with\n" " no reference to the original data.\n"   
)

◆ PyDoc_STRVAR() [7/25]

PyDoc_STRVAR ( Quaternion_cross_doc  ,
".. method:: cross(other)\n" "\n" " Return the cross product of this quaternion and another.\n" "\n" " :arg other: The other quaternion to perform the cross product with.\n" " :type other: :class:`Quaternion`\n" " :return: The cross product.\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [8/25]

PyDoc_STRVAR ( quaternion_doc  ,
".. class:: Quaternion([seq, [angle]])\n" "\n" " This object gives access to Quaternions in Blender.\n" "\n" " :param seq: size 3 or 4\n" " :type seq: :class:`Vector`\n" " :param angle: rotation  angle,
in radians\n" " :type angle:float\n" "\n" " The constructor takes arguments in various forms:\n" "\n" "  (),
*no args *\n" " Create an identity quaternion\n" " **wxyz\n" " Create a quaternion from a ``(w, x, y, z)`` vector.\n" " **exponential_map\n" " Create a quaternion from a 3d exponential map vector.\n" "\n" " .. seealso:::meth:`to_exponential_map`\n" " *, *angle\n" " Create a quaternion representing a rotation of *angle *radians over *axis *.\n" "\n" " .. seealso:::meth:`to_axis_angle`\n"   
)

◆ PyDoc_STRVAR() [9/25]

PyDoc_STRVAR ( Quaternion_dot_doc  ,
".. method:: dot(other)\n" "\n" " Return the dot product of this quaternion and another.\n" "\n" " :arg other: The other quaternion to perform the dot product with.\n" " :type other: :class:`Quaternion`\n" " :return: The dot product.\n" " :rtype: float\n"   
)

◆ PyDoc_STRVAR() [10/25]

PyDoc_STRVAR ( Quaternion_identity_doc  ,
".. function:: identity()\n" "\n" " Set the quaternion to an identity quaternion.\n" "\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [11/25]

PyDoc_STRVAR ( Quaternion_invert_doc  ,
".. function:: invert()\n" "\n" " Set the quaternion to its inverse.\n"   
)

◆ PyDoc_STRVAR() [12/25]

PyDoc_STRVAR ( Quaternion_inverted_doc  ,
".. function:: inverted()\n" "\n" " Return a  new,
inverted quaternion.\n" "\n" " :return:the inverted value.\n" " :rtype::class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [13/25]

PyDoc_STRVAR ( Quaternion_magnitude_doc  ,
"Size of the quaternion (read-only).\n\n:type: float  
)

◆ PyDoc_STRVAR() [14/25]

PyDoc_STRVAR ( Quaternion_make_compatible_doc  ,
".. method:: make_compatible(other)\n" "\n" " Make this quaternion compatible with  another,
\n" " so interpolating between them works as intended.\n"   
)

◆ PyDoc_STRVAR() [15/25]

PyDoc_STRVAR ( Quaternion_negate_doc  ,
".. function:: negate()\n" "\n" " Set the quaternion to its negative.\n" "\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [16/25]

PyDoc_STRVAR ( Quaternion_normalize_doc  ,
".. function:: normalize()\n" "\n" " Normalize the quaternion.\n"   
)

◆ PyDoc_STRVAR() [17/25]

PyDoc_STRVAR ( Quaternion_normalized_doc  ,
".. function:: normalized()\n" "\n" " Return a new normalized quaternion.\n" "\n" " :return: a normalized copy.\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [18/25]

PyDoc_STRVAR ( Quaternion_rotate_doc  ,
".. method:: rotate(other)\n" "\n" " Rotates the quaternion by another mathutils value.\n" "\n" " :arg other: rotation component of mathutils value\n" " :type other: :class:`Euler`  ,
:class:`Quaternion` or :class:`Matrix`\n"   
)

◆ PyDoc_STRVAR() [19/25]

PyDoc_STRVAR ( Quaternion_rotation_difference_doc  ,
".. function:: rotation_difference(other)\n" "\n" " Returns a quaternion representing the rotational difference.\n" "\n" " :arg other: second quaternion.\n" " :type other: :class:`Quaternion`\n" " :return: the rotational difference between the two quat rotations.\n" " :rtype: :class:`Quaternion`\n"   
)

◆ PyDoc_STRVAR() [20/25]

PyDoc_STRVAR ( Quaternion_slerp_doc  ,
".. function:: slerp(other, factor)\n" "\n" " Returns the interpolation of two quaternions.\n" "\n" " :arg other: value to interpolate with.\n" " :type other: :class:`Quaternion`\n" " :arg factor: The interpolation value in .\n" " :type factor: float\n" " :return: The interpolated rotation.\n" " :rtype: :class:`Quaternion`\n"  [0.0, 1.0] 
)

◆ PyDoc_STRVAR() [21/25]

PyDoc_STRVAR ( Quaternion_to_axis_angle_doc  ,
".. method:: to_axis_angle()\n" "\n" " Return the  axis,
angle representation of the quaternion.\n" "\n" " :return:axis  ,
angle.\n" " :rtype:(:class:`Vector`, float) pair\n"   
)

◆ PyDoc_STRVAR() [22/25]

PyDoc_STRVAR ( Quaternion_to_euler_doc  ,
".. method:: to_euler(order, euler_compat)\n" "\n" " Return Euler representation of the quaternion.\n" "\n" " :arg order: Optional rotation order argument in\n" " .\n" " :type order: string\n" " :arg euler_compat: Optional euler argument the new euler will be made\n" " compatible with (no axis flipping between them).\n" " Useful for converting a series of matrices to animation curves.\n" " :type euler_compat: :class:`Euler`\n" " :return: Euler representation of the quaternion.\n" " :rtype: :class:`Euler`\n"  [ 'XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX'] 
)

◆ PyDoc_STRVAR() [23/25]

PyDoc_STRVAR ( Quaternion_to_exponential_map_doc  ,
".. method:: to_exponential_map()\n" "\n" " Return the exponential map representation of the quaternion.\n" "\n" " This representation consist of the rotation axis multiplied by the rotation angle.\n" " Such a representation is useful for interpolation between multiple orientations.\n" "\n" " :return: exponential map.\n" " :rtype: :class:`Vector` of size 3\n" "\n" " To convert back to a  quaternion,
pass it to the :class:`Quaternion` constructor.\n"   
)

◆ PyDoc_STRVAR() [24/25]

PyDoc_STRVAR ( Quaternion_to_matrix_doc  ,
".. method:: to_matrix()\n" "\n" " Return a matrix representation of the quaternion.\n" "\n" " :return: A 3x3 rotation matrix representation of the quaternion.\n" " :rtype: :class:`Matrix`\n"   
)

◆ PyDoc_STRVAR() [25/25]

PyDoc_STRVAR ( Quaternion_to_swing_twist_doc  ,
".. method:: to_swing_twist(axis)\n" "\n" " Split the rotation into a swing quaternion with the specified\n" " axis fixed at  zero,
and the remaining twist rotation angle.\n" "\n" " :arg axis:twist axis as a string in \n" " :return:swing  [ 'X', 'Y', 'Z'],
twist angle.\n" " :rtype:(:class:`Quaternion`, float) pair\n"   
)

◆ quat__apply_to_copy()

static PyObject * quat__apply_to_copy ( PyObject *(*)(QuaternionObject *)  quat_func,
QuaternionObject self 
)
static

◆ quat__axis_angle_sanitize()

static void quat__axis_angle_sanitize ( float  axis[3],
float angle 
)
static

Axis vector suffers from precision errors, use this function to ensure.

Definition at line 48 of file mathutils_Quaternion.c.

References angle(), EXPP_FloatsAreEqual(), is_zero_v3(), and CCL_NAMESPACE_BEGIN::isfinite().

Referenced by Quaternion_angle_get(), Quaternion_angle_set(), Quaternion_axis_vector_get(), Quaternion_axis_vector_set(), and Quaternion_to_axis_angle().

◆ quat_mul_float()

static PyObject* quat_mul_float ( QuaternionObject quat,
const float  scalar 
)
static

Definition at line 1147 of file mathutils_Quaternion.c.

References copy_qt_qt(), mul_qt_fl(), and Quaternion_CreatePyObject().

Referenced by Quaternion_mul().

◆ Quaternion_add()

static PyObject* Quaternion_add ( PyObject *  q1,
PyObject *  q2 
)
static

Addition: object + object.

Definition at line 1093 of file mathutils_Quaternion.c.

References add_qt_qtqt(), BaseMath_ReadCallback, NULL, q1, QUAT_SIZE, Quaternion_CreatePyObject(), and QuaternionObject_Check.

◆ Quaternion_angle_get()

static PyObject* Quaternion_angle_get ( QuaternionObject self,
void UNUSEDclosure 
)
static

◆ Quaternion_angle_set()

static int Quaternion_angle_set ( QuaternionObject self,
PyObject *  value,
void UNUSEDclosure 
)
static

◆ Quaternion_ass_item()

static int Quaternion_ass_item ( QuaternionObject self,
int  i,
PyObject *  ob 
)
static

Sequence accessor (set): object[i] = x.

Definition at line 917 of file mathutils_Quaternion.c.

References BaseMath_Prepare_ForWrite, BaseMath_WriteIndexCallback, float(), and QUAT_SIZE.

Referenced by Quaternion_ass_subscript(), and Quaternion_axis_set().

◆ Quaternion_ass_slice()

static int Quaternion_ass_slice ( QuaternionObject self,
int  begin,
int  end,
PyObject *  seq 
)
static

Sequence slice accessor (set): object[i:j] = x.

Definition at line 979 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback_ForWrite, BaseMath_WriteCallback, CLAMP, mathutils_array_parse(), MIN2, QUAT_SIZE, size(), and void.

Referenced by Quaternion_ass_subscript().

◆ Quaternion_ass_subscript()

static int Quaternion_ass_subscript ( QuaternionObject self,
PyObject *  item,
PyObject *  value 
)
static

Sequence generic subscript (set): object[...] = x.

Definition at line 1054 of file mathutils_Quaternion.c.

References QUAT_SIZE, Quaternion_ass_item(), and Quaternion_ass_slice().

◆ Quaternion_axis_get()

static PyObject* Quaternion_axis_get ( QuaternionObject self,
void type 
)
static

Definition at line 1415 of file mathutils_Quaternion.c.

References POINTER_AS_INT, Quaternion_item(), and type.

◆ Quaternion_axis_set()

static int Quaternion_axis_set ( QuaternionObject self,
PyObject *  value,
void type 
)
static

Definition at line 1420 of file mathutils_Quaternion.c.

References POINTER_AS_INT, Quaternion_ass_item(), and type.

◆ Quaternion_axis_vector_get()

static PyObject* Quaternion_axis_vector_get ( QuaternionObject self,
void UNUSEDclosure 
)
static

◆ Quaternion_axis_vector_set()

static int Quaternion_axis_vector_set ( QuaternionObject self,
PyObject *  value,
void UNUSEDclosure 
)
static

◆ Quaternion_conjugate()

static PyObject* Quaternion_conjugate ( QuaternionObject self)
static

◆ Quaternion_conjugated()

static PyObject* Quaternion_conjugated ( QuaternionObject self)
static

Definition at line 739 of file mathutils_Quaternion.c.

References quat__apply_to_copy(), and Quaternion_conjugate().

◆ Quaternion_copy()

static PyObject * Quaternion_copy ( QuaternionObject self)
static

◆ Quaternion_CreatePyObject()

PyObject* Quaternion_CreatePyObject ( const float  quat[4],
PyTypeObject *  base_type 
)

◆ Quaternion_CreatePyObject_cb()

PyObject* Quaternion_CreatePyObject_cb ( PyObject *  cb_user,
uchar  cb_type,
uchar  cb_subtype 
)

Definition at line 1801 of file mathutils_Quaternion.c.

References NULL, and Quaternion_CreatePyObject().

Referenced by pyrna_math_object_from_array().

◆ Quaternion_CreatePyObject_wrap()

PyObject* Quaternion_CreatePyObject_wrap ( float  quat[4],
PyTypeObject *  base_type 
)

◆ Quaternion_cross()

static PyObject* Quaternion_cross ( QuaternionObject self,
PyObject *  value 
)
static

◆ Quaternion_deepcopy()

static PyObject * Quaternion_deepcopy ( QuaternionObject self,
PyObject *  args 
)
static

Definition at line 768 of file mathutils_Quaternion.c.

References NULL, PyC_CheckArgs_DeepCopy(), and Quaternion_copy().

◆ Quaternion_dot()

static PyObject* Quaternion_dot ( QuaternionObject self,
PyObject *  value 
)
static

◆ Quaternion_hash()

static Py_hash_t Quaternion_hash ( QuaternionObject self)
static

◆ Quaternion_identity()

static PyObject* Quaternion_identity ( QuaternionObject self)
static

◆ Quaternion_imatmul()

static PyObject* Quaternion_imatmul ( PyObject *  q1,
PyObject *  q2 
)
static

Multiplication in-place (quaternion multiply): object @= object.

Definition at line 1295 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, BaseMath_WriteCallback, copy_qt_qt(), mul_qt_qtqt(), NULL, q1, QUAT_SIZE, QuaternionObject_Check, and void.

◆ Quaternion_imul()

static PyObject* Quaternion_imul ( PyObject *  q1,
PyObject *  q2 
)
static

Multiplication in-place (element-wise or scalar): object *= object.

Definition at line 1200 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, BaseMath_WriteCallback, mul_qt_fl(), mul_vn_vn(), NULL, q1, QUAT_SIZE, QuaternionObject_Check, and void.

◆ Quaternion_invert()

static PyObject* Quaternion_invert ( QuaternionObject self)
static

◆ Quaternion_inverted()

static PyObject* Quaternion_inverted ( QuaternionObject self)
static

Definition at line 658 of file mathutils_Quaternion.c.

References quat__apply_to_copy(), and Quaternion_invert().

◆ Quaternion_item()

static PyObject* Quaternion_item ( QuaternionObject self,
int  i 
)
static

Sequence accessor (get): x = object[i].

Definition at line 896 of file mathutils_Quaternion.c.

References BaseMath_ReadIndexCallback, NULL, QUAT_SIZE, and self.

Referenced by Quaternion_axis_get(), and Quaternion_subscript().

◆ Quaternion_len()

static int Quaternion_len ( QuaternionObject UNUSEDself)
static

Sequence length: len(object).

Definition at line 890 of file mathutils_Quaternion.c.

References QUAT_SIZE.

◆ Quaternion_magnitude_get()

static PyObject* Quaternion_magnitude_get ( QuaternionObject self,
void UNUSEDclosure 
)
static

Definition at line 1426 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, dot_qtqt(), NULL, self, and sqrtf.

◆ Quaternion_make_compatible()

static PyObject* Quaternion_make_compatible ( QuaternionObject self,
PyObject *  value 
)
static

◆ Quaternion_matmul()

static PyObject* Quaternion_matmul ( PyObject *  q1,
PyObject *  q2 
)
static

◆ Quaternion_mul()

static PyObject* Quaternion_mul ( PyObject *  q1,
PyObject *  q2 
)
static

Multiplication (element-wise or scalar): object * object.

Definition at line 1156 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, mul_vn_vnvn(), NULL, q1, quat_mul_float(), QUAT_SIZE, Quaternion_CreatePyObject(), and QuaternionObject_Check.

◆ Quaternion_neg()

static PyObject* Quaternion_neg ( QuaternionObject self)
static

Negative (returns the negative of this object): -object.

Definition at line 1332 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, negate_v4_v4(), NULL, QUAT_SIZE, Quaternion_CreatePyObject(), and self.

◆ Quaternion_negate()

static PyObject* Quaternion_negate ( QuaternionObject self)
static

◆ Quaternion_new()

static PyObject* Quaternion_new ( PyTypeObject *  type,
PyObject *  args,
PyObject *  kwds 
)
static

◆ Quaternion_normalize()

static PyObject* Quaternion_normalize ( QuaternionObject self)
static

◆ Quaternion_normalized()

static PyObject* Quaternion_normalized ( QuaternionObject self)
static

Definition at line 622 of file mathutils_Quaternion.c.

References quat__apply_to_copy(), and Quaternion_normalize().

◆ Quaternion_repr()

static PyObject* Quaternion_repr ( QuaternionObject self)
static

Definition at line 782 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, NULL, Quaternion_to_tuple_ext(), and ret.

◆ Quaternion_richcmpr()

static PyObject* Quaternion_richcmpr ( PyObject *  a,
PyObject *  b,
int  op 
)
static

◆ Quaternion_rotate()

static PyObject* Quaternion_rotate ( QuaternionObject self,
PyObject *  value 
)
static

◆ Quaternion_rotation_difference()

static PyObject* Quaternion_rotation_difference ( QuaternionObject self,
PyObject *  value 
)
static

◆ Quaternion_slerp()

static PyObject* Quaternion_slerp ( QuaternionObject self,
PyObject *  args 
)
static

◆ Quaternion_slice()

static PyObject* Quaternion_slice ( QuaternionObject self,
int  begin,
int  end 
)
static

Sequence slice accessor (get): x = object[i:j].

Definition at line 954 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, CLAMP, count, MIN2, NULL, QUAT_SIZE, and self.

Referenced by Quaternion_subscript().

◆ Quaternion_str()

static PyObject* Quaternion_str ( QuaternionObject self)
static

◆ Quaternion_sub()

static PyObject* Quaternion_sub ( PyObject *  q1,
PyObject *  q2 
)
static

Subtraction: object - object.

Definition at line 1118 of file mathutils_Quaternion.c.

References BaseMath_ReadCallback, NULL, q1, QUAT_SIZE, Quaternion_CreatePyObject(), QuaternionObject_Check, and x.

◆ Quaternion_subscript()

static PyObject* Quaternion_subscript ( QuaternionObject self,
PyObject *  item 
)
static

Sequence generic subscript (get): x = object[...].

Definition at line 1017 of file mathutils_Quaternion.c.

References NULL, QUAT_SIZE, Quaternion_item(), and Quaternion_slice().

◆ Quaternion_to_axis_angle()

static PyObject* Quaternion_to_axis_angle ( QuaternionObject self)
static

◆ Quaternion_to_euler()

static PyObject* Quaternion_to_euler ( QuaternionObject self,
PyObject *  args 
)
static

◆ Quaternion_to_exponential_map()

static PyObject* Quaternion_to_exponential_map ( QuaternionObject self)
static

◆ Quaternion_to_matrix()

static PyObject* Quaternion_to_matrix ( QuaternionObject self)
static

◆ Quaternion_to_swing_twist()

static PyObject* Quaternion_to_swing_twist ( QuaternionObject self,
PyObject *  axis_arg 
)
static

◆ Quaternion_to_tuple_ext()

static PyObject* Quaternion_to_tuple_ext ( QuaternionObject self,
int  ndigits 
)
static
Note
BaseMath_ReadCallback must be called beforehand.

Definition at line 72 of file mathutils_Quaternion.c.

References double_round(), QUAT_SIZE, ret, and self.

Referenced by Quaternion_repr().

Variable Documentation

◆ Quaternion_AsMapping

PyMappingMethods Quaternion_AsMapping
static
Initial value:
= {
(lenfunc)Quaternion_len,
(binaryfunc)Quaternion_subscript,
(objobjargproc)Quaternion_ass_subscript,
}
static int Quaternion_len(QuaternionObject *UNUSED(self))
static int Quaternion_ass_subscript(QuaternionObject *self, PyObject *item, PyObject *value)
static PyObject * Quaternion_subscript(QuaternionObject *self, PyObject *item)

Definition at line 1363 of file mathutils_Quaternion.c.

◆ Quaternion_getseters

PyGetSetDef Quaternion_getseters[]
static

Definition at line 1549 of file mathutils_Quaternion.c.

◆ Quaternion_methods

struct PyMethodDef Quaternion_methods[]
static

Definition at line 1549 of file mathutils_Quaternion.c.

◆ Quaternion_NumMethods

PyNumberMethods Quaternion_NumMethods
static

Definition at line 1369 of file mathutils_Quaternion.c.

◆ Quaternion_SeqMethods

PySequenceMethods Quaternion_SeqMethods
static
Initial value:
= {
(lenfunc)Quaternion_len,
(binaryfunc)NULL,
(ssizeargfunc)NULL,
(ssizeargfunc)Quaternion_item,
(ssizessizeargfunc)NULL,
(ssizeobjargproc)Quaternion_ass_item,
(ssizessizeobjargproc)NULL,
(objobjproc)NULL,
(binaryfunc)NULL,
(ssizeargfunc)NULL,
}
static PyObject * Quaternion_item(QuaternionObject *self, int i)
static int Quaternion_ass_item(QuaternionObject *self, int i, PyObject *ob)

Definition at line 1350 of file mathutils_Quaternion.c.

◆ quaternion_Type

PyTypeObject quaternion_Type