2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
									
										
										
										
											2009-06-23 00:09:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  $ Id $ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  BEGIN  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  as  published  by  the  Free  Software  Foundation ;  either  version  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  this  program ;  if  not ,  write  to  the  Free  Software  Foundation , 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-12 13:34:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301 ,  USA . 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  Original  Code  is  Copyright  ( C )  2001 - 2002  by  NaN  Holding  BV . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 *  Contributor ( s ) :  Joseph  Gilbert 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  END  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-27 20:10:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/** \file blender/python/generic/mathutils_Quaternion.c
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   \ ingroup  pygen 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-14 04:15:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <Python.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-11 12:05:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "mathutils.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BLI_math.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-01-07 18:36:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BLI_utildefines.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define QUAT_SIZE 4 
  
						 
					
						
							
								
									
										
										
										
											2011-01-07 19:18:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-09 09:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * quat__apply_to_copy ( PyNoArgsFunction  quat_func ,  QuaternionObject  * self ) ;  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_copy ( QuaternionObject  * self ) ;  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------METHODS------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* note: BaseMath_ReadCallback must be called beforehand */  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_to_tuple_ext ( QuaternionObject  * self ,  int  ndigits )  
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ret =  PyTuple_New ( QUAT_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ndigits  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for ( i =  0 ;  i  <  QUAT_SIZE ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyTuple_SET_ITEM ( ret ,  i ,  PyFloat_FromDouble ( double_round ( ( double ) self - > quat [ i ] ,  ndigits ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for ( i =  0 ;  i  <  QUAT_SIZE ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyTuple_SET_ITEM ( ret ,  i ,  PyFloat_FromDouble ( self - > quat [ i ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_to_euler_doc [ ]  =  
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. method:: to_euler(order, euler_compat) \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Return Euler representation of the quaternion. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :arg order: Optional rotation order argument in ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX']. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :type order: string \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :arg euler_compat: Optional euler argument the new euler will be made compatible with (no axis flipping between them). Useful for converting a series of matrices to animation curves. \n "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :type euler_compat: :class:`Euler` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :return: Euler representation of the quaternion. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Euler` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_to_euler ( QuaternionObject  * self ,  PyObject  * args )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									float  eul [ 3 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  char  * order_str =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									short  order =  EULER_ORDER_XYZ ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									EulerObject  * eul_compat  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! PyArg_ParseTuple ( args ,  " |sO!:to_euler " ,  & order_str ,  & euler_Type ,  & eul_compat ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( order_str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										order =  euler_order_from_string ( order_str ,  " Matrix.to_euler() " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( order  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if ( eul_compat )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-09 15:40:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										float  mat [ 3 ] [ 3 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( BaseMath_ReadCallback ( eul_compat )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										quat_to_mat3 ( mat ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-09 15:40:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( order  = =  EULER_ORDER_XYZ ) 	mat3_to_compatible_eul ( eul ,  eul_compat - > eul ,  mat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 							mat3_to_compatible_eulO ( eul ,  eul_compat - > eul ,  order ,  mat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( order  = =  EULER_ORDER_XYZ ) 	quat_to_eul ( eul ,  tquat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 							quat_to_eulO ( eul ,  order ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newEulerObject ( eul ,  order ,  Py_NEW ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.toMatrix()------------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_to_matrix_doc [ ]  =  
						 
					
						
							
								
									
										
										
										
											2010-08-16 12:14:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. method:: to_matrix() \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Return a matrix representation of the quaternion. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :return: A 3x3 rotation matrix representation of the quaternion. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Matrix` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_to_matrix ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-06-25 20:47:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  mat [ 9 ] ;  /* all values are set */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quat_to_mat3 ( ( float  ( * ) [ 3 ] ) mat ,  self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-30 00:42:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newMatrixObject ( mat ,  3 ,  3 ,  Py_NEW ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.cross(other)------------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_cross_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. 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 "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :type other: :class:`Quaternion` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :return: The cross product. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_cross ( QuaternionObject  * self ,  PyObject  * value )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] ,  tquat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mathutils_array_parse ( tquat ,  QUAT_SIZE ,  QUAT_SIZE ,  value ,  " quaternion.cross(other), invalid 'other' arg " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mul_qt_qtqt ( quat ,  self - > quat ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( self ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.dot(other)------------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_dot_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. 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 "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :type other: :class:`Quaternion` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :return: The dot product. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_dot ( QuaternionObject  * self ,  PyObject  * value )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( mathutils_array_parse ( tquat ,  QUAT_SIZE ,  QUAT_SIZE ,  value ,  " quaternion.dot(other), invalid 'other' arg " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PyFloat_FromDouble ( dot_qtqt ( self - > quat ,  tquat ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-04 05:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_rotation_difference_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: difference(other) \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Returns a quaternion representing the rotational difference. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :arg other: second quaternion. \n "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :type other: :class:`Quaternion` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :return: the rotational difference between the two quat rotations. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
									
										
										
										
											2011-04-04 05:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_rotation_difference ( QuaternionObject  * self ,  PyObject  * value )  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ QUAT_SIZE ] ,  quat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( mathutils_array_parse ( tquat ,  QUAT_SIZE ,  QUAT_SIZE ,  value ,  " quaternion.difference(other), invalid 'other' arg " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									rotation_between_quats_to_quat ( quat ,  self - > quat ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( self ) ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_slerp_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: slerp(other, factor) \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Returns the interpolation of two quaternions. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :arg other: value to interpolate with. \n "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :type other: :class:`Quaternion` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :arg factor: The interpolation value in [0.0, 1.0]. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :type factor: float \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :return: The interpolated rotation. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_slerp ( QuaternionObject  * self ,  PyObject  * args )  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  tquat [ QUAT_SIZE ] ,  quat [ QUAT_SIZE ] ,  fac ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! PyArg_ParseTuple ( args ,  " Of:slerp " ,  & value ,  & fac ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " quat.slerp(): expected Quaternion types and float " ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mathutils_array_parse ( tquat ,  QUAT_SIZE ,  QUAT_SIZE ,  value ,  " quaternion.slerp(other), invalid 'other' arg " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( fac  >  1.0f  | |  fac  <  0.0f )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-20 19:49:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_AttributeError ,  " quat.slerp(): interpolation factor must be between 0.0 and 1.0 " ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									interp_qt_qtqt ( quat ,  self - > quat ,  tquat ,  fac ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( self ) ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 09:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_rotate_doc [ ]  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" .. method:: rotate(other) \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Rotates the quaternion a 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 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  self_rmat [ 3 ] [ 3 ] ,  other_rmat [ 3 ] [ 3 ] ,  rmat [ 3 ] [ 3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  tquat [ 4 ] ,  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 09:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( mathutils_any_to_rotmat ( other_rmat ,  value ,  " quaternion.rotate(value) " )  = =  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									length =  normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									quat_to_mat3 ( self_rmat ,  tquat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mul_m3_m3m3 ( rmat ,  self_rmat ,  other_rmat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mat3_to_quat ( self - > quat ,  rmat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mul_qt_fl ( self - > quat ,  length ) ;  /* maintain length after rotating */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.normalize()----------------
  
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//normalize the axis of rotation of [theta, vector]
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_normalize_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: normalize() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Normalize the quaternion. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_normalize ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									normalize_qt ( self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_normalized_doc [ ]  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" .. function:: normalized() \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    Return a new normalized quaternion. \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :return: a normalized copy. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_normalized ( QuaternionObject  * self )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-09 09:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  quat__apply_to_copy ( ( PyNoArgsFunction ) Quaternion_normalize ,  self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.invert()------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  char  Quaternion_invert_doc [ ]  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" .. function:: invert() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Set the quaternion to its inverse. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_invert ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									invert_qt ( self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  char  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 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-09 09:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  quat__apply_to_copy ( ( PyNoArgsFunction ) Quaternion_invert ,  self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.identity()-----------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_identity_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: identity() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Set the quaternion to an identity quaternion. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :return: an instance of itself. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_identity ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									unit_qt ( self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.negate()-------------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_negate_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: negate() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Set the quaternion to its negative. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :return: an instance of itself. \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_negate ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mul_qt_fl ( self - > quat ,  - 1.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.conjugate()----------------
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_conjugate_doc [ ]  =  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" .. function:: conjugate() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Set the quaternion to its conjugate (negate x, y, z). \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_conjugate ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									conjugate_qt ( self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_RETURN_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  char  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 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-09 09:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  quat__apply_to_copy ( ( PyNoArgsFunction ) Quaternion_conjugate ,  self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//----------------------------Quaternion.copy()----------------
  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  Quaternion_copy_doc [ ]  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" .. function:: copy() \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    Returns a copy of this quaternion. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"    :return: A copy of the quaternion. \n "  
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    :rtype: :class:`Quaternion` \n "  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" \n "  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"    .. note:: use this to get a copy of a wrapped quaternion with no reference to the original data. \n "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_copy ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-30 00:42:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( self - > quat ,  Py_NEW ,  Py_TYPE ( self ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------print object (internal)--------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//print the object to screen
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_repr ( QuaternionObject  * self )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * ret ,  * tuple ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tuple =  Quaternion_to_tuple_ext ( self ,  - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-19 22:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ret =  PyUnicode_FromFormat ( " Quaternion(%R) " ,  tuple ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-19 22:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_DECREF ( tuple ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-19 22:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-25 03:34:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject *  Quaternion_richcmpr ( PyObject  * a ,  PyObject  * b ,  int  op )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  ok =  - 1 ;  /* zero is true */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( QuaternionObject_Check ( a )  & &  QuaternionObject_Check ( b ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										QuaternionObject  * quatA =  ( QuaternionObject  * ) a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										QuaternionObject  * quatB =  ( QuaternionObject  * ) b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( BaseMath_ReadCallback ( quatA )  = =  - 1  | |  BaseMath_ReadCallback ( quatB )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ok =  ( EXPP_VectorsAreEqual ( quatA - > quat ,  quatB - > quat ,  QUAT_SIZE ,  1 ) )  ?  0  :  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_NE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ok  =  ! ok ;  /* pass through */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_EQ : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res  =  ok  ?  Py_False  :  Py_True ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_LT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_LE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_GT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  Py_GE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res  =  Py_NotImplemented ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyErr_BadArgument ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 10:40:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  Py_INCREF ( res ) ,  res ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-06-30 00:42:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//---------------------SEQUENCE PROTOCOLS------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------len(object)------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//sequence length
  
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_len ( QuaternionObject  * UNUSED ( self ) )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  QUAT_SIZE ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------object[]---------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//sequence accessor (get)
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_item ( QuaternionObject  * self ,  int  i )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( i < 0 ) 	i =  QUAT_SIZE - i ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( i  <  0  | |  i  > =  QUAT_SIZE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_IndexError ,  " quaternion[attribute]: array index out of range " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadIndexCallback ( self ,  i )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PyFloat_FromDouble ( self - > quat [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------object[]-------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//sequence accessor (set)
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_ass_item ( QuaternionObject  * self ,  int  i ,  PyObject  * ob )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  scalar =  ( float ) PyFloat_AsDouble ( ob ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( scalar = = - 1.0f  & &  PyErr_Occurred ( ) )  {  /* parsed item not a number */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " quaternion[index] = x: index argument not a number " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( i < 0 ) 	i =  QUAT_SIZE - i ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( i  <  0  | |  i  > =  QUAT_SIZE ) { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_IndexError ,  " quaternion[attribute] = x: array assignment index out of range " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									self - > quat [ i ]  =  scalar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_WriteIndexCallback ( self ,  i )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------object[z:y]------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//sequence slice (get)
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_slice ( QuaternionObject  * self ,  int  begin ,  int  end )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-24 03:51:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * tuple ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									int  count ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CLAMP ( begin ,  0 ,  QUAT_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( end < 0 )  end =  ( QUAT_SIZE  +  1 )  +  end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CLAMP ( end ,  0 ,  QUAT_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-24 03:51:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									begin =  MIN2 ( begin ,  end ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-24 03:51:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tuple =  PyTuple_New ( end  -  begin ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for ( count =  begin ;  count  <  end ;  count + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyTuple_SET_ITEM ( tuple ,  count  -  begin ,  PyFloat_FromDouble ( self - > quat [ count ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-24 03:51:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  tuple ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//----------------------------object[z:y]------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//sequence slice (set)
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_ass_slice ( QuaternionObject  * self ,  int  begin ,  int  end ,  PyObject  * seq )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  i ,  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CLAMP ( begin ,  0 ,  QUAT_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( end < 0 )  end =  ( QUAT_SIZE  +  1 )  +  end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CLAMP ( end ,  0 ,  QUAT_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									begin  =  MIN2 ( begin ,  end ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ( size = mathutils_array_parse ( quat ,  0 ,  QUAT_SIZE ,  seq ,  " mathutils.Quaternion[begin:end] = [] " ) )  = =  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if ( size  ! =  ( end  -  begin ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " quaternion[begin:end] = []: size mismatch in slice assignment " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* parsed well - now set in vector */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for ( i =  0 ;  i  <  size ;  i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > quat [ begin  +  i ]  =  quat [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-20 12:11:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( void ) BaseMath_WriteCallback ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_subscript ( QuaternionObject  * self ,  PyObject  * item )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( PyIndex_Check ( item ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_ssize_t  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										i  =  PyNumber_AsSsize_t ( item ,  PyExc_IndexError ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( i  = =  - 1  & &  PyErr_Occurred ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( i  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											i  + =  QUAT_SIZE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Quaternion_item ( self ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( PySlice_Check ( item ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_ssize_t  start ,  stop ,  step ,  slicelength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-18 21:39:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( PySlice_GetIndicesEx ( ( void  * ) item ,  QUAT_SIZE ,  & start ,  & stop ,  & step ,  & slicelength )  <  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( slicelength  < =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:39:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PyTuple_New ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( step  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  Quaternion_slice ( self ,  start ,  stop ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyErr_SetString ( PyExc_TypeError ,  " slice steps not supported with quaternions " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_TypeError ,  " quaternion indices must be integers, not %.200s " ,  Py_TYPE ( item ) - > tp_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_ass_subscript ( QuaternionObject  * self ,  PyObject  * item ,  PyObject  * value )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( PyIndex_Check ( item ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_ssize_t  i  =  PyNumber_AsSsize_t ( item ,  PyExc_IndexError ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( i  = =  - 1  & &  PyErr_Occurred ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											return  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( i  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											i  + =  QUAT_SIZE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  Quaternion_ass_item ( self ,  i ,  value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if  ( PySlice_Check ( item ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_ssize_t  start ,  stop ,  step ,  slicelength ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-18 21:39:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( PySlice_GetIndicesEx ( ( void  * ) item ,  QUAT_SIZE ,  & start ,  & stop ,  & step ,  & slicelength )  <  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( step  = =  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  Quaternion_ass_slice ( self ,  start ,  stop ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyErr_SetString ( PyExc_TypeError ,  " slice steps not supported with quaternion " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_TypeError ,  " quaternion indices must be integers, not %.200s " ,  Py_TYPE ( item ) - > tp_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//------------------------NUMERIC PROTOCOLS----------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//------------------------obj + obj------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//addition
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_add ( PyObject  * q1 ,  PyObject  * q2 )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									QuaternionObject  * quat1  =  NULL ,  * quat2  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! QuaternionObject_Check ( q1 )  | |  ! QuaternionObject_Check ( q2 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_AttributeError ,  " Quaternion addition: arguments not valid for this operation " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quat1  =  ( QuaternionObject * ) q1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									quat2  =  ( QuaternionObject * ) q2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( quat1 )  = =  - 1  | |  BaseMath_ReadCallback ( quat2 )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_qt_qtqt ( quat ,  quat1 - > quat ,  quat2 - > quat ,  1.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( q1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//------------------------obj - obj------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//subtraction
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_sub ( PyObject  * q1 ,  PyObject  * q2 )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  x ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									QuaternionObject  * quat1  =  NULL ,  * quat2  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! QuaternionObject_Check ( q1 )  | |  ! QuaternionObject_Check ( q2 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_AttributeError ,  " Quaternion addition: arguments not valid for this operation " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quat1  =  ( QuaternionObject * ) q1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									quat2  =  ( QuaternionObject * ) q2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( quat1 )  = =  - 1  | |  BaseMath_ReadCallback ( quat2 )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for ( x  =  0 ;  x  <  QUAT_SIZE ;  x + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										quat [ x ]  =  quat1 - > quat [ x ]  -  quat2 - > quat [ x ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( q1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * quat_mul_float ( QuaternionObject  * quat ,  const  float  scalar )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									copy_qt_qt ( tquat ,  quat - > quat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mul_qt_fl ( tquat ,  scalar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  newQuaternionObject ( tquat ,  Py_NEW ,  Py_TYPE ( quat ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//------------------------obj * obj------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//mulplication
  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_mul ( PyObject  * q1 ,  PyObject  * q2 )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] ,  scalar ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									QuaternionObject  * quat1  =  NULL ,  * quat2  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( QuaternionObject_Check ( q1 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										quat1  =  ( QuaternionObject * ) q1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( BaseMath_ReadCallback ( quat1 )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( QuaternionObject_Check ( q2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										quat2  =  ( QuaternionObject * ) q2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( BaseMath_ReadCallback ( quat2 )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-08-02 00:08:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( quat1  & &  quat2 )  {  /* QUAT*QUAT (cross product) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mul_qt_qtqt ( quat ,  quat1 - > quat ,  quat2 - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  newQuaternionObject ( quat ,  Py_NEW ,  Py_TYPE ( q1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* the only case this can happen (for a supported type is "FLOAT*QUAT") */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if ( quat2 )  {  /* FLOAT*QUAT */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-27 17:12:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( ( ( scalar =  PyFloat_AsDouble ( q1 ) )  = =  - 1.0f  & &  PyErr_Occurred ( ) ) = = 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  quat_mul_float ( quat2 ,  scalar ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-18 23:12:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  if  ( quat1 )  {  /* QUAT*FLOAT */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-27 17:12:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( ( ( ( scalar =  PyFloat_AsDouble ( q2 ) )  = =  - 1.0f  & &  PyErr_Occurred ( ) ) = = 0 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  quat_mul_float ( quat1 ,  scalar ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 15:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										BLI_assert ( ! " internal error " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-09 09:16:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyErr_Format ( PyExc_TypeError ,  " Quaternion multiplication: not supported between '%.200s' and '%.200s' types " ,  Py_TYPE ( q1 ) - > tp_name ,  Py_TYPE ( q2 ) - > tp_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-08 03:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* -obj
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  returns  the  negative  of  this  object */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_neg ( QuaternionObject  * self )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  tquat [ QUAT_SIZE ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-08 03:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									negate_v4_v4 ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  newQuaternionObject ( tquat ,  Py_NEW ,  Py_TYPE ( self ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------PROTOCOL DECLARATIONS--------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PySequenceMethods  Quaternion_SeqMethods  =  {  
						 
					
						
							
								
									
										
										
										
											2010-05-16 10:09:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( lenfunc )  Quaternion_len , 				/* sq_length */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( binaryfunc )  NULL , 						/* sq_concat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizeargfunc )  NULL , 					/* sq_repeat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizeargfunc )  Quaternion_item , 			/* sq_item */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizessizeargfunc )  NULL , 				/* sq_slice, deprecated */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizeobjargproc )  Quaternion_ass_item , 	/* sq_ass_item */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizessizeobjargproc )  NULL , 			/* sq_ass_slice, deprecated */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( objobjproc )  NULL , 						/* sq_contains */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( binaryfunc )  NULL , 						/* sq_inplace_concat */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( ssizeargfunc )  NULL , 					/* sq_inplace_repeat */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyMappingMethods  Quaternion_AsMapping  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( lenfunc ) Quaternion_len , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( binaryfunc ) Quaternion_subscript , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( objobjargproc ) Quaternion_ass_subscript 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2009-06-28 13:27:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyNumberMethods  Quaternion_NumMethods  =  {  
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( binaryfunc ) 	Quaternion_add , 	/*nb_add*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( binaryfunc ) 	Quaternion_sub , 	/*nb_subtract*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( binaryfunc ) 	Quaternion_mul , 	/*nb_multiply*/ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 							/*nb_remainder*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 							/*nb_divmod*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 							/*nb_power*/ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-08 03:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( unaryfunc )  	Quaternion_neg , 	/*nb_negative*/ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( unaryfunc )  	0 , 	/*tp_positive*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( unaryfunc )  	0 , 	/*tp_absolute*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( inquiry ) 	0 , 	/*tp_bool*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( unaryfunc ) 	0 , 	/*nb_invert*/ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 				/*nb_lshift*/ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( binaryfunc ) 0 , 	/*nb_rshift*/ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 				/*nb_and*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/*nb_xor*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/*nb_or*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/*nb_int*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/*nb_reserved*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/*nb_float*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_add */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_subtract */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_multiply */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_remainder */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_power */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_lshift */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_rshift */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_and */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_xor */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_or */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_floor_divide */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_true_divide */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_floor_divide */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_inplace_true_divide */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 				/* nb_index */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-28 13:27:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_getAxis ( QuaternionObject  * self ,  void  * type )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  Quaternion_item ( self ,  GET_INT_FROM_POINTER ( type ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_setAxis ( QuaternionObject  * self ,  PyObject  * value ,  void  * type )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  Quaternion_ass_item ( self ,  GET_INT_FROM_POINTER ( type ) ,  value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_getMagnitude ( QuaternionObject  * self ,  void  * UNUSED ( closure ) )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 20:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PyFloat_FromDouble ( sqrt ( dot_qtqt ( self - > quat ,  self - > quat ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_getAngle ( QuaternionObject  * self ,  void  * UNUSED ( closure ) )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-27 17:12:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PyFloat_FromDouble ( 2.0f  *  ( saacos ( tquat [ 0 ] ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_setAngle ( QuaternionObject  * self ,  PyObject  * value ,  void  * UNUSED ( closure ) )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  len ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  axis [ 3 ] ,  angle_dummy ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									double  angle ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									len =  normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quat_to_axis_angle ( axis ,  & angle_dummy ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									angle =  PyFloat_AsDouble ( value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-27 17:12:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( angle = = - 1.0  & &  PyErr_Occurred ( ) )  {  /* parsed item not a number */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " quaternion.angle = value: float expected " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-02 03:05:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									angle =  angle_wrap_rad ( angle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( 	EXPP_FloatsAreEqual ( axis [ 0 ] ,  0.0f ,  10 )  & & 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EXPP_FloatsAreEqual ( axis [ 1 ] ,  0.0f ,  10 )  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EXPP_FloatsAreEqual ( axis [ 2 ] ,  0.0f ,  10 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									)  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										axis [ 0 ]  =  1.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									axis_angle_to_quat ( self - > quat ,  axis ,  angle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mul_qt_fl ( self - > quat ,  len ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_WriteCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_getAxisVec ( QuaternionObject  * self ,  void  * UNUSED ( closure ) )  
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  axis [ 3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  angle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									quat_to_axis_angle ( axis ,  & angle ,  tquat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( 	EXPP_FloatsAreEqual ( axis [ 0 ] ,  0.0f ,  10 )  & & 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EXPP_FloatsAreEqual ( axis [ 1 ] ,  0.0f ,  10 )  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EXPP_FloatsAreEqual ( axis [ 2 ] ,  0.0f ,  10 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									)  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										axis [ 0 ]  =  1.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( PyObject  * )  newVectorObject ( axis ,  3 ,  Py_NEW ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  Quaternion_setAxisVec ( QuaternionObject  * self ,  PyObject  * value ,  void  * UNUSED ( closure ) )  
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  tquat [ 4 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  axis [ 3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  angle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_ReadCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									len =  normalize_qt_qt ( tquat ,  self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quat_to_axis_angle ( axis ,  & angle ,  tquat ) ;  /* axis value is unused */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( mathutils_array_parse ( axis ,  3 ,  3 ,  value ,  " quat.axis = other " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									axis_angle_to_quat ( self - > quat ,  axis ,  angle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-07 01:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mul_qt_fl ( self - > quat ,  len ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 18:42:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( BaseMath_WriteCallback ( self )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-25 02:56:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-11 14:22:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//----------------------------------mathutils.Quaternion() --------------
  
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * Quaternion_new ( PyTypeObject  * type ,  PyObject  * args ,  PyObject  * kwds )  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * seq =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									double  angle  =  0.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  quat [ QUAT_SIZE ] =  { 0.0f ,  0.0f ,  0.0f ,  0.0f } ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( kwds  & &  PyDict_Size ( kwds ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " mathutils.Quaternion(): takes no keyword args " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:41:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! PyArg_ParseTuple ( args ,  " |Od:mathutils.Quaternion " ,  & seq ,  & angle ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch ( PyTuple_GET_SIZE ( args ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  1 : 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( mathutils_array_parse ( quat ,  QUAT_SIZE ,  QUAT_SIZE ,  seq ,  " mathutils.Quaternion() " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( mathutils_array_parse ( quat ,  3 ,  3 ,  seq ,  " mathutils.Quaternion() " )  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-02 03:05:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										angle =  angle_wrap_rad ( angle ) ;  /* clamp because of precision issues */ 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										axis_angle_to_quat ( quat ,  quat ,  angle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 19:27:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* PyArg_ParseTuple assures no more then 2 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  newQuaternionObject ( quat ,  Py_NEW ,  type ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-09 09:20:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * quat__apply_to_copy ( PyNoArgsFunction  quat_func ,  QuaternionObject  * self )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * ret =  Quaternion_copy ( self ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject  * ret_dummy =  quat_func ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ret_dummy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_DECREF ( ret_dummy ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ( PyObject  * ) ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  {  /* error */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_DECREF ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------METHOD DEFINITIONS ----------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  struct  PyMethodDef  Quaternion_methods [ ]  =  {  
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* in place only */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " identity " ,  ( PyCFunction )  Quaternion_identity ,  METH_NOARGS ,  Quaternion_identity_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " negate " ,  ( PyCFunction )  Quaternion_negate ,  METH_NOARGS ,  Quaternion_negate_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* operate on original or copy */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " conjugate " ,  ( PyCFunction )  Quaternion_conjugate ,  METH_NOARGS ,  Quaternion_conjugate_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " conjugated " ,  ( PyCFunction )  Quaternion_conjugated ,  METH_NOARGS ,  Quaternion_conjugated_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " invert " ,  ( PyCFunction )  Quaternion_invert ,  METH_NOARGS ,  Quaternion_invert_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " inverted " ,  ( PyCFunction )  Quaternion_inverted ,  METH_NOARGS ,  Quaternion_inverted_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " normalize " ,  ( PyCFunction )  Quaternion_normalize ,  METH_NOARGS ,  Quaternion_normalize_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " normalized " ,  ( PyCFunction )  Quaternion_normalized ,  METH_NOARGS ,  Quaternion_normalized_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* return converted representation */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " to_euler " ,  ( PyCFunction )  Quaternion_to_euler ,  METH_VARARGS ,  Quaternion_to_euler_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " to_matrix " ,  ( PyCFunction )  Quaternion_to_matrix ,  METH_NOARGS ,  Quaternion_to_matrix_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* operation between 2 or more types  */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " cross " ,  ( PyCFunction )  Quaternion_cross ,  METH_O ,  Quaternion_cross_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " dot " ,  ( PyCFunction )  Quaternion_dot ,  METH_O ,  Quaternion_dot_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-04 05:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " rotation_difference " ,  ( PyCFunction )  Quaternion_rotation_difference ,  METH_O ,  Quaternion_rotation_difference_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " slerp " ,  ( PyCFunction )  Quaternion_slerp ,  METH_VARARGS ,  Quaternion_slerp_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-16 02:05:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " rotate " ,  ( PyCFunction )  Quaternion_rotate ,  METH_O ,  Quaternion_rotate_doc } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-05 06:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ " __copy__ " ,  ( PyCFunction )  Quaternion_copy ,  METH_NOARGS ,  Quaternion_copy_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " copy " ,  ( PyCFunction )  Quaternion_copy ,  METH_NOARGS ,  Quaternion_copy_doc } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ NULL ,  NULL ,  0 ,  NULL } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Python attributes get/set structure:                                      */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*****************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  PyGetSetDef  Quaternion_getseters [ ]  =  {  
						 
					
						
							
								
									
										
										
										
											2010-12-03 17:05:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ ( char  * ) " w " ,  ( getter ) Quaternion_getAxis ,  ( setter ) Quaternion_setAxis ,  ( char  * ) " Quaternion W value. \n \n :type: float " ,  ( void  * ) 0 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " x " ,  ( getter ) Quaternion_getAxis ,  ( setter ) Quaternion_setAxis ,  ( char  * ) " Quaternion X axis. \n \n :type: float " ,  ( void  * ) 1 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " y " ,  ( getter ) Quaternion_getAxis ,  ( setter ) Quaternion_setAxis ,  ( char  * ) " Quaternion Y axis. \n \n :type: float " ,  ( void  * ) 2 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " z " ,  ( getter ) Quaternion_getAxis ,  ( setter ) Quaternion_setAxis ,  ( char  * ) " Quaternion Z axis. \n \n :type: float " ,  ( void  * ) 3 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " magnitude " ,  ( getter ) Quaternion_getMagnitude ,  ( setter ) NULL ,  ( char  * ) " Size of the quaternion (readonly). \n \n :type: float " ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " angle " ,  ( getter ) Quaternion_getAngle ,  ( setter ) Quaternion_setAngle ,  ( char  * ) " angle of the quaternion. \n \n :type: float " ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " axis " , ( getter ) Quaternion_getAxisVec ,  ( setter ) Quaternion_setAxisVec ,  ( char  * ) " quaternion axis as a vector. \n \n :type: :class:`Vector` " ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " is_wrapped " ,  ( getter ) BaseMathObject_getWrapped ,  ( setter ) NULL ,  ( char  * ) BaseMathObject_Wrapped_doc ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ ( char  * ) " owner " ,  ( getter ) BaseMathObject_getOwner ,  ( setter ) NULL ,  ( char  * ) BaseMathObject_Owner_doc ,  NULL } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ NULL ,  NULL ,  NULL ,  NULL ,  NULL }   /* Sentinel */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//------------------PY_OBECT DEFINITION--------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-01-31 21:52:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  quaternion_doc [ ]  =  
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" This object gives access to Quaternions in Blender. "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								;  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								PyTypeObject  quaternion_Type  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyVarObject_HEAD_INIT ( NULL ,  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-28 06:03:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									" mathutils.Quaternion " , 						//tp_name
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									sizeof ( QuaternionObject ) , 			//tp_basicsize
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 , 								//tp_itemsize
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( destructor ) BaseMathObject_dealloc , 		//tp_dealloc
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_print
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_getattr
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_setattr
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_compare
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-25 23:33:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( reprfunc )  Quaternion_repr , 		//tp_repr
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									& Quaternion_NumMethods , 			//tp_as_number
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									& Quaternion_SeqMethods , 			//tp_as_sequence
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									& Quaternion_AsMapping , 			//tp_as_mapping
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_hash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_call
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_str
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_getattro
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_setattro
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_as_buffer
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 04:58:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Py_TPFLAGS_DEFAULT  |  Py_TPFLAGS_BASETYPE  |  Py_TPFLAGS_HAVE_GC ,  //tp_flags
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 21:33:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									quaternion_doc ,  //tp_doc
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 04:58:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( traverseproc ) BaseMathObject_traverse , 	//tp_traverse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									( inquiry ) BaseMathObject_clear , 	//tp_clear
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									( richcmpfunc ) Quaternion_richcmpr , 	//tp_richcompare
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									0 , 								//tp_weaklistoffset
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_iter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_iternext
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Quaternion_methods , 				//tp_methods
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_members
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Quaternion_getseters , 			//tp_getset
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_base
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_dict
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_descr_get
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_descr_set
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									0 , 								//tp_dictoffset
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_init
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_alloc
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-20 02:44:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Quaternion_new , 					//tp_new
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NULL , 								//tp_free
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_is_gc
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_bases
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_mro
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_cache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_subclasses
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_weaklist
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 								//tp_del
 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//------------------------newQuaternionObject (internal)-------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//creates a new quaternion object
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*pass Py_WRAP - if vector is a WRAPPER for data allocated by BLENDER
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ( i . e .  it  was  allocated  elsewhere  by  MEM_mallocN ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pass  Py_NEW  -  if  vector  is  not  a  WRAPPER  and  managed  by  PYTHON 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ( i . e .  it  must  be  created  here  with  PyMEM_malloc ( ) ) */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-30 00:42:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PyObject  * newQuaternionObject ( float  * quat ,  int  type ,  PyTypeObject  * base_type )  
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									QuaternionObject  * self ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-04 03:06:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 04:58:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									self =  base_type  ? 	( QuaternionObject  * ) base_type - > tp_alloc ( base_type ,  0 )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														( QuaternionObject  * ) PyObject_GC_New ( QuaternionObject ,  & quaternion_Type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 05:46:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( self )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* init callbacks as NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > cb_user =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > cb_type =  self - > cb_subtype =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 05:46:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( type  = =  Py_WRAP ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											self - > quat  =  quat ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											self - > wrapped  =  Py_WRAP ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if  ( type  = =  Py_NEW ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											self - > quat  =  PyMem_Malloc ( QUAT_SIZE  *  sizeof ( float ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! quat )  {  //new empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												unit_qt ( self - > quat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 05:46:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												QUATCOPY ( self - > quat ,  quat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											self - > wrapped  =  Py_NEW ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-19 11:12:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 05:46:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											PyErr_SetString ( PyExc_RuntimeError ,  " Quaternion(): invalid type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 20:33:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( PyObject  * )  self ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PyObject  * newQuaternionObject_cb ( PyObject  * cb_user ,  int  cb_type ,  int  cb_subtype )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-02-24 05:46:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									QuaternionObject  * self =  ( QuaternionObject  * ) newQuaternionObject ( NULL ,  Py_NEW ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( self )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_INCREF ( cb_user ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > cb_user = 			cb_user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > cb_type = 			( unsigned  char ) cb_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										self - > cb_subtype = 		( unsigned  char ) cb_subtype ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 06:01:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyObject_GC_Track ( self ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-25 10:11:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( PyObject  * ) self ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
											
												Mathutils refactor & include in sphinx generated docs, (TODO, include getset'ers in docs)
 - Mathutils.MidpointVecs --> vector.lerp(other, fac)
 - Mathutils.AngleBetweenVecs --> vector.angle(other)
 - Mathutils.ProjectVecs --> vector.project(other)
 - Mathutils.DifferenceQuats --> quat.difference(other)
 - Mathutils.Slerp --> quat.slerp(other, fac)
 - Mathutils.Rand: removed, use pythons random module
 - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args
 - Matrix.scalePart --> Matrix.scale_part
 - Matrix.translationPart --> Matrix.translation_part
 - Matrix.rotationPart --> Matrix.rotation_part
 - toMatrix --> to_matrix
 - toEuler --> to_euler
 - toQuat --> to_quat
 - Vector.toTrackQuat --> Vector.to_track_quat
											 
										 
										
											2010-01-25 09:44:04 +00:00