Blender  V3.3
BLI_math_rotation.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
4 #pragma once
5 
10 #include "BLI_math_base.h"
11 #include "BLI_utildefines.h"
12 #include "DNA_vec_types.h"
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 /* -------------------------------------------------------------------- */
22 #define RAD2DEG(_rad) ((_rad) * (180.0 / M_PI))
23 #define DEG2RAD(_deg) ((_deg) * (M_PI / 180.0))
24 
25 #define RAD2DEGF(_rad) ((_rad) * (float)(180.0 / M_PI))
26 #define DEG2RADF(_deg) ((_deg) * (float)(M_PI / 180.0))
27 
30 /* -------------------------------------------------------------------- */
35 /* Initialize */
36 
37 /* Convenience, avoids setting Y axis everywhere. */
38 
39 void unit_axis_angle(float axis[3], float *angle);
40 void unit_qt(float q[4]);
41 void copy_qt_qt(float q[4], const float a[4]);
42 
43 /* Arithmetic. */
44 
45 void mul_qt_qtqt(float q[4], const float a[4], const float b[4]);
65 void mul_qt_v3(const float q[4], float r[3]);
69 void mul_qt_fl(float q[4], float f);
70 
74 void pow_qt_fl_normalized(float q[4], float f);
75 
76 void sub_qt_qtqt(float q[4], const float a[4], const float b[4]);
77 
78 void invert_qt(float q[4]);
79 void invert_qt_qt(float q1[4], const float q2[4]);
85 void invert_qt_normalized(float q[4]);
86 void invert_qt_qt_normalized(float q1[4], const float q2[4]);
87 void conjugate_qt(float q[4]);
88 void conjugate_qt_qt(float q1[4], const float q2[4]);
89 float dot_qtqt(const float a[4], const float b[4]);
90 float normalize_qt(float q[4]);
91 float normalize_qt_qt(float r[4], const float q[4]);
92 
93 /* Comparison. */
94 
95 bool is_zero_qt(const float q[4]);
96 
97 /* interpolation */
106 void interp_dot_slerp(float t, float cosom, float r_w[2]);
107 void interp_qt_qtqt(float q[4], const float a[4], const float b[4], float t);
108 void add_qt_qtqt(float q[4], const float a[4], const float b[4], float t);
109 
110 /* Conversion. */
111 
112 void quat_to_mat3(float mat[3][3], const float q[4]);
113 void quat_to_mat4(float mat[4][4], const float q[4]);
114 
119 void quat_to_compatible_quat(float q[4], const float a[4], const float old[4]);
120 
121 void mat3_normalized_to_quat(float q[4], const float mat[3][3]);
122 void mat4_normalized_to_quat(float q[4], const float mat[4][4]);
123 void mat3_to_quat(float q[4], const float mat[3][3]);
124 void mat4_to_quat(float q[4], const float mat[4][4]);
129 void tri_to_quat_ex(float quat[4],
130  const float v1[3],
131  const float v2[3],
132  const float v3[3],
133  const float no_orig[3]);
137 float tri_to_quat(float q[4], const float a[3], const float b[3], const float c[3]);
138 void vec_to_quat(float q[4], const float vec[3], short axis, short upflag);
143 void rotation_between_vecs_to_mat3(float m[3][3], const float v1[3], const float v2[3]);
147 void rotation_between_vecs_to_quat(float q[4], const float v1[3], const float v2[3]);
148 void rotation_between_quats_to_quat(float q[4], const float q1[4], const float q2[4]);
149 
160 float quat_split_swing_and_twist(const float q[4], int axis, float r_swing[4], float r_twist[4]);
161 
162 float angle_normalized_qt(const float q[4]);
163 float angle_normalized_qtqt(const float q1[4], const float q2[4]);
164 float angle_qt(const float q[4]);
165 float angle_qtqt(const float q1[4], const float q2[4]);
166 
167 float angle_signed_normalized_qt(const float q[4]);
168 float angle_signed_normalized_qtqt(const float q1[4], const float q2[4]);
169 float angle_signed_qt(const float q[4]);
170 float angle_signed_qtqt(const float q1[4], const float q2[4]);
171 
175 void mat3_to_quat_is_ok(float q[4], const float mat[3][3]);
176 
177 /* Other. */
178 
196 void sin_cos_from_fraction(int numerator, int denominator, float *r_sin, float *r_cos);
197 
198 void print_qt(const char *str, const float q[4]);
199 
200 #define print_qt_id(q) print_qt(STRINGIFY(q), q)
201 
204 /* -------------------------------------------------------------------- */
208 /* Conversion. */
209 
210 void axis_angle_normalized_to_quat(float r[4], const float axis[3], float angle);
211 void axis_angle_to_quat(float r[4], const float axis[3], float angle);
215 void axis_angle_to_mat3(float R[3][3], const float axis[3], float angle);
225 void axis_angle_normalized_to_mat3_ex(float mat[3][3],
226  const float axis[3],
227  float angle_sin,
228  float angle_cos);
229 void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle);
233 void axis_angle_to_mat4(float R[4][4], const float axis[3], float angle);
234 
238 void mat3_normalized_to_axis_angle(float axis[3], float *angle, const float M[3][3]);
242 void mat4_normalized_to_axis_angle(float axis[3], float *angle, const float M[4][4]);
243 void mat3_to_axis_angle(float axis[3], float *angle, const float M[3][3]);
247 void mat4_to_axis_angle(float axis[3], float *angle, const float M[4][4]);
251 void quat_to_axis_angle(float axis[3], float *angle, const float q[4]);
252 
253 void angle_to_mat2(float R[2][2], float angle);
257 void axis_angle_to_mat3_single(float R[3][3], char axis, float angle);
261 void axis_angle_to_mat4_single(float R[4][4], char axis, float angle);
262 
263 void axis_angle_to_quat_single(float q[4], char axis, float angle);
264 
267 /* -------------------------------------------------------------------- */
271 void quat_to_expmap(float expmap[3], const float q[4]);
272 void quat_normalized_to_expmap(float expmap[3], const float q[4]);
273 void expmap_to_quat(float r[4], const float expmap[3]);
274 
277 /* -------------------------------------------------------------------- */
281 void eul_to_quat(float quat[4], const float eul[3]);
282 void eul_to_mat3(float mat[3][3], const float eul[3]);
283 void eul_to_mat4(float mat[4][4], const float eul[3]);
284 
285 void mat3_normalized_to_eul(float eul[3], const float mat[3][3]);
286 void mat4_normalized_to_eul(float eul[3], const float mat[4][4]);
287 void mat3_to_eul(float eul[3], const float mat[3][3]);
288 void mat4_to_eul(float eul[3], const float mat[4][4]);
289 void quat_to_eul(float eul[3], const float quat[4]);
290 
291 void mat3_normalized_to_compatible_eul(float eul[3], const float old[3], float mat[3][3]);
292 void mat3_to_compatible_eul(float eul[3], const float old[3], float mat[3][3]);
293 void quat_to_compatible_eul(float eul[3], const float oldrot[3], const float quat[4]);
294 void rotate_eul(float eul[3], char axis, float angle);
295 
296 /* Order independent. */
297 
298 void compatible_eul(float eul[3], const float old[3]);
299 
300 void add_eul_euleul(float r_eul[3], float a[3], float b[3], short order);
301 void sub_eul_euleul(float r_eul[3], float a[3], float b[3], short order);
302 
305 /* -------------------------------------------------------------------- */
309 /* WARNING: must match the #eRotationModes in `DNA_action_types.h`
310  * order matters - types are saved to file. */
311 
312 typedef enum eEulerRotationOrders {
313  EULER_ORDER_DEFAULT = 1, /* blender classic = XYZ */
320  /* There are 6 more entries with duplicate entries included. */
322 
326 void eulO_to_quat(float quat[4], const float eul[3], short order);
330 void eulO_to_mat3(float mat[3][3], const float eul[3], short order);
334 void eulO_to_mat4(float mat[4][4], const float eul[3], short order);
338 void eulO_to_axis_angle(float axis[3], float *angle, const float eul[3], short order);
342 void eulO_to_gimbal_axis(float gmat[3][3], const float eul[3], short order);
343 
347 void mat3_normalized_to_eulO(float eul[3], short order, const float mat[3][3]);
351 void mat4_normalized_to_eulO(float eul[3], short order, const float mat[4][4]);
352 void mat3_to_eulO(float eul[3], short order, const float mat[3][3]);
353 void mat4_to_eulO(float eul[3], short order, const float mat[4][4]);
357 void quat_to_eulO(float eul[3], short order, const float quat[4]);
361 void axis_angle_to_eulO(float eul[3], short order, const float axis[3], float angle);
362 
363 /* Uses 2 methods to retrieve eulers, and picks the closest. */
364 
365 void mat3_normalized_to_compatible_eulO(float eul[3],
366  const float old[3],
367  short order,
368  const float mat[3][3]);
369 void mat4_normalized_to_compatible_eulO(float eul[3],
370  const float old[3],
371  short order,
372  const float mat[4][4]);
373 void mat3_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[3][3]);
374 void mat4_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[4][4]);
375 void quat_to_compatible_eulO(float eul[3], const float old[3], short order, const float quat[4]);
376 
377 void rotate_eulO(float eul[3], short order, char axis, float angle);
378 
381 /* -------------------------------------------------------------------- */
385 void copy_dq_dq(DualQuat *r, const DualQuat *dq);
386 void normalize_dq(DualQuat *dq, float totw);
387 void add_weighted_dq_dq(DualQuat *dq_sum, const DualQuat *dq, float weight);
388 void mul_v3m3_dq(float r[3], float R[3][3], DualQuat *dq);
389 
390 void mat4_to_dquat(DualQuat *dq, const float basemat[4][4], const float mat[4][4]);
391 void dquat_to_mat4(float R[4][4], const DualQuat *dq);
392 
396 void quat_apply_track(float quat[4], short axis, short upflag);
397 void vec_apply_track(float vec[3], short axis);
398 
402 float focallength_to_fov(float focal_length, float sensor);
403 float fov_to_focallength(float fov, float sensor);
404 
405 float angle_wrap_rad(float angle);
406 float angle_wrap_deg(float angle);
407 
411 float angle_compat_rad(float angle, float angle_compat);
412 
418  int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3]);
422 bool mat3_from_axis_conversion_single(int src_axis, int dst_axis, float r_mat[3][3]);
423 
426 #ifdef __cplusplus
427 }
428 #endif
float angle_compat_rad(float angle, float angle_compat)
void rotation_between_quats_to_quat(float q[4], const float q1[4], const float q2[4])
void mat3_to_compatible_eul(float eul[3], const float old[3], float mat[3][3])
void mat3_normalized_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[3][3])
void eulO_to_mat3(float mat[3][3], const float eul[3], short order)
void sub_eul_euleul(float r_eul[3], float a[3], float b[3], short order)
float angle_qtqt(const float q1[4], const float q2[4])
void pow_qt_fl_normalized(float q[4], float f)
void mat4_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[4][4])
void eulO_to_gimbal_axis(float gmat[3][3], const float eul[3], short order)
void mat4_to_axis_angle(float axis[3], float *angle, const float M[4][4])
void axis_angle_to_mat3_single(float R[3][3], char axis, float angle)
float angle_signed_normalized_qtqt(const float q1[4], const float q2[4])
void rotation_between_vecs_to_quat(float q[4], const float v1[3], const float v2[3])
void interp_qt_qtqt(float q[4], const float a[4], const float b[4], float t)
void print_qt(const char *str, const float q[4])
void vec_apply_track(float vec[3], short axis)
float angle_normalized_qt(const float q[4])
float tri_to_quat(float q[4], const float a[3], const float b[3], const float c[3])
float angle_signed_qt(const float q[4])
void invert_qt_normalized(float q[4])
void invert_qt_qt(float q1[4], const float q2[4])
void conjugate_qt_qt(float q1[4], const float q2[4])
Definition: math_rotation.c:77
void axis_angle_normalized_to_mat3_ex(float mat[3][3], const float axis[3], float angle_sin, float angle_cos)
void eul_to_mat3(float mat[3][3], const float eul[3])
void mat4_to_eulO(float eul[3], short order, const float mat[4][4])
void axis_angle_to_quat(float r[4], const float axis[3], float angle)
void mat3_to_eulO(float eul[3], short order, const float mat[3][3])
void add_weighted_dq_dq(DualQuat *dq_sum, const DualQuat *dq, float weight)
void sin_cos_from_fraction(int numerator, int denominator, float *r_sin, float *r_cos)
void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle)
void mat3_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[3][3])
eEulerRotationOrders
@ EULER_ORDER_ZXY
@ EULER_ORDER_XZY
@ EULER_ORDER_XYZ
@ EULER_ORDER_DEFAULT
@ EULER_ORDER_YZX
@ EULER_ORDER_ZYX
@ EULER_ORDER_YXZ
void sub_qt_qtqt(float q[4], const float a[4], const float b[4])
void axis_angle_to_quat_single(float q[4], char axis, float angle)
void mat3_to_quat(float q[4], const float mat[3][3])
void vec_to_quat(float q[4], const float vec[3], short axis, short upflag)
void mat3_normalized_to_compatible_eul(float eul[3], const float old[3], float mat[3][3])
void rotate_eul(float eul[3], char axis, float angle)
void mat4_to_eul(float eul[3], const float mat[4][4])
float normalize_qt(float q[4])
void invert_qt(float q[4])
Definition: math_rotation.c:97
void quat_normalized_to_expmap(float expmap[3], const float q[4])
void eulO_to_axis_angle(float axis[3], float *angle, const float eul[3], short order)
void dquat_to_mat4(float R[4][4], const DualQuat *dq)
void mul_qt_fl(float q[4], float f)
void mul_qt_v3(const float q[4], float r[3])
Definition: math_rotation.c:59
void angle_to_mat2(float R[2][2], float angle)
void unit_qt(float q[4])
Definition: math_rotation.c:27
void rotate_eulO(float eul[3], short order, char axis, float angle)
void axis_angle_normalized_to_quat(float r[4], const float axis[3], float angle)
void eul_to_quat(float quat[4], const float eul[3])
void axis_angle_to_mat4(float R[4][4], const float axis[3], float angle)
float angle_signed_normalized_qt(const float q[4])
void quat_to_eul(float eul[3], const float quat[4])
float normalize_qt_qt(float r[4], const float q[4])
float dot_qtqt(const float a[4], const float b[4])
Definition: math_rotation.c:92
void invert_qt_qt_normalized(float q1[4], const float q2[4])
void quat_to_compatible_eulO(float eul[3], const float old[3], short order, const float quat[4])
void quat_to_eulO(float eul[3], short order, const float quat[4])
void mat3_normalized_to_axis_angle(float axis[3], float *angle, const float M[3][3])
bool is_zero_qt(const float q[4])
Definition: math_rotation.c:41
void mat3_normalized_to_eul(float eul[3], const float mat[3][3])
void mat3_to_axis_angle(float axis[3], float *angle, const float M[3][3])
void mul_qt_qtqt(float q[4], const float a[4], const float b[4])
Definition: math_rotation.c:46
void quat_to_axis_angle(float axis[3], float *angle, const float q[4])
void mat3_to_eul(float eul[3], const float mat[3][3])
void quat_to_expmap(float expmap[3], const float q[4])
void eulO_to_quat(float quat[4], const float eul[3], short order)
void mat4_to_dquat(DualQuat *dq, const float basemat[4][4], const float mat[4][4])
void copy_dq_dq(DualQuat *r, const DualQuat *dq)
void axis_angle_to_eulO(float eul[3], short order, const float axis[3], float angle)
void mat4_to_quat(float q[4], const float mat[4][4])
void rotation_between_vecs_to_mat3(float m[3][3], const float v1[3], const float v2[3])
void mat4_normalized_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[4][4])
bool mat3_from_axis_conversion(int src_forward, int src_up, int dst_forward, int dst_up, float r_mat[3][3])
void add_qt_qtqt(float q[4], const float a[4], const float b[4], float t)
float focallength_to_fov(float focal_length, float sensor)
void mat3_to_quat_is_ok(float q[4], const float mat[3][3])
void mul_v3m3_dq(float r[3], float R[3][3], DualQuat *dq)
void conjugate_qt(float q[4])
Definition: math_rotation.c:85
void mat4_normalized_to_eulO(float eul[3], short order, const float mat[4][4])
void quat_apply_track(float quat[4], short axis, short upflag)
void mat4_normalized_to_axis_angle(float axis[3], float *angle, const float M[4][4])
void tri_to_quat_ex(float quat[4], const float v1[3], const float v2[3], const float v3[3], const float no_orig[3])
void mat4_normalized_to_quat(float q[4], const float mat[4][4])
void quat_to_compatible_eul(float eul[3], const float oldrot[3], const float quat[4])
void eulO_to_mat4(float mat[4][4], const float eul[3], short order)
float fov_to_focallength(float fov, float sensor)
float angle_wrap_deg(float angle)
void unit_axis_angle(float axis[3], float *angle)
Definition: math_rotation.c:19
void add_eul_euleul(float r_eul[3], float a[3], float b[3], short order)
float angle_qt(const float q[4])
void compatible_eul(float eul[3], const float old[3])
void normalize_dq(DualQuat *dq, float totw)
void copy_qt_qt(float q[4], const float a[4])
Definition: math_rotation.c:33
void axis_angle_to_mat4_single(float R[4][4], char axis, float angle)
float angle_wrap_rad(float angle)
void quat_to_compatible_quat(float q[4], const float a[4], const float old[4])
void quat_to_mat3(float mat[3][3], const float q[4])
void axis_angle_to_mat3(float R[3][3], const float axis[3], float angle)
void expmap_to_quat(float r[4], const float expmap[3])
void mat4_normalized_to_eul(float eul[3], const float mat[4][4])
void interp_dot_slerp(float t, float cosom, float r_w[2])
float quat_split_swing_and_twist(const float q[4], int axis, float r_swing[4], float r_twist[4])
void mat3_normalized_to_quat(float q[4], const float mat[3][3])
float angle_signed_qtqt(const float q1[4], const float q2[4])
float angle_normalized_qtqt(const float q1[4], const float q2[4])
void mat3_normalized_to_eulO(float eul[3], short order, const float mat[3][3])
void eul_to_mat4(float mat[4][4], const float eul[3])
void quat_to_mat4(float mat[4][4], const float q[4])
bool mat3_from_axis_conversion_single(int src_axis, int dst_axis, float r_mat[3][3])
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
Definition: btVector3.h:356
#define str(s)
#define M
#define R
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)