Blender  V3.3
BLI_math_matrix.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_compiler_attrs.h"
11 #include "BLI_sys_types.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /* -------------------------------------------------------------------- */
21 void zero_m2(float m[2][2]);
22 void zero_m3(float m[3][3]);
23 void zero_m4(float m[4][4]);
24 
25 void unit_m2(float m[2][2]);
26 void unit_m3(float m[3][3]);
27 void unit_m4(float m[4][4]);
28 void unit_m4_db(double m[4][4]);
29 
30 void copy_m2_m2(float m1[2][2], const float m2[2][2]);
31 void copy_m3_m3(float m1[3][3], const float m2[3][3]);
32 void copy_m4_m4(float m1[4][4], const float m2[4][4]);
33 void copy_m3_m4(float m1[3][3], const float m2[4][4]);
34 void copy_m4_m3(float m1[4][4], const float m2[3][3]);
35 void copy_m3_m2(float m1[3][3], const float m2[2][2]);
36 void copy_m4_m2(float m1[4][4], const float m2[2][2]);
37 
38 void copy_m4_m4_db(double m1[4][4], const double m2[4][4]);
39 
40 /* double->float */
41 
42 void copy_m3_m3d(float m1[3][3], const double m2[3][3]);
43 
44 /* float->double */
45 
46 void copy_m3d_m3(double m1[3][3], const float m2[3][3]);
47 void copy_m4d_m4(double m1[4][4], const float m2[4][4]);
48 
49 void swap_m3m3(float m1[3][3], float m2[3][3]);
50 void swap_m4m4(float m1[4][4], float m2[4][4]);
51 
53 void shuffle_m4(float R[4][4], const int index[4]);
54 
57 /* -------------------------------------------------------------------- */
61 void add_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3]);
62 void add_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4]);
63 
64 void madd_m3_m3m3fl(float R[3][3], const float A[3][3], const float B[3][3], float f);
65 void madd_m4_m4m4fl(float R[4][4], const float A[4][4], const float B[4][4], float f);
66 
67 void sub_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3]);
68 void sub_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4]);
69 
70 void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3]);
71 void mul_m4_m3m4(float R[4][4], const float A[3][3], const float B[4][4]);
72 void mul_m4_m4m3(float R[4][4], const float A[4][4], const float B[3][3]);
73 void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4]);
77 void mul_m3_m3m4(float R[3][3], const float A[3][3], const float B[4][4]);
81 void mul_m3_m4m3(float R[3][3], const float A[4][4], const float B[3][3]);
82 void mul_m3_m4m4(float R[3][3], const float A[4][4], const float B[4][4]);
83 
90 void mul_m3_m3m3_uniq(float R[3][3], const float A[3][3], const float B[3][3]);
91 void mul_m3_m3_pre(float R[3][3], const float A[3][3]);
92 void mul_m3_m3_post(float R[3][3], const float B[3][3]);
93 void mul_m4_m4m4_uniq(float R[4][4], const float A[4][4], const float B[4][4]);
94 void mul_m4_m4m4_db_uniq(double R[4][4], const double A[4][4], const double B[4][4]);
95 void mul_m4db_m4db_m4fl_uniq(double R[4][4], const double A[4][4], const float B[4][4]);
96 void mul_m4_m4_pre(float R[4][4], const float A[4][4]);
97 void mul_m4_m4_post(float R[4][4], const float B[4][4]);
98 
99 /* Implement #mul_m3_series macro. */
100 
101 void _va_mul_m3_series_3(float R[3][3], const float M1[3][3], const float M2[3][3]) ATTR_NONNULL();
102 void _va_mul_m3_series_4(float R[3][3],
103  const float M1[3][3],
104  const float M2[3][3],
105  const float M3[3][3]) ATTR_NONNULL();
106 void _va_mul_m3_series_5(float R[3][3],
107  const float M1[3][3],
108  const float M2[3][3],
109  const float M3[3][3],
110  const float M4[3][3]) ATTR_NONNULL();
111 void _va_mul_m3_series_6(float R[3][3],
112  const float M1[3][3],
113  const float M2[3][3],
114  const float M3[3][3],
115  const float M4[3][3],
116  const float M5[3][3]) ATTR_NONNULL();
117 void _va_mul_m3_series_7(float R[3][3],
118  const float M1[3][3],
119  const float M2[3][3],
120  const float M3[3][3],
121  const float M4[3][3],
122  const float M5[3][3],
123  const float M6[3][3]) ATTR_NONNULL();
124 void _va_mul_m3_series_8(float R[3][3],
125  const float M1[3][3],
126  const float M2[3][3],
127  const float M3[3][3],
128  const float M4[3][3],
129  const float M5[3][3],
130  const float M6[3][3],
131  const float M7[3][3]) ATTR_NONNULL();
132 void _va_mul_m3_series_9(float R[3][3],
133  const float M1[3][3],
134  const float M2[3][3],
135  const float M3[3][3],
136  const float M4[3][3],
137  const float M5[3][3],
138  const float M6[3][3],
139  const float M7[3][3],
140  const float M8[3][3]) ATTR_NONNULL();
141 
142 /* Implement #mul_m4_series macro. */
143 
144 void _va_mul_m4_series_3(float R[4][4], const float M1[4][4], const float M2[4][4]) ATTR_NONNULL();
145 void _va_mul_m4_series_4(float R[4][4],
146  const float M1[4][4],
147  const float M2[4][4],
148  const float M3[4][4]) ATTR_NONNULL();
149 void _va_mul_m4_series_5(float R[4][4],
150  const float M1[4][4],
151  const float M2[4][4],
152  const float M3[4][4],
153  const float M4[4][4]) ATTR_NONNULL();
154 void _va_mul_m4_series_6(float R[4][4],
155  const float M1[4][4],
156  const float M2[4][4],
157  const float M3[4][4],
158  const float M4[4][4],
159  const float M5[4][4]) ATTR_NONNULL();
160 void _va_mul_m4_series_7(float R[4][4],
161  const float M1[4][4],
162  const float M2[4][4],
163  const float M3[4][4],
164  const float M4[4][4],
165  const float M5[4][4],
166  const float M6[4][4]) ATTR_NONNULL();
167 void _va_mul_m4_series_8(float R[4][4],
168  const float M1[4][4],
169  const float M2[4][4],
170  const float M3[4][4],
171  const float M4[4][4],
172  const float M5[4][4],
173  const float M6[4][4],
174  const float M7[4][4]) ATTR_NONNULL();
175 void _va_mul_m4_series_9(float R[4][4],
176  const float M1[4][4],
177  const float M2[4][4],
178  const float M3[4][4],
179  const float M4[4][4],
180  const float M5[4][4],
181  const float M6[4][4],
182  const float M7[4][4],
183  const float M8[4][4]) ATTR_NONNULL();
184 
185 #define mul_m3_series(...) VA_NARGS_CALL_OVERLOAD(_va_mul_m3_series_, __VA_ARGS__)
186 #define mul_m4_series(...) VA_NARGS_CALL_OVERLOAD(_va_mul_m4_series_, __VA_ARGS__)
187 
188 void mul_m4_v3(const float M[4][4], float r[3]);
189 void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3]);
190 void mul_v3_m4v3_db(double r[3], const double mat[4][4], const double vec[3]);
191 void mul_v4_m4v3_db(double r[4], const double mat[4][4], const double vec[3]);
192 void mul_v2_m4v3(float r[2], const float M[4][4], const float v[3]);
193 void mul_v2_m2v2(float r[2], const float M[2][2], const float v[2]);
194 void mul_m2_v2(const float M[2][2], float v[2]);
196 void mul_mat3_m4_v3(const float M[4][4], float r[3]);
197 void mul_v3_mat3_m4v3(float r[3], const float M[4][4], const float v[3]);
198 void mul_v3_mat3_m4v3_db(double r[3], const double M[4][4], const double v[3]);
199 void mul_m4_v4(const float M[4][4], float r[4]);
200 void mul_v4_m4v4(float r[4], const float M[4][4], const float v[4]);
201 void mul_v4_m4v3(float r[4], const float M[4][4], const float v[3]); /* v has implicit w = 1.0f */
202 void mul_project_m4_v3(const float M[4][4], float vec[3]);
203 void mul_v3_project_m4_v3(float r[3], const float mat[4][4], const float vec[3]);
204 void mul_v2_project_m4_v3(float r[2], const float M[4][4], const float vec[3]);
205 
206 void mul_m3_v2(const float m[3][3], float r[2]);
207 void mul_v2_m3v2(float r[2], const float m[3][3], const float v[2]);
208 void mul_m3_v3(const float M[3][3], float r[3]);
209 void mul_v3_m3v3(float r[3], const float M[3][3], const float a[3]);
210 void mul_v2_m3v3(float r[2], const float M[3][3], const float a[3]);
211 void mul_transposed_m3_v3(const float M[3][3], float r[3]);
212 void mul_transposed_mat3_m4_v3(const float M[4][4], float r[3]);
213 void mul_m3_v3_double(const float M[3][3], double r[3]);
214 
223 void mul_m4_m4m4_aligned_scale(float R[4][4], const float A[4][4], const float B[4][4]);
227 void mul_m4_m4m4_split_channels(float R[4][4], const float A[4][4], const float B[4][4]);
228 
229 void mul_m3_fl(float R[3][3], float f);
230 void mul_m4_fl(float R[4][4], float f);
231 void mul_mat3_m4_fl(float R[4][4], float f);
232 
233 void negate_m3(float R[3][3]);
234 void negate_mat3_m4(float R[4][4]);
235 void negate_m4(float R[4][4]);
236 
237 bool invert_m3_ex(float m[3][3], float epsilon);
238 bool invert_m3_m3_ex(float m1[3][3], const float m2[3][3], float epsilon);
239 
240 bool invert_m3(float R[3][3]);
241 bool invert_m2_m2(float R[2][2], const float A[2][2]);
242 bool invert_m3_m3(float R[3][3], const float A[3][3]);
243 bool invert_m4(float R[4][4]);
244 bool invert_m4_m4(float R[4][4], const float A[4][4]);
255 bool invert_m4_m4_fallback(float R[4][4], const float A[4][4]);
256 
257 /* Double arithmetic (mixed float/double). */
258 
259 void mul_m4_v4d(const float M[4][4], double r[4]);
260 void mul_v4d_m4v4d(double r[4], const float M[4][4], const double v[4]);
261 
262 /* Double matrix functions (no mixing types). */
263 
264 void mul_v3_m3v3_db(double r[3], const double M[3][3], const double a[3]);
265 void mul_m3_v3_db(const double M[3][3], double r[3]);
266 
269 /* -------------------------------------------------------------------- */
273 void transpose_m3(float R[3][3]);
274 void transpose_m3_m3(float R[3][3], const float M[3][3]);
278 void transpose_m3_m4(float R[3][3], const float M[4][4]);
279 void transpose_m4(float R[4][4]);
280 void transpose_m4_m4(float R[4][4], const float M[4][4]);
281 
282 bool compare_m4m4(const float mat1[4][4], const float mat2[4][4], float limit);
283 
284 void normalize_m2_ex(float R[2][2], float r_scale[2]) ATTR_NONNULL();
285 void normalize_m2(float R[2][2]) ATTR_NONNULL();
286 void normalize_m2_m2_ex(float R[2][2], const float M[2][2], float r_scale[2]) ATTR_NONNULL();
287 void normalize_m2_m2(float R[2][2], const float M[2][2]) ATTR_NONNULL();
288 void normalize_m3_ex(float R[3][3], float r_scale[3]) ATTR_NONNULL();
289 void normalize_m3(float R[3][3]) ATTR_NONNULL();
290 void normalize_m3_m3_ex(float R[3][3], const float M[3][3], float r_scale[3]) ATTR_NONNULL();
291 void normalize_m3_m3(float R[3][3], const float M[3][3]) ATTR_NONNULL();
292 void normalize_m4_ex(float R[4][4], float r_scale[3]) ATTR_NONNULL();
293 void normalize_m4(float R[4][4]) ATTR_NONNULL();
294 void normalize_m4_m4_ex(float R[4][4], const float M[4][4], float r_scale[3]) ATTR_NONNULL();
295 void normalize_m4_m4(float R[4][4], const float M[4][4]) ATTR_NONNULL();
296 
302 void orthogonalize_m3(float R[3][3], int axis);
308 void orthogonalize_m4(float R[4][4], int axis);
309 
318 void orthogonalize_m3_stable(float R[3][3], int axis, bool normalize);
327 void orthogonalize_m4_stable(float R[4][4], int axis, bool normalize);
328 
329 bool orthogonalize_m3_zero_axes(float R[3][3], float unit_length);
330 bool orthogonalize_m4_zero_axes(float R[4][4], float unit_length);
331 
332 bool is_orthogonal_m3(const float mat[3][3]);
333 bool is_orthogonal_m4(const float mat[4][4]);
334 bool is_orthonormal_m3(const float mat[3][3]);
335 bool is_orthonormal_m4(const float mat[4][4]);
336 
337 bool is_uniform_scaled_m3(const float mat[3][3]);
338 bool is_uniform_scaled_m4(const float m[4][4]);
339 
340 /* NOTE: 'adjoint' here means the adjugate (adjunct, "classical adjoint") matrix!
341  * Nowadays 'adjoint' usually refers to the conjugate transpose,
342  * which for real-valued matrices is simply the transpose. */
343 
344 void adjoint_m2_m2(float R[2][2], const float M[2][2]);
345 void adjoint_m3_m3(float R[3][3], const float M[3][3]);
346 void adjoint_m4_m4(float R[4][4], const float M[4][4]);
347 
348 float determinant_m2(float a, float b, float c, float d);
349 float determinant_m3(
350  float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3);
351 float determinant_m3_array(const float m[3][3]);
352 float determinant_m4_mat3_array(const float m[4][4]);
353 double determinant_m3_array_db(const double m[3][3]);
354 float determinant_m4(const float m[4][4]);
355 
356 #define PSEUDOINVERSE_EPSILON 1e-8f
357 
365 void svd_m4(float U[4][4], float s[4], float V[4][4], float A[4][4]);
366 void pseudoinverse_m4_m4(float Ainv[4][4], const float A[4][4], float epsilon);
367 void pseudoinverse_m3_m3(float Ainv[3][3], const float A[3][3], float epsilon);
368 
369 bool has_zero_axis_m4(const float matrix[4][4]);
371 void zero_axis_bias_m4(float mat[4][4]);
372 
373 void invert_m4_m4_safe(float Ainv[4][4], const float A[4][4]);
374 
375 void invert_m3_m3_safe_ortho(float Ainv[3][3], const float A[3][3]);
382 void invert_m4_m4_safe_ortho(float Ainv[4][4], const float A[4][4]);
383 
386 /* -------------------------------------------------------------------- */
390 void scale_m3_fl(float R[3][3], float scale);
391 void scale_m4_fl(float R[4][4], float scale);
392 void scale_m4_v2(float R[4][4], const float scale[2]);
393 
399 float mat3_to_volume_scale(const float M[3][3]);
400 float mat4_to_volume_scale(const float M[4][4]);
401 
407 float mat3_to_scale(const float M[3][3]);
408 float mat4_to_scale(const float M[4][4]);
410 float mat4_to_xy_scale(const float M[4][4]);
411 
412 void size_to_mat3(float R[3][3], const float size[3]);
413 void size_to_mat4(float R[4][4], const float size[3]);
414 
415 void mat3_to_size(float size[3], const float M[3][3]);
416 void mat4_to_size(float size[3], const float M[4][4]);
417 
426 float mat3_to_size_max_axis(const float M[3][3]);
430 float mat4_to_size_max_axis(const float M[4][4]);
431 
436 void mat4_to_size_fix_shear(float size[3], const float M[4][4]);
437 
438 void translate_m4(float mat[4][4], float tx, float ty, float tz);
446 void rotate_m4(float mat[4][4], char axis, float angle);
448 void rescale_m4(float mat[4][4], const float scale[3]);
457 void transform_pivot_set_m4(float mat[4][4], const float pivot[3]);
458 
459 void mat4_to_rot(float rot[3][3], const float wmat[4][4]);
460 void mat3_to_rot_size(float rot[3][3], float size[3], const float mat3[3][3]);
461 void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], const float wmat[4][4]);
462 void mat4_to_loc_quat(float loc[3], float quat[4], const float wmat[4][4]);
463 void mat4_decompose(float loc[3], float quat[4], float size[3], const float wmat[4][4]);
464 
465 void mat3_polar_decompose(const float mat3[3][3], float r_U[3][3], float r_P[3][3]);
466 
471 void loc_rot_size_to_mat4(float R[4][4],
472  const float loc[3],
473  const float rot[3][3],
474  const float size[3]);
481 void loc_eul_size_to_mat4(float R[4][4],
482  const float loc[3],
483  const float eul[3],
484  const float size[3]);
490  float R[4][4], const float loc[3], const float eul[3], const float size[3], short order);
495 void loc_quat_size_to_mat4(float R[4][4],
496  const float loc[3],
497  const float quat[4],
498  const float size[3]);
500  float R[4][4], const float loc[3], const float axis[3], float angle, const float size[3]);
501 
502 void blend_m3_m3m3(float out[3][3], const float dst[3][3], const float src[3][3], float srcweight);
503 void blend_m4_m4m4(float out[4][4], const float dst[4][4], const float src[4][4], float srcweight);
504 
521 void interp_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3], float t);
531 void interp_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4], float t);
532 
533 bool is_negative_m3(const float mat[3][3]);
534 bool is_negative_m4(const float mat[4][4]);
535 
536 bool is_zero_m3(const float mat[3][3]);
537 bool is_zero_m4(const float mat[4][4]);
538 
539 bool equals_m3m3(const float mat1[3][3], const float mat2[3][3]);
540 bool equals_m4m4(const float mat1[4][4], const float mat2[4][4]);
541 
560 typedef struct SpaceTransform {
561  float local2target[4][4];
562  float target2local[4][4];
563 
565 
579  const float local[4][4],
580  const float target[4][4]);
594  const float local[4][4],
595  const float target[4][4]);
596 void BLI_space_transform_apply(const struct SpaceTransform *data, float co[3]);
597 void BLI_space_transform_invert(const struct SpaceTransform *data, float co[3]);
598 void BLI_space_transform_apply_normal(const struct SpaceTransform *data, float no[3]);
599 void BLI_space_transform_invert_normal(const struct SpaceTransform *data, float no[3]);
600 
601 #define BLI_SPACE_TRANSFORM_SETUP(data, local, target) \
602  BLI_space_transform_from_matrices((data), (local)->obmat, (target)->obmat)
603 
606 /* -------------------------------------------------------------------- */
610 void print_m3(const char *str, const float M[3][3]);
611 void print_m4(const char *str, const float M[4][4]);
612 
613 #define print_m3_id(M) print_m3(STRINGIFY(M), M)
614 #define print_m4_id(M) print_m4(STRINGIFY(M), M)
615 
618 #ifdef __cplusplus
619 }
620 #endif
#define ATTR_NONNULL(...)
void mul_v4_m4v3(float r[4], const float M[4][4], const float v[3])
Definition: math_matrix.c:888
void _va_mul_m4_series_6(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4], const float M4[4][4], const float M5[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:648
void scale_m4_v2(float R[4][4], const float scale[2])
Definition: math_matrix.c:2307
void orthogonalize_m3_stable(float R[3][3], int axis, bool normalize)
Definition: math_matrix.c:1660
bool is_negative_m3(const float mat[3][3])
Definition: math_matrix.c:2502
void BLI_space_transform_from_matrices(struct SpaceTransform *data, const float local[4][4], const float target[4][4])
Definition: math_matrix.c:3212
void mul_v4_m4v4(float r[4], const float M[4][4], const float v[4])
Definition: math_matrix.c:850
void sub_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
Definition: math_matrix.c:1076
void unit_m2(float m[2][2])
Definition: math_matrix.c:33
void _va_mul_m3_series_9(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3], const float M4[3][3], const float M5[3][3], const float M6[3][3], const float M7[3][3], const float M8[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:601
void mul_v4_m4v3_db(double r[4], const double mat[4][4], const double vec[3])
Definition: math_matrix.c:758
void negate_m3(float R[3][3])
Definition: math_matrix.c:989
void mul_project_m4_v3(const float M[4][4], float vec[3])
Definition: math_matrix.c:820
void interp_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4], float t)
Definition: math_matrix.c:2481
bool is_zero_m3(const float mat[3][3])
Definition: math_matrix.c:2516
void orthogonalize_m4(float R[4][4], int axis)
Definition: math_matrix.c:1523
void swap_m3m3(float m1[3][3], float m2[3][3])
Definition: math_matrix.c:219
void mul_v3_project_m4_v3(float r[3], const float mat[4][4], const float vec[3])
Definition: math_matrix.c:831
void mul_m3_v3(const float M[3][3], float r[3])
Definition: math_matrix.c:926
void madd_m4_m4m4fl(float R[4][4], const float A[4][4], const float B[4][4], float f)
Definition: math_matrix.c:1065
void zero_m4(float m[4][4])
Definition: math_matrix.c:28
void BLI_space_transform_apply_normal(const struct SpaceTransform *data, float no[3])
bool invert_m2_m2(float R[2][2], const float A[2][2])
Definition: math_matrix.c:1119
void mul_m4_fl(float R[4][4], float f)
Definition: math_matrix.c:967
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:259
void mul_mat3_m4_fl(float R[4][4], float f)
Definition: math_matrix.c:978
void _va_mul_m3_series_4(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:541
void mul_m3_m3_pre(float R[3][3], const float A[3][3])
Definition: math_matrix.c:401
void BLI_space_transform_apply(const struct SpaceTransform *data, float co[3])
void size_to_mat3(float R[3][3], const float size[3])
Definition: math_matrix.c:2098
bool is_uniform_scaled_m3(const float mat[3][3])
Definition: math_matrix.c:1843
bool invert_m4(float R[4][4])
Definition: math_matrix.c:1206
void sub_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:1087
bool invert_m4_m4_fallback(float R[4][4], const float A[4][4])
Definition: math_matrix.c:1215
void normalize_m3_m3(float R[3][3], const float M[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:1927
void mul_m4_v4(const float M[4][4], float r[4])
Definition: math_matrix.c:862
void mul_v3_m3v3_db(double r[3], const double M[3][3], const double a[3])
Definition: math_matrix.c:907
void normalize_m2_m2(float R[2][2], const float M[2][2]) ATTR_NONNULL()
Definition: math_matrix.c:1897
bool invert_m3_m3_ex(float m1[3][3], const float m2[3][3], float epsilon)
Definition: math_matrix.c:1144
void copy_m3_m3(float m1[3][3], const float m2[3][3])
Definition: math_matrix.c:71
void mat4_decompose(float loc[3], float quat[4], float size[3], const float wmat[4][4])
Definition: math_matrix.c:2253
void mul_v2_m2v2(float r[2], const float M[2][2], const float v[2])
Definition: math_matrix.c:777
void adjoint_m3_m3(float R[3][3], const float M[3][3])
Definition: math_matrix.c:1984
void unit_m3(float m[3][3])
Definition: math_matrix.c:40
void mul_m3_v2(const float m[3][3], float r[2])
Definition: math_matrix.c:724
void mat3_to_rot_size(float rot[3][3], float size[3], const float mat3[3][3])
Definition: math_matrix.c:2202
void blend_m4_m4m4(float out[4][4], const float dst[4][4], const float src[4][4], float srcweight)
Definition: math_matrix.c:2409
void add_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:1043
void scale_m3_fl(float R[3][3], float scale)
Definition: math_matrix.c:2289
void copy_m3_m4(float m1[3][3], const float m2[4][4])
Definition: math_matrix.c:87
float determinant_m4_mat3_array(const float m[4][4])
Definition: math_matrix.c:1105
void mul_m4_m4m3(float R[4][4], const float A[4][4], const float B[3][3])
Definition: math_matrix.c:434
void pseudoinverse_m4_m4(float Ainv[4][4], const float A[4][4], float epsilon)
Definition: math_matrix.c:3085
void mul_v3_m4v3_db(double r[3], const double mat[4][4], const double vec[3])
Definition: math_matrix.c:749
void transpose_m4_m4(float R[4][4], const float M[4][4])
Definition: math_matrix.c:1403
void mul_m4_m4_pre(float R[4][4], const float A[4][4])
Definition: math_matrix.c:372
void mul_m4_m4m4_db_uniq(double R[4][4], const double A[4][4], const double B[4][4])
Definition: math_matrix.c:317
float mat4_to_xy_scale(const float M[4][4])
Definition: math_matrix.c:2194
void mul_m3_fl(float R[3][3], float f)
Definition: math_matrix.c:956
void mul_v2_m3v3(float r[2], const float M[3][3], const float a[3])
Definition: math_matrix.c:917
void normalize_m2_m2_ex(float R[2][2], const float M[2][2], float r_scale[2]) ATTR_NONNULL()
Definition: math_matrix.c:1890
void zero_m2(float m[2][2])
Definition: math_matrix.c:18
void invert_m4_m4_safe_ortho(float Ainv[4][4], const float A[4][4])
Definition: math_matrix.c:3188
void orthogonalize_m3(float R[3][3], int axis)
Definition: math_matrix.c:1439
void copy_m3_m3d(float m1[3][3], const double m2[3][3])
Definition: math_matrix.c:203
void mul_m3_m3_post(float R[3][3], const float B[3][3])
Definition: math_matrix.c:409
void unit_m4(float m[4][4])
Definition: rct.c:1090
void add_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
Definition: math_matrix.c:1032
void copy_m4_m3(float m1[4][4], const float m2[3][3])
Definition: math_matrix.c:102
void _va_mul_m3_series_6(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3], const float M4[3][3], const float M5[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:559
void mul_mat3_m4_v3(const float M[4][4], float r[3])
Definition: math_matrix.c:790
void translate_m4(float mat[4][4], float tx, float ty, float tz)
Definition: math_matrix.c:2318
void loc_rot_size_to_mat4(float R[4][4], const float loc[3], const float rot[3][3], const float size[3])
Definition: math_matrix.c:2537
void mat4_to_rot(float rot[3][3], const float wmat[4][4])
Definition: math_matrix.c:2214
void mat4_to_size_fix_shear(float size[3], const float M[4][4])
Definition: math_matrix.c:2155
void svd_m4(float U[4][4], float s[4], float V[4][4], float A[4][4])
Definition: math_matrix.c:2649
bool is_uniform_scaled_m4(const float m[4][4])
Definition: math_matrix.c:1867
void mul_v4d_m4v4d(double r[4], const float M[4][4], const double v[4])
Definition: math_matrix.c:867
bool invert_m4_m4(float R[4][4], const float A[4][4])
Definition: math_matrix.c:1287
void invert_m3_m3_safe_ortho(float Ainv[3][3], const float A[3][3])
Definition: math_matrix.c:3199
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], const float wmat[4][4])
Definition: math_matrix.c:2224
bool orthogonalize_m3_zero_axes(float R[3][3], float unit_length)
Definition: math_matrix.c:1768
void _va_mul_m4_series_7(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4], const float M4[4][4], const float M5[4][4], const float M6[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:660
void zero_m3(float m[3][3])
Definition: math_matrix.c:23
bool has_zero_axis_m4(const float matrix[4][4])
Definition: math_matrix.c:3119
void normalize_m3(float R[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:1912
void transform_pivot_set_m4(float mat[4][4], const float pivot[3])
Definition: math_matrix.c:2369
void mul_m3_v3_double(const float M[3][3], double r[3])
Definition: math_matrix.c:1022
float determinant_m2(float a, float b, float c, float d)
Definition: math_matrix.c:2046
void _va_mul_m4_series_5(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4], const float M4[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:638
bool is_orthogonal_m3(const float mat[3][3])
Definition: math_matrix.c:1779
bool equals_m3m3(const float mat1[3][3], const float mat2[3][3])
Definition: math_matrix.c:2525
void rescale_m4(float mat[4][4], const float scale[3])
Definition: math_matrix.c:2362
bool is_orthonormal_m3(const float mat[3][3])
Definition: math_matrix.c:1809
void mul_m4_m4m4_uniq(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:272
void loc_eulO_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3], short order)
Definition: math_matrix.c:2571
void size_to_mat4(float R[4][4], const float size[3])
Definition: math_matrix.c:2111
struct SpaceTransform SpaceTransform
void unit_m4_db(double m[4][4])
Definition: math_matrix.c:57
void copy_m4d_m4(double m1[4][4], const float m2[4][4])
Definition: math_matrix.c:180
void BLI_space_transform_global_from_matrices(struct SpaceTransform *data, const float local[4][4], const float target[4][4])
Definition: math_matrix.c:3222
void mul_m4_v3(const float M[4][4], float r[3])
Definition: math_matrix.c:729
void mul_m4_v4d(const float M[4][4], double r[4])
Definition: math_matrix.c:883
float mat3_to_scale(const float M[3][3])
Definition: math_matrix.c:2176
void orthogonalize_m4_stable(float R[4][4], int axis, bool normalize)
Definition: math_matrix.c:1678
void scale_m4_fl(float R[4][4], float scale)
Definition: math_matrix.c:2297
void adjoint_m4_m4(float R[4][4], const float M[4][4])
Definition: math_matrix.c:2000
bool equals_m4m4(const float mat1[4][4], const float mat2[4][4])
Definition: math_matrix.c:2531
void normalize_m4_m4(float R[4][4], const float M[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:1965
void mul_m4_m4m4_split_channels(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:1314
void normalize_m3_m3_ex(float R[3][3], const float M[3][3], float r_scale[3]) ATTR_NONNULL()
Definition: math_matrix.c:1920
void mul_v2_m4v3(float r[2], const float M[4][4], const float v[3])
Definition: math_matrix.c:769
float determinant_m4(const float m[4][4])
Definition: math_matrix.c:2063
void swap_m4m4(float m1[4][4], float m2[4][4])
Definition: math_matrix.c:233
void _va_mul_m4_series_9(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4], const float M4[4][4], const float M5[4][4], const float M6[4][4], const float M7[4][4], const float M8[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:690
void loc_axisangle_size_to_mat4(float R[4][4], const float loc[3], const float axis[3], float angle, const float size[3])
Definition: math_matrix.c:2620
void transpose_m3_m4(float R[3][3], const float M[4][4])
Definition: math_matrix.c:1362
void _va_mul_m3_series_8(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3], const float M4[3][3], const float M5[3][3], const float M6[3][3], const float M7[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:585
double determinant_m3_array_db(const double m[3][3])
Definition: math_matrix.c:1112
void copy_m2_m2(float m1[2][2], const float m2[2][2])
Definition: math_matrix.c:66
void mat3_polar_decompose(const float mat3[3][3], float r_U[3][3], float r_P[3][3])
Definition: math_matrix.c:2270
void mul_v2_project_m4_v3(float r[2], const float M[4][4], const float vec[3])
Definition: math_matrix.c:841
float mat3_to_volume_scale(const float M[3][3])
Definition: math_matrix.c:2166
void normalize_m4_ex(float R[4][4], float r_scale[3]) ATTR_NONNULL()
Definition: math_matrix.c:1935
void _va_mul_m3_series_5(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3], const float M4[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:549
bool invert_m3_m3(float R[3][3], const float A[3][3])
Definition: math_matrix.c:1180
void copy_m4_m4(float m1[4][4], const float m2[4][4])
Definition: math_matrix.c:77
void _va_mul_m4_series_3(float R[4][4], const float M1[4][4], const float M2[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:626
void mat4_to_loc_quat(float loc[3], float quat[4], const float wmat[4][4])
Definition: math_matrix.c:2235
void interp_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3], float t)
Definition: math_matrix.c:2436
void print_m4(const char *str, const float M[4][4])
Definition: math_matrix.c:2639
void mul_transposed_mat3_m4_v3(const float M[4][4], float r[3])
Definition: math_matrix.c:946
void invert_m4_m4_safe(float Ainv[4][4], const float A[4][4])
Definition: math_matrix.c:3153
void mul_m3_m3m4(float R[3][3], const float A[3][3], const float B[4][4])
Definition: math_matrix.c:454
void mul_m4db_m4db_m4fl_uniq(double R[4][4], const double A[4][4], const float B[4][4])
Definition: math_matrix.c:344
float mat3_to_size_max_axis(const float M[3][3])
Definition: math_matrix.c:2145
void mul_m3_v3_db(const double M[3][3], double r[3])
Definition: math_matrix.c:931
void madd_m3_m3m3fl(float R[3][3], const float A[3][3], const float B[3][3], float f)
Definition: math_matrix.c:1054
bool orthogonalize_m4_zero_axes(float R[4][4], float unit_length)
Definition: math_matrix.c:1772
void mul_m2_v2(const float M[2][2], float v[2])
Definition: math_matrix.c:785
float mat4_to_size_max_axis(const float M[4][4])
Definition: math_matrix.c:2150
float determinant_m3_array(const float m[3][3])
Definition: math_matrix.c:1098
void _va_mul_m4_series_8(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4], const float M4[4][4], const float M5[4][4], const float M6[4][4], const float M7[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:674
void copy_m4_m2(float m1[4][4], const float m2[2][2])
Definition: math_matrix.c:142
void shuffle_m4(float R[4][4], const int index[4])
Definition: math_matrix.c:247
bool is_negative_m4(const float mat[4][4])
Definition: math_matrix.c:2509
void negate_mat3_m4(float R[4][4])
Definition: math_matrix.c:1000
void copy_m3_m2(float m1[3][3], const float m2[2][2])
Definition: math_matrix.c:127
void mul_v2_m3v2(float r[2], const float m[3][3], const float v[2])
Definition: math_matrix.c:711
void mul_v3_mat3_m4v3_db(double r[3], const double M[4][4], const double v[3])
Definition: math_matrix.c:810
void mul_m4_m4m4_aligned_scale(float R[4][4], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:1298
void mul_m3_m3m3_uniq(float R[3][3], const float A[3][3], const float B[3][3])
Definition: math_matrix.c:417
float mat4_to_scale(const float M[4][4])
Definition: math_matrix.c:2185
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
Definition: math_matrix.c:739
void zero_axis_bias_m4(float mat[4][4])
Definition: math_matrix.c:3125
void rotate_m4(float mat[4][4], char axis, float angle)
Definition: math_matrix.c:2325
bool invert_m3(float R[3][3])
Definition: math_matrix.c:1171
void loc_quat_size_to_mat4(float R[4][4], const float loc[3], const float quat[4], const float size[3])
Definition: math_matrix.c:2596
void mul_v3_m3v3(float r[3], const float M[3][3], const float a[3])
Definition: math_matrix.c:897
void loc_eul_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3])
Definition: math_matrix.c:2547
void BLI_space_transform_invert_normal(const struct SpaceTransform *data, float no[3])
void mat4_to_size(float size[3], const float M[4][4])
Definition: math_matrix.c:2138
void transpose_m3(float R[3][3])
Definition: math_matrix.c:1332
void BLI_space_transform_invert(const struct SpaceTransform *data, float co[3])
bool is_orthogonal_m4(const float mat[4][4])
Definition: math_matrix.c:1794
void normalize_m3_ex(float R[3][3], float r_scale[3]) ATTR_NONNULL()
Definition: math_matrix.c:1905
float determinant_m3(float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3)
Definition: math_matrix.c:2052
void _va_mul_m3_series_7(float R[3][3], const float M1[3][3], const float M2[3][3], const float M3[3][3], const float M4[3][3], const float M5[3][3], const float M6[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:571
void print_m3(const char *str, const float M[3][3])
Definition: math_matrix.c:2630
void transpose_m3_m3(float R[3][3], const float M[3][3])
Definition: math_matrix.c:1347
void blend_m3_m3m3(float out[3][3], const float dst[3][3], const float src[3][3], float srcweight)
Definition: math_matrix.c:2383
void negate_m4(float R[4][4])
Definition: math_matrix.c:1011
void mul_transposed_m3_v3(const float M[3][3], float r[3])
Definition: math_matrix.c:936
bool compare_m4m4(const float mat1[4][4], const float mat2[4][4], float limit)
Definition: math_matrix.c:1425
void copy_m3d_m3(double m1[3][3], const float m2[3][3])
Definition: math_matrix.c:165
void normalize_m2(float R[2][2]) ATTR_NONNULL()
Definition: math_matrix.c:1882
float mat4_to_volume_scale(const float M[4][4])
Definition: math_matrix.c:2171
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
Definition: math_matrix.c:388
bool invert_m3_ex(float m[3][3], float epsilon)
Definition: math_matrix.c:1135
bool is_zero_m4(const float mat[4][4])
Definition: math_matrix.c:2520
void mat3_to_size(float size[3], const float M[3][3])
Definition: math_matrix.c:2131
void mul_m4_m3m4(float R[4][4], const float A[3][3], const float B[4][4])
Definition: math_matrix.c:500
void _va_mul_m4_series_4(float R[4][4], const float M1[4][4], const float M2[4][4], const float M3[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:630
void transpose_m4(float R[4][4])
Definition: math_matrix.c:1377
void mul_m4_m4_post(float R[4][4], const float B[4][4])
Definition: math_matrix.c:380
void pseudoinverse_m3_m3(float Ainv[3][3], const float A[3][3], float epsilon)
Definition: math_matrix.c:3107
void normalize_m2_ex(float R[2][2], float r_scale[2]) ATTR_NONNULL()
Definition: math_matrix.c:1874
bool is_orthonormal_m4(const float mat[4][4])
Definition: math_matrix.c:1826
void mul_m3_m4m4(float R[3][3], const float A[4][4], const float B[4][4])
Definition: math_matrix.c:520
void copy_m4_m4_db(double m1[4][4], const double m2[4][4])
Definition: math_matrix.c:82
void mul_v3_mat3_m4v3(float r[3], const float M[4][4], const float v[3])
Definition: math_matrix.c:800
void normalize_m4_m4_ex(float R[4][4], const float M[4][4], float r_scale[3]) ATTR_NONNULL()
Definition: math_matrix.c:1956
void mul_m3_m4m3(float R[3][3], const float A[4][4], const float B[3][3])
Definition: math_matrix.c:477
void normalize_m4(float R[4][4]) ATTR_NONNULL()
Definition: math_matrix.c:1945
void _va_mul_m3_series_3(float R[3][3], const float M1[3][3], const float M2[3][3]) ATTR_NONNULL()
Definition: math_matrix.c:537
void adjoint_m2_m2(float R[2][2], const float M[2][2])
Definition: math_matrix.c:1975
_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
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define A
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
unsigned int U
Definition: btGjkEpa3.h:78
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
Definition: btVector3.h:356
SyclQueue void void * src
#define rot(x, k)
#define str(s)
#define M
#define B
#define R
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
vec_base< T, Size > normalize(const vec_base< T, Size > &v)
static double epsilon
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
float local2target[4][4]
float target2local[4][4]
CCL_NAMESPACE_BEGIN struct Window V