Blender  V2.93
Macros | Functions | Variables
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

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_copy (QuaternionObject *self)
 
static PyObject * Quaternion_deepcopy (QuaternionObject *self, PyObject *args)
 
static PyObject * Quaternion_to_tuple_ext (QuaternionObject *self, int ndigits)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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)
 
 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")
 
static PyObject * Quaternion_repr (QuaternionObject *self)
 
static PyObject * Quaternion_str (QuaternionObject *self)
 
static PyObject * Quaternion_richcmpr (PyObject *a, PyObject *b, int op)
 
static Py_hash_t Quaternion_hash (QuaternionObject *self)
 
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)
 
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)
 
 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))
 
static PyObject * Quaternion_new (PyTypeObject *type, PyObject *args, PyObject *kwds)
 
 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")
 
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

static PySequenceMethods Quaternion_SeqMethods
 
static PyMappingMethods Quaternion_AsMapping
 
static PyNumberMethods Quaternion_NumMethods
 
static struct PyMethodDef Quaternion_methods []
 
static PyGetSetDef Quaternion_getseters []
 
PyTypeObject quaternion_Type
 

Macro Definition Documentation

◆ QUAT_SIZE

#define QUAT_SIZE   4

Definition at line 35 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

◆ quat_mul_float()

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

Definition at line 930 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

◆ 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

◆ Quaternion_ass_slice()

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

◆ Quaternion_ass_subscript()

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

Definition at line 841 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 1189 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 1194 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 555 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 1642 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 578 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

◆ Quaternion_imul()

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

◆ Quaternion_invert()

static PyObject* Quaternion_invert ( QuaternionObject self)
static

◆ Quaternion_inverted()

static PyObject* Quaternion_inverted ( QuaternionObject self)
static

Definition at line 492 of file mathutils_Quaternion.c.

References quat__apply_to_copy(), and Quaternion_invert().

◆ Quaternion_item()

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

Definition at line 685 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

Definition at line 679 of file mathutils_Quaternion.c.

References QUAT_SIZE.

◆ Quaternion_magnitude_get()

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

Definition at line 1200 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

◆ Quaternion_neg()

static PyObject* Quaternion_neg ( QuaternionObject self)
static

◆ 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 465 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 587 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

Definition at line 743 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

◆ Quaternion_subscript()

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

Definition at line 805 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

Definition at line 46 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 1143 of file mathutils_Quaternion.c.

◆ Quaternion_getseters

PyGetSetDef Quaternion_getseters[]
static

Definition at line 1466 of file mathutils_Quaternion.c.

◆ Quaternion_methods

struct PyMethodDef Quaternion_methods[]
static

Definition at line 1387 of file mathutils_Quaternion.c.

◆ Quaternion_NumMethods

PyNumberMethods Quaternion_NumMethods
static

Definition at line 1149 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 1130 of file mathutils_Quaternion.c.

◆ quaternion_Type

PyTypeObject quaternion_Type