Blender  V3.3
math_vector_inline.c
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 
8 #ifndef __MATH_VECTOR_INLINE_C__
9 #define __MATH_VECTOR_INLINE_C__
10 
11 #include "BLI_math.h"
12 
13 /********************************** Init *************************************/
14 
15 MINLINE void zero_v2(float r[2])
16 {
17  r[0] = 0.0f;
18  r[1] = 0.0f;
19 }
20 
21 MINLINE void zero_v3(float r[3])
22 {
23  r[0] = 0.0f;
24  r[1] = 0.0f;
25  r[2] = 0.0f;
26 }
27 
28 MINLINE void zero_v4(float r[4])
29 {
30  r[0] = 0.0f;
31  r[1] = 0.0f;
32  r[2] = 0.0f;
33  r[3] = 0.0f;
34 }
35 
36 MINLINE void copy_v2_v2(float r[2], const float a[2])
37 {
38  r[0] = a[0];
39  r[1] = a[1];
40 }
41 
42 MINLINE void copy_v3_v3(float r[3], const float a[3])
43 {
44  r[0] = a[0];
45  r[1] = a[1];
46  r[2] = a[2];
47 }
48 
49 MINLINE void copy_v3fl_v3s(float r[3], const short a[3])
50 {
51  r[0] = (float)a[0];
52  r[1] = (float)a[1];
53  r[2] = (float)a[2];
54 }
55 
56 MINLINE void copy_v4_v4(float r[4], const float a[4])
57 {
58  r[0] = a[0];
59  r[1] = a[1];
60  r[2] = a[2];
61  r[3] = a[3];
62 }
63 
64 MINLINE void copy_v2_fl(float r[2], float f)
65 {
66  r[0] = f;
67  r[1] = f;
68 }
69 
70 MINLINE void copy_v3_fl(float r[3], float f)
71 {
72  r[0] = f;
73  r[1] = f;
74  r[2] = f;
75 }
76 
77 MINLINE void copy_v4_fl(float r[4], float f)
78 {
79  r[0] = f;
80  r[1] = f;
81  r[2] = f;
82  r[3] = f;
83 }
84 
85 /* unsigned char */
86 
87 MINLINE void copy_v2_v2_uchar(unsigned char r[2], const unsigned char a[2])
88 {
89  r[0] = a[0];
90  r[1] = a[1];
91 }
92 
93 MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
94 {
95  r[0] = a[0];
96  r[1] = a[1];
97  r[2] = a[2];
98 }
99 
100 MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
101 {
102  r[0] = a[0];
103  r[1] = a[1];
104  r[2] = a[2];
105  r[3] = a[3];
106 }
107 
108 MINLINE void copy_v2_uchar(unsigned char r[2], const unsigned char a)
109 {
110  r[0] = a;
111  r[1] = a;
112 }
113 
114 MINLINE void copy_v3_uchar(unsigned char r[3], const unsigned char a)
115 {
116  r[0] = a;
117  r[1] = a;
118  r[2] = a;
119 }
120 
121 MINLINE void copy_v4_uchar(unsigned char r[4], const unsigned char a)
122 {
123  r[0] = a;
124  r[1] = a;
125  r[2] = a;
126  r[3] = a;
127 }
128 
129 /* char */
130 
131 MINLINE void copy_v2_v2_char(char r[2], const char a[2])
132 {
133  r[0] = a[0];
134  r[1] = a[1];
135 }
136 
137 MINLINE void copy_v3_v3_char(char r[3], const char a[3])
138 {
139  r[0] = a[0];
140  r[1] = a[1];
141  r[2] = a[2];
142 }
143 
144 MINLINE void copy_v4_v4_char(char r[4], const char a[4])
145 {
146  r[0] = a[0];
147  r[1] = a[1];
148  r[2] = a[2];
149  r[3] = a[3];
150 }
151 
152 /* short */
153 
154 MINLINE void copy_v2_v2_short(short r[2], const short a[2])
155 {
156  r[0] = a[0];
157  r[1] = a[1];
158 }
159 
160 MINLINE void copy_v3_v3_short(short r[3], const short a[3])
161 {
162  r[0] = a[0];
163  r[1] = a[1];
164  r[2] = a[2];
165 }
166 
167 MINLINE void copy_v4_v4_short(short r[4], const short a[4])
168 {
169  r[0] = a[0];
170  r[1] = a[1];
171  r[2] = a[2];
172  r[3] = a[3];
173 }
174 
175 /* int */
176 MINLINE void zero_v2_int(int r[2])
177 {
178  r[0] = 0;
179  r[1] = 0;
180 }
181 
182 MINLINE void zero_v3_int(int r[3])
183 {
184  r[0] = 0;
185  r[1] = 0;
186  r[2] = 0;
187 }
188 
189 MINLINE void copy_v2_v2_int(int r[2], const int a[2])
190 {
191  r[0] = a[0];
192  r[1] = a[1];
193 }
194 
195 MINLINE void copy_v3_v3_int(int r[3], const int a[3])
196 {
197  r[0] = a[0];
198  r[1] = a[1];
199  r[2] = a[2];
200 }
201 
202 MINLINE void copy_v4_v4_int(int r[4], const int a[4])
203 {
204  r[0] = a[0];
205  r[1] = a[1];
206  r[2] = a[2];
207  r[3] = a[3];
208 }
209 
210 /* double */
211 
212 MINLINE void zero_v3_db(double r[3])
213 {
214  r[0] = 0.0;
215  r[1] = 0.0;
216  r[2] = 0.0;
217 }
218 
219 MINLINE void copy_v2_v2_db(double r[2], const double a[2])
220 {
221  r[0] = a[0];
222  r[1] = a[1];
223 }
224 
225 MINLINE void copy_v3_v3_db(double r[3], const double a[3])
226 {
227  r[0] = a[0];
228  r[1] = a[1];
229  r[2] = a[2];
230 }
231 
232 MINLINE void copy_v4_v4_db(double r[4], const double a[4])
233 {
234  r[0] = a[0];
235  r[1] = a[1];
236  r[2] = a[2];
237  r[3] = a[3];
238 }
239 
240 MINLINE void round_v2i_v2fl(int r[2], const float a[2])
241 {
242  r[0] = (int)roundf(a[0]);
243  r[1] = (int)roundf(a[1]);
244 }
245 
246 MINLINE void copy_v2fl_v2i(float r[2], const int a[2])
247 {
248  r[0] = (float)a[0];
249  r[1] = (float)a[1];
250 }
251 
252 /* double -> float */
253 
254 MINLINE void copy_v2fl_v2db(float r[2], const double a[2])
255 {
256  r[0] = (float)a[0];
257  r[1] = (float)a[1];
258 }
259 
260 MINLINE void copy_v3fl_v3db(float r[3], const double a[3])
261 {
262  r[0] = (float)a[0];
263  r[1] = (float)a[1];
264  r[2] = (float)a[2];
265 }
266 
267 MINLINE void copy_v4fl_v4db(float r[4], const double a[4])
268 {
269  r[0] = (float)a[0];
270  r[1] = (float)a[1];
271  r[2] = (float)a[2];
272  r[3] = (float)a[3];
273 }
274 
275 /* float -> double */
276 
277 MINLINE void copy_v2db_v2fl(double r[2], const float a[2])
278 {
279  r[0] = (double)a[0];
280  r[1] = (double)a[1];
281 }
282 
283 MINLINE void copy_v3db_v3fl(double r[3], const float a[3])
284 {
285  r[0] = (double)a[0];
286  r[1] = (double)a[1];
287  r[2] = (double)a[2];
288 }
289 
290 MINLINE void copy_v4db_v4fl(double r[4], const float a[4])
291 {
292  r[0] = (double)a[0];
293  r[1] = (double)a[1];
294  r[2] = (double)a[2];
295  r[3] = (double)a[3];
296 }
297 
298 MINLINE void swap_v2_v2(float a[2], float b[2])
299 {
300  SWAP(float, a[0], b[0]);
301  SWAP(float, a[1], b[1]);
302 }
303 
304 MINLINE void swap_v3_v3(float a[3], float b[3])
305 {
306  SWAP(float, a[0], b[0]);
307  SWAP(float, a[1], b[1]);
308  SWAP(float, a[2], b[2]);
309 }
310 
311 MINLINE void swap_v4_v4(float a[4], float b[4])
312 {
313  SWAP(float, a[0], b[0]);
314  SWAP(float, a[1], b[1]);
315  SWAP(float, a[2], b[2]);
316  SWAP(float, a[3], b[3]);
317 }
318 
319 MINLINE void swap_v2_v2_db(double a[2], double b[2])
320 {
321  SWAP(double, a[0], b[0]);
322  SWAP(double, a[1], b[1]);
323 }
324 
325 MINLINE void swap_v3_v3_db(double a[3], double b[3])
326 {
327  SWAP(double, a[0], b[0]);
328  SWAP(double, a[1], b[1]);
329  SWAP(double, a[2], b[2]);
330 }
331 
332 MINLINE void swap_v4_v4_db(double a[4], double b[4])
333 {
334  SWAP(double, a[0], b[0]);
335  SWAP(double, a[1], b[1]);
336  SWAP(double, a[2], b[2]);
337  SWAP(double, a[3], b[3]);
338 }
339 
340 /* float args -> vec */
341 
342 MINLINE void copy_v2_fl2(float v[2], float x, float y)
343 {
344  v[0] = x;
345  v[1] = y;
346 }
347 
348 MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
349 {
350  v[0] = x;
351  v[1] = y;
352  v[2] = z;
353 }
354 
355 MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
356 {
357  v[0] = x;
358  v[1] = y;
359  v[2] = z;
360  v[3] = w;
361 }
362 
363 /********************************* Arithmetic ********************************/
364 
365 MINLINE void add_v2_fl(float r[2], float f)
366 {
367  r[0] += f;
368  r[1] += f;
369 }
370 
371 MINLINE void add_v3_fl(float r[3], float f)
372 {
373  r[0] += f;
374  r[1] += f;
375  r[2] += f;
376 }
377 
378 MINLINE void add_v4_fl(float r[4], float f)
379 {
380  r[0] += f;
381  r[1] += f;
382  r[2] += f;
383  r[3] += f;
384 }
385 
386 MINLINE void add_v2_v2(float r[2], const float a[2])
387 {
388  r[0] += a[0];
389  r[1] += a[1];
390 }
391 
392 MINLINE void add_v2_v2_db(double r[2], const double a[2])
393 {
394  r[0] += a[0];
395  r[1] += a[1];
396 }
397 
398 MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
399 {
400  r[0] = a[0] + b[0];
401  r[1] = a[1] + b[1];
402 }
403 
404 MINLINE void add_v2_v2_int(int r[2], const int a[2])
405 {
406  r[0] = r[0] + a[0];
407  r[1] = r[1] + a[1];
408 }
409 
410 MINLINE void add_v2_v2v2_int(int r[2], const int a[2], const int b[2])
411 {
412  r[0] = a[0] + b[0];
413  r[1] = a[1] + b[1];
414 }
415 
416 MINLINE void add_v3_v3(float r[3], const float a[3])
417 {
418  r[0] += a[0];
419  r[1] += a[1];
420  r[2] += a[2];
421 }
422 
423 MINLINE void add_v3_v3_db(double r[3], const double a[3])
424 {
425  r[0] += a[0];
426  r[1] += a[1];
427  r[2] += a[2];
428 }
429 
430 MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
431 {
432  r[0] = a[0] + b[0];
433  r[1] = a[1] + b[1];
434  r[2] = a[2] + b[2];
435 }
436 
437 MINLINE void add_v3fl_v3fl_v3i(float r[3], const float a[3], const int b[3])
438 {
439  r[0] = a[0] + (float)b[0];
440  r[1] = a[1] + (float)b[1];
441  r[2] = a[2] + (float)b[2];
442 }
443 
444 MINLINE void add_v4_v4(float r[4], const float a[4])
445 {
446  r[0] += a[0];
447  r[1] += a[1];
448  r[2] += a[2];
449  r[3] += a[3];
450 }
451 
452 MINLINE void add_v4_v4v4(float r[4], const float a[4], const float b[4])
453 {
454  r[0] = a[0] + b[0];
455  r[1] = a[1] + b[1];
456  r[2] = a[2] + b[2];
457  r[3] = a[3] + b[3];
458 }
459 
460 MINLINE void sub_v2_v2(float r[2], const float a[2])
461 {
462  r[0] -= a[0];
463  r[1] -= a[1];
464 }
465 
466 MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
467 {
468  r[0] = a[0] - b[0];
469  r[1] = a[1] - b[1];
470 }
471 
472 MINLINE void sub_v2_v2v2_db(double r[2], const double a[2], const double b[2])
473 {
474  r[0] = a[0] - b[0];
475  r[1] = a[1] - b[1];
476 }
477 
478 MINLINE void sub_v2_v2v2_int(int r[2], const int a[2], const int b[2])
479 {
480  r[0] = a[0] - b[0];
481  r[1] = a[1] - b[1];
482 }
483 
484 MINLINE void sub_v3_v3(float r[3], const float a[3])
485 {
486  r[0] -= a[0];
487  r[1] -= a[1];
488  r[2] -= a[2];
489 }
490 
491 MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
492 {
493  r[0] = a[0] - b[0];
494  r[1] = a[1] - b[1];
495  r[2] = a[2] - b[2];
496 }
497 
498 MINLINE void sub_v3_v3v3_int(int r[3], const int a[3], const int b[3])
499 {
500  r[0] = a[0] - b[0];
501  r[1] = a[1] - b[1];
502  r[2] = a[2] - b[2];
503 }
504 
505 MINLINE void sub_v3_v3v3_db(double r[3], const double a[3], const double b[3])
506 {
507  r[0] = a[0] - b[0];
508  r[1] = a[1] - b[1];
509  r[2] = a[2] - b[2];
510 }
511 
512 MINLINE void sub_v2db_v2fl_v2fl(double r[2], const float a[2], const float b[2])
513 {
514  r[0] = (double)a[0] - (double)b[0];
515  r[1] = (double)a[1] - (double)b[1];
516 }
517 
518 MINLINE void sub_v3db_v3fl_v3fl(double r[3], const float a[3], const float b[3])
519 {
520  r[0] = (double)a[0] - (double)b[0];
521  r[1] = (double)a[1] - (double)b[1];
522  r[2] = (double)a[2] - (double)b[2];
523 }
524 
525 MINLINE void sub_v4_v4(float r[4], const float a[4])
526 {
527  r[0] -= a[0];
528  r[1] -= a[1];
529  r[2] -= a[2];
530  r[3] -= a[3];
531 }
532 
533 MINLINE void sub_v4_v4v4(float r[4], const float a[4], const float b[4])
534 {
535  r[0] = a[0] - b[0];
536  r[1] = a[1] - b[1];
537  r[2] = a[2] - b[2];
538  r[3] = a[3] - b[3];
539 }
540 
541 MINLINE void mul_v2_fl(float r[2], float f)
542 {
543  r[0] *= f;
544  r[1] *= f;
545 }
546 
547 MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
548 {
549  r[0] = a[0] * f;
550  r[1] = a[1] * f;
551 }
552 
553 MINLINE void mul_v3_fl(float r[3], float f)
554 {
555  r[0] *= f;
556  r[1] *= f;
557  r[2] *= f;
558 }
559 
560 MINLINE void mul_v3db_db(double r[3], double f)
561 {
562  r[0] *= f;
563  r[1] *= f;
564  r[2] *= f;
565 }
566 
567 MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
568 {
569  r[0] = a[0] * f;
570  r[1] = a[1] * f;
571  r[2] = a[2] * f;
572 }
573 
574 MINLINE void mul_v3_v3db_db(double r[3], const double a[3], double f)
575 {
576  r[0] = a[0] * f;
577  r[1] = a[1] * f;
578  r[2] = a[2] * f;
579 }
580 
581 MINLINE void mul_v2_v2(float r[2], const float a[2])
582 {
583  r[0] *= a[0];
584  r[1] *= a[1];
585 }
586 
587 MINLINE void mul_v3_v3(float r[3], const float a[3])
588 {
589  r[0] *= a[0];
590  r[1] *= a[1];
591  r[2] *= a[2];
592 }
593 
594 MINLINE void mul_v4_fl(float r[4], float f)
595 {
596  r[0] *= f;
597  r[1] *= f;
598  r[2] *= f;
599  r[3] *= f;
600 }
601 
602 MINLINE void mul_v4_v4(float r[4], const float a[4])
603 {
604  r[0] *= a[0];
605  r[1] *= a[1];
606  r[2] *= a[2];
607  r[3] *= a[3];
608 }
609 
610 MINLINE void mul_v4_v4fl(float r[4], const float a[4], float f)
611 {
612  r[0] = a[0] * f;
613  r[1] = a[1] * f;
614  r[2] = a[2] * f;
615  r[3] = a[3] * f;
616 }
617 
627 MINLINE void mul_v2_v2_cw(float r[2], const float mat[2], const float vec[2])
628 {
629  BLI_assert(r != vec);
630 
631  r[0] = mat[0] * vec[0] + (+mat[1]) * vec[1];
632  r[1] = mat[1] * vec[0] + (-mat[0]) * vec[1];
633 }
634 
635 MINLINE void mul_v2_v2_ccw(float r[2], const float mat[2], const float vec[2])
636 {
637  float r0 = mat[0] * vec[0] + (-mat[1]) * vec[1];
638  float r1 = mat[1] * vec[0] + (+mat[0]) * vec[1];
639  r[0] = r0;
640  r[1] = r1;
641 }
642 
643 MINLINE float mul_project_m4_v3_zfac(const float mat[4][4], const float co[3])
644 {
645  return (mat[0][3] * co[0]) + (mat[1][3] * co[1]) + (mat[2][3] * co[2]) + mat[3][3];
646 }
647 
648 MINLINE float dot_m3_v3_row_x(const float M[3][3], const float a[3])
649 {
650  return M[0][0] * a[0] + M[1][0] * a[1] + M[2][0] * a[2];
651 }
652 MINLINE float dot_m3_v3_row_y(const float M[3][3], const float a[3])
653 {
654  return M[0][1] * a[0] + M[1][1] * a[1] + M[2][1] * a[2];
655 }
656 MINLINE float dot_m3_v3_row_z(const float M[3][3], const float a[3])
657 {
658  return M[0][2] * a[0] + M[1][2] * a[1] + M[2][2] * a[2];
659 }
660 
661 MINLINE float dot_m4_v3_row_x(const float M[4][4], const float a[3])
662 {
663  return M[0][0] * a[0] + M[1][0] * a[1] + M[2][0] * a[2];
664 }
665 MINLINE float dot_m4_v3_row_y(const float M[4][4], const float a[3])
666 {
667  return M[0][1] * a[0] + M[1][1] * a[1] + M[2][1] * a[2];
668 }
669 MINLINE float dot_m4_v3_row_z(const float M[4][4], const float a[3])
670 {
671  return M[0][2] * a[0] + M[1][2] * a[1] + M[2][2] * a[2];
672 }
673 
674 MINLINE void madd_v2_v2fl(float r[2], const float a[2], float f)
675 {
676  r[0] += a[0] * f;
677  r[1] += a[1] * f;
678 }
679 
680 MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
681 {
682  r[0] += a[0] * f;
683  r[1] += a[1] * f;
684  r[2] += a[2] * f;
685 }
686 
687 MINLINE void madd_v3_v3v3(float r[3], const float a[3], const float b[3])
688 {
689  r[0] += a[0] * b[0];
690  r[1] += a[1] * b[1];
691  r[2] += a[2] * b[2];
692 }
693 
694 MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], float f)
695 {
696  r[0] = a[0] + b[0] * f;
697  r[1] = a[1] + b[1] * f;
698 }
699 
700 MINLINE void madd_v3_v3v3fl(float r[3], const float a[3], const float b[3], float f)
701 {
702  r[0] = a[0] + b[0] * f;
703  r[1] = a[1] + b[1] * f;
704  r[2] = a[2] + b[2] * f;
705 }
706 
707 MINLINE void madd_v3_v3v3db_db(double r[3], const double a[3], const double b[3], double f)
708 {
709  r[0] = a[0] + b[0] * f;
710  r[1] = a[1] + b[1] * f;
711  r[2] = a[2] + b[2] * f;
712 }
713 
714 MINLINE void madd_v3_v3v3v3(float r[3], const float a[3], const float b[3], const float c[3])
715 {
716  r[0] = a[0] + b[0] * c[0];
717  r[1] = a[1] + b[1] * c[1];
718  r[2] = a[2] + b[2] * c[2];
719 }
720 
722  const float a[3],
723  const float b[3],
724  const int c[3])
725 {
726  r[0] = a[0] + b[0] * (float)c[0];
727  r[1] = a[1] + b[1] * (float)c[1];
728  r[2] = a[2] + b[2] * (float)c[2];
729 }
730 
731 MINLINE void madd_v4_v4fl(float r[4], const float a[4], float f)
732 {
733  r[0] += a[0] * f;
734  r[1] += a[1] * f;
735  r[2] += a[2] * f;
736  r[3] += a[3] * f;
737 }
738 
739 MINLINE void madd_v4_v4v4(float r[4], const float a[4], const float b[4])
740 {
741  r[0] += a[0] * b[0];
742  r[1] += a[1] * b[1];
743  r[2] += a[2] * b[2];
744  r[3] += a[3] * b[3];
745 }
746 
747 MINLINE void mul_v3_v3v3(float r[3], const float v1[3], const float v2[3])
748 {
749  r[0] = v1[0] * v2[0];
750  r[1] = v1[1] * v2[1];
751  r[2] = v1[2] * v2[2];
752 }
753 
754 MINLINE void mul_v2_v2v2(float r[2], const float a[2], const float b[2])
755 {
756  r[0] = a[0] * b[0];
757  r[1] = a[1] * b[1];
758 }
759 
760 MINLINE void negate_v2(float r[2])
761 {
762  r[0] = -r[0];
763  r[1] = -r[1];
764 }
765 
766 MINLINE void negate_v2_v2(float r[2], const float a[2])
767 {
768  r[0] = -a[0];
769  r[1] = -a[1];
770 }
771 
772 MINLINE void negate_v3(float r[3])
773 {
774  r[0] = -r[0];
775  r[1] = -r[1];
776  r[2] = -r[2];
777 }
778 
779 MINLINE void negate_v3_v3(float r[3], const float a[3])
780 {
781  r[0] = -a[0];
782  r[1] = -a[1];
783  r[2] = -a[2];
784 }
785 
786 MINLINE void negate_v4(float r[4])
787 {
788  r[0] = -r[0];
789  r[1] = -r[1];
790  r[2] = -r[2];
791  r[3] = -r[3];
792 }
793 
794 MINLINE void negate_v4_v4(float r[4], const float a[4])
795 {
796  r[0] = -a[0];
797  r[1] = -a[1];
798  r[2] = -a[2];
799  r[3] = -a[3];
800 }
801 
802 MINLINE void negate_v3_short(short r[3])
803 {
804  r[0] = (short)-r[0];
805  r[1] = (short)-r[1];
806  r[2] = (short)-r[2];
807 }
808 
809 MINLINE void negate_v3_db(double r[3])
810 {
811  r[0] = -r[0];
812  r[1] = -r[1];
813  r[2] = -r[2];
814 }
815 
816 MINLINE void invert_v2(float r[2])
817 {
818  BLI_assert(!ELEM(0.0f, r[0], r[1]));
819  r[0] = 1.0f / r[0];
820  r[1] = 1.0f / r[1];
821 }
822 
823 MINLINE void invert_v3(float r[3])
824 {
825  BLI_assert(!ELEM(0.0f, r[0], r[1], r[2]));
826  r[0] = 1.0f / r[0];
827  r[1] = 1.0f / r[1];
828  r[2] = 1.0f / r[2];
829 }
830 
831 MINLINE void invert_v3_safe(float r[3])
832 {
833  if (r[0] != 0.0f) {
834  r[0] = 1.0f / r[0];
835  }
836  if (r[1] != 0.0f) {
837  r[1] = 1.0f / r[1];
838  }
839  if (r[2] != 0.0f) {
840  r[2] = 1.0f / r[2];
841  }
842 }
843 
844 MINLINE void abs_v2(float r[2])
845 {
846  r[0] = fabsf(r[0]);
847  r[1] = fabsf(r[1]);
848 }
849 
850 MINLINE void abs_v2_v2(float r[2], const float a[2])
851 {
852  r[0] = fabsf(a[0]);
853  r[1] = fabsf(a[1]);
854 }
855 
856 MINLINE void abs_v3(float r[3])
857 {
858  r[0] = fabsf(r[0]);
859  r[1] = fabsf(r[1]);
860  r[2] = fabsf(r[2]);
861 }
862 
863 MINLINE void abs_v3_v3(float r[3], const float a[3])
864 {
865  r[0] = fabsf(a[0]);
866  r[1] = fabsf(a[1]);
867  r[2] = fabsf(a[2]);
868 }
869 
870 MINLINE void abs_v4(float r[4])
871 {
872  r[0] = fabsf(r[0]);
873  r[1] = fabsf(r[1]);
874  r[2] = fabsf(r[2]);
875  r[3] = fabsf(r[3]);
876 }
877 
878 MINLINE void abs_v4_v4(float r[4], const float a[4])
879 {
880  r[0] = fabsf(a[0]);
881  r[1] = fabsf(a[1]);
882  r[2] = fabsf(a[2]);
883  r[3] = fabsf(a[3]);
884 }
885 
886 MINLINE float dot_v2v2(const float a[2], const float b[2])
887 {
888  return a[0] * b[0] + a[1] * b[1];
889 }
890 
891 MINLINE double dot_v2v2_db(const double a[2], const double b[2])
892 {
893  return a[0] * b[0] + a[1] * b[1];
894 }
895 
896 MINLINE float dot_v3v3(const float a[3], const float b[3])
897 {
898  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
899 }
900 
901 MINLINE float dot_v3v3v3(const float p[3], const float a[3], const float b[3])
902 {
903  float vec1[3], vec2[3];
904 
905  sub_v3_v3v3(vec1, a, p);
906  sub_v3_v3v3(vec2, b, p);
907  if (is_zero_v3(vec1) || is_zero_v3(vec2)) {
908  return 0.0f;
909  }
910  return dot_v3v3(vec1, vec2);
911 }
912 
913 MINLINE float dot_v4v4(const float a[4], const float b[4])
914 {
915  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
916 }
917 
918 MINLINE double dot_v3db_v3fl(const double a[3], const float b[3])
919 {
920  return a[0] * (double)b[0] + a[1] * (double)b[1] + a[2] * (double)b[2];
921 }
922 
923 MINLINE double dot_v3v3_db(const double a[3], const double b[3])
924 {
925  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
926 }
927 
928 MINLINE float cross_v2v2(const float a[2], const float b[2])
929 {
930  return a[0] * b[1] - a[1] * b[0];
931 }
932 
933 MINLINE double cross_v2v2_db(const double a[2], const double b[2])
934 {
935  return a[0] * b[1] - a[1] * b[0];
936 }
937 
938 MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
939 {
940  BLI_assert(r != a && r != b);
941  r[0] = a[1] * b[2] - a[2] * b[1];
942  r[1] = a[2] * b[0] - a[0] * b[2];
943  r[2] = a[0] * b[1] - a[1] * b[0];
944 }
945 
946 MINLINE void cross_v3_v3v3_hi_prec(float r[3], const float a[3], const float b[3])
947 {
948  BLI_assert(r != a && r != b);
949  r[0] = (float)((double)a[1] * (double)b[2] - (double)a[2] * (double)b[1]);
950  r[1] = (float)((double)a[2] * (double)b[0] - (double)a[0] * (double)b[2]);
951  r[2] = (float)((double)a[0] * (double)b[1] - (double)a[1] * (double)b[0]);
952 }
953 
954 MINLINE void cross_v3_v3v3_db(double r[3], const double a[3], const double b[3])
955 {
956  BLI_assert(r != a && r != b);
957  r[0] = a[1] * b[2] - a[2] * b[1];
958  r[1] = a[2] * b[0] - a[0] * b[2];
959  r[2] = a[0] * b[1] - a[1] * b[0];
960 }
961 
962 MINLINE void add_newell_cross_v3_v3v3(float n[3], const float v_prev[3], const float v_curr[3])
963 {
964  n[0] += (v_prev[1] - v_curr[1]) * (v_prev[2] + v_curr[2]);
965  n[1] += (v_prev[2] - v_curr[2]) * (v_prev[0] + v_curr[0]);
966  n[2] += (v_prev[0] - v_curr[0]) * (v_prev[1] + v_curr[1]);
967 }
968 
969 MINLINE void star_m3_v3(float rmat[3][3], const float a[3])
970 {
971  rmat[0][0] = rmat[1][1] = rmat[2][2] = 0.0;
972  rmat[0][1] = -a[2];
973  rmat[0][2] = a[1];
974  rmat[1][0] = a[2];
975  rmat[1][2] = -a[0];
976  rmat[2][0] = -a[1];
977  rmat[2][1] = a[0];
978 }
979 
980 /*********************************** Length **********************************/
981 
982 MINLINE float len_squared_v2(const float v[2])
983 {
984  return v[0] * v[0] + v[1] * v[1];
985 }
986 
987 MINLINE float len_squared_v3(const float v[3])
988 {
989  return v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
990 }
991 
992 MINLINE double len_squared_v3_db(const double v[3])
993 {
994  return v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
995 }
996 
997 MINLINE float len_manhattan_v2(const float v[2])
998 {
999  return fabsf(v[0]) + fabsf(v[1]);
1000 }
1001 
1002 MINLINE int len_manhattan_v2_int(const int v[2])
1003 {
1004  return abs(v[0]) + abs(v[1]);
1005 }
1006 
1007 MINLINE float len_manhattan_v3(const float v[3])
1008 {
1009  return fabsf(v[0]) + fabsf(v[1]) + fabsf(v[2]);
1010 }
1011 
1012 MINLINE float len_v2(const float v[2])
1013 {
1014  return sqrtf(v[0] * v[0] + v[1] * v[1]);
1015 }
1016 
1017 MINLINE double len_v2_db(const double v[2])
1018 {
1019  return sqrt(v[0] * v[0] + v[1] * v[1]);
1020 }
1021 
1022 MINLINE float len_v2v2(const float v1[2], const float v2[2])
1023 {
1024  float x, y;
1025 
1026  x = v1[0] - v2[0];
1027  y = v1[1] - v2[1];
1028  return sqrtf(x * x + y * y);
1029 }
1030 
1031 MINLINE double len_v2v2_db(const double v1[2], const double v2[2])
1032 {
1033  double x, y;
1034 
1035  x = v1[0] - v2[0];
1036  y = v1[1] - v2[1];
1037  return sqrt(x * x + y * y);
1038 }
1039 
1040 MINLINE float len_v2v2_int(const int v1[2], const int v2[2])
1041 {
1042  float x, y;
1043 
1044  x = (float)(v1[0] - v2[0]);
1045  y = (float)(v1[1] - v2[1]);
1046  return sqrtf(x * x + y * y);
1047 }
1048 
1049 MINLINE float len_v3(const float a[3])
1050 {
1051  return sqrtf(dot_v3v3(a, a));
1052 }
1053 
1054 MINLINE double len_v3_db(const double a[3])
1055 {
1056  return sqrt(dot_v3v3_db(a, a));
1057 }
1058 
1059 MINLINE float len_squared_v2v2(const float a[2], const float b[2])
1060 {
1061  float d[2];
1062 
1063  sub_v2_v2v2(d, b, a);
1064  return dot_v2v2(d, d);
1065 }
1066 
1067 MINLINE double len_squared_v2v2_db(const double a[2], const double b[2])
1068 {
1069  double d[2];
1070 
1071  sub_v2_v2v2_db(d, b, a);
1072  return dot_v2v2_db(d, d);
1073 }
1074 
1075 MINLINE float len_squared_v3v3(const float a[3], const float b[3])
1076 {
1077  float d[3];
1078 
1079  sub_v3_v3v3(d, b, a);
1080  return dot_v3v3(d, d);
1081 }
1082 
1083 MINLINE float len_squared_v4v4(const float a[4], const float b[4])
1084 {
1085  float d[4];
1086 
1087  sub_v4_v4v4(d, b, a);
1088  return dot_v4v4(d, d);
1089 }
1090 
1091 MINLINE float len_manhattan_v2v2(const float a[2], const float b[2])
1092 {
1093  float d[2];
1094 
1095  sub_v2_v2v2(d, b, a);
1096  return len_manhattan_v2(d);
1097 }
1098 
1099 MINLINE int len_manhattan_v2v2_int(const int a[2], const int b[2])
1100 {
1101  int d[2];
1102 
1103  sub_v2_v2v2_int(d, b, a);
1104  return len_manhattan_v2_int(d);
1105 }
1106 
1107 MINLINE float len_manhattan_v3v3(const float a[3], const float b[3])
1108 {
1109  float d[3];
1110 
1111  sub_v3_v3v3(d, b, a);
1112  return len_manhattan_v3(d);
1113 }
1114 
1115 MINLINE float len_v3v3(const float a[3], const float b[3])
1116 {
1117  float d[3];
1118 
1119  sub_v3_v3v3(d, b, a);
1120  return len_v3(d);
1121 }
1122 
1123 MINLINE float len_v4(const float a[4])
1124 {
1125  return sqrtf(dot_v4v4(a, a));
1126 }
1127 
1128 MINLINE float len_v4v4(const float a[4], const float b[4])
1129 {
1130  float d[4];
1131 
1132  sub_v4_v4v4(d, b, a);
1133  return len_v4(d);
1134 }
1135 
1136 MINLINE float normalize_v2_v2_length(float r[2], const float a[2], const float unit_length)
1137 {
1138  float d = dot_v2v2(a, a);
1139 
1140  if (d > 1.0e-35f) {
1141  d = sqrtf(d);
1142  mul_v2_v2fl(r, a, unit_length / d);
1143  }
1144  else {
1145  /* Either the vector is small or one of it's values contained `nan`. */
1146  zero_v2(r);
1147  d = 0.0f;
1148  }
1149 
1150  return d;
1151 }
1152 MINLINE float normalize_v2_v2(float r[2], const float a[2])
1153 {
1154  return normalize_v2_v2_length(r, a, 1.0f);
1155 }
1156 
1157 MINLINE float normalize_v2(float n[2])
1158 {
1159  return normalize_v2_v2(n, n);
1160 }
1161 
1162 MINLINE float normalize_v2_length(float n[2], const float unit_length)
1163 {
1164  return normalize_v2_v2_length(n, n, unit_length);
1165 }
1166 
1167 MINLINE float normalize_v3_v3_length(float r[3], const float a[3], const float unit_length)
1168 {
1169  float d = dot_v3v3(a, a);
1170 
1171  /* A larger value causes normalize errors in a scaled down models with camera extreme close. */
1172  if (d > 1.0e-35f) {
1173  d = sqrtf(d);
1174  mul_v3_v3fl(r, a, unit_length / d);
1175  }
1176  else {
1177  /* Either the vector is small or one of it's values contained `nan`. */
1178  zero_v3(r);
1179  d = 0.0f;
1180  }
1181 
1182  return d;
1183 }
1184 MINLINE float normalize_v3_v3(float r[3], const float a[3])
1185 {
1186  return normalize_v3_v3_length(r, a, 1.0f);
1187 }
1188 
1189 MINLINE double normalize_v3_v3_length_db(double r[3], const double a[3], double const unit_length)
1190 {
1191  double d = dot_v3v3_db(a, a);
1192 
1193  /* a larger value causes normalize errors in a
1194  * scaled down models with camera extreme close */
1195  if (d > 1.0e-70) {
1196  d = sqrt(d);
1197  mul_v3_v3db_db(r, a, unit_length / d);
1198  }
1199  else {
1200  zero_v3_db(r);
1201  d = 0.0;
1202  }
1203 
1204  return d;
1205 }
1206 MINLINE double normalize_v3_v3_db(double r[3], const double a[3])
1207 {
1208  return normalize_v3_v3_length_db(r, a, 1.0);
1209 }
1210 
1211 MINLINE double normalize_v3_length_db(double n[3], const double unit_length)
1212 {
1213  double d = n[0] * n[0] + n[1] * n[1] + n[2] * n[2];
1214 
1215  /* a larger value causes normalize errors in a
1216  * scaled down models with camera extreme close */
1217  if (d > 1.0e-35) {
1218  double mul;
1219 
1220  d = sqrt(d);
1221  mul = unit_length / d;
1222 
1223  n[0] *= mul;
1224  n[1] *= mul;
1225  n[2] *= mul;
1226  }
1227  else {
1228  n[0] = n[1] = n[2] = 0;
1229  d = 0.0;
1230  }
1231 
1232  return d;
1233 }
1234 MINLINE double normalize_v3_db(double n[3])
1235 {
1236  return normalize_v3_length_db(n, 1.0);
1237 }
1238 
1239 MINLINE float normalize_v3_length(float n[3], const float unit_length)
1240 {
1241  return normalize_v3_v3_length(n, n, unit_length);
1242 }
1243 
1244 MINLINE float normalize_v3(float n[3])
1245 {
1246  return normalize_v3_v3(n, n);
1247 }
1248 
1249 MINLINE void normal_float_to_short_v2(short out[2], const float in[2])
1250 {
1251  out[0] = (short)(in[0] * 32767.0f);
1252  out[1] = (short)(in[1] * 32767.0f);
1253 }
1254 
1255 MINLINE void normal_short_to_float_v3(float out[3], const short in[3])
1256 {
1257  out[0] = in[0] * (1.0f / 32767.0f);
1258  out[1] = in[1] * (1.0f / 32767.0f);
1259  out[2] = in[2] * (1.0f / 32767.0f);
1260 }
1261 
1262 MINLINE void normal_float_to_short_v3(short out[3], const float in[3])
1263 {
1264  out[0] = (short)(in[0] * 32767.0f);
1265  out[1] = (short)(in[1] * 32767.0f);
1266  out[2] = (short)(in[2] * 32767.0f);
1267 }
1268 
1269 MINLINE void normal_float_to_short_v4(short out[4], const float in[4])
1270 {
1271  out[0] = (short)(in[0] * 32767.0f);
1272  out[1] = (short)(in[1] * 32767.0f);
1273  out[2] = (short)(in[2] * 32767.0f);
1274  out[3] = (short)(in[3] * 32767.0f);
1275 }
1276 
1277 /********************************* Comparison ********************************/
1278 
1279 MINLINE bool is_zero_v2(const float v[2])
1280 {
1281  return (v[0] == 0.0f && v[1] == 0.0f);
1282 }
1283 
1284 MINLINE bool is_zero_v3(const float v[3])
1285 {
1286  return (v[0] == 0.0f && v[1] == 0.0f && v[2] == 0.0f);
1287 }
1288 
1289 MINLINE bool is_zero_v4(const float v[4])
1290 {
1291  return (v[0] == 0.0f && v[1] == 0.0f && v[2] == 0.0f && v[3] == 0.0f);
1292 }
1293 
1294 MINLINE bool is_zero_v2_db(const double v[2])
1295 {
1296  return (v[0] == 0.0 && v[1] == 0.0);
1297 }
1298 
1299 MINLINE bool is_zero_v3_db(const double v[3])
1300 {
1301  return (v[0] == 0.0 && v[1] == 0.0 && v[2] == 0.0);
1302 }
1303 
1304 MINLINE bool is_zero_v4_db(const double v[4])
1305 {
1306  return (v[0] == 0.0 && v[1] == 0.0 && v[2] == 0.0 && v[3] == 0.0);
1307 }
1308 
1309 MINLINE bool is_one_v3(const float v[3])
1310 {
1311  return (v[0] == 1.0f && v[1] == 1.0f && v[2] == 1.0f);
1312 }
1313 
1314 /* -------------------------------------------------------------------- */
1320 MINLINE bool equals_v2v2(const float v1[2], const float v2[2])
1321 {
1322  return ((v1[0] == v2[0]) && (v1[1] == v2[1]));
1323 }
1324 
1325 MINLINE bool equals_v3v3(const float v1[3], const float v2[3])
1326 {
1327  return ((v1[0] == v2[0]) && (v1[1] == v2[1]) && (v1[2] == v2[2]));
1328 }
1329 
1330 MINLINE bool equals_v4v4(const float v1[4], const float v2[4])
1331 {
1332  return ((v1[0] == v2[0]) && (v1[1] == v2[1]) && (v1[2] == v2[2]) && (v1[3] == v2[3]));
1333 }
1334 
1335 MINLINE bool equals_v2v2_int(const int v1[2], const int v2[2])
1336 {
1337  return ((v1[0] == v2[0]) && (v1[1] == v2[1]));
1338 }
1339 
1340 MINLINE bool equals_v3v3_int(const int v1[3], const int v2[3])
1341 {
1342  return ((v1[0] == v2[0]) && (v1[1] == v2[1]) && (v1[2] == v2[2]));
1343 }
1344 
1345 MINLINE bool equals_v4v4_int(const int v1[4], const int v2[4])
1346 {
1347  return ((v1[0] == v2[0]) && (v1[1] == v2[1]) && (v1[2] == v2[2]) && (v1[3] == v2[3]));
1348 }
1349 
1350 MINLINE bool compare_v2v2(const float v1[2], const float v2[2], const float limit)
1351 {
1352  return (compare_ff(v1[0], v2[0], limit) && compare_ff(v1[1], v2[1], limit));
1353 }
1354 
1355 MINLINE bool compare_v3v3(const float v1[3], const float v2[3], const float limit)
1356 {
1357  return (compare_ff(v1[0], v2[0], limit) && compare_ff(v1[1], v2[1], limit) &&
1358  compare_ff(v1[2], v2[2], limit));
1359 }
1360 
1361 MINLINE bool compare_v4v4(const float v1[4], const float v2[4], const float limit)
1362 {
1363  return (compare_ff(v1[0], v2[0], limit) && compare_ff(v1[1], v2[1], limit) &&
1364  compare_ff(v1[2], v2[2], limit) && compare_ff(v1[3], v2[3], limit));
1365 }
1366 
1367 MINLINE bool compare_v2v2_relative(const float v1[2],
1368  const float v2[2],
1369  const float limit,
1370  const int max_ulps)
1371 {
1372  return (compare_ff_relative(v1[0], v2[0], limit, max_ulps) &&
1373  compare_ff_relative(v1[1], v2[1], limit, max_ulps));
1374 }
1375 
1376 MINLINE bool compare_v3v3_relative(const float v1[3],
1377  const float v2[3],
1378  const float limit,
1379  const int max_ulps)
1380 {
1381  return (compare_ff_relative(v1[0], v2[0], limit, max_ulps) &&
1382  compare_ff_relative(v1[1], v2[1], limit, max_ulps) &&
1383  compare_ff_relative(v1[2], v2[2], limit, max_ulps));
1384 }
1385 
1386 MINLINE bool compare_v4v4_relative(const float v1[4],
1387  const float v2[4],
1388  const float limit,
1389  const int max_ulps)
1390 {
1391  return (compare_ff_relative(v1[0], v2[0], limit, max_ulps) &&
1392  compare_ff_relative(v1[1], v2[1], limit, max_ulps) &&
1393  compare_ff_relative(v1[2], v2[2], limit, max_ulps) &&
1394  compare_ff_relative(v1[3], v2[3], limit, max_ulps));
1395 }
1396 
1397 MINLINE bool compare_len_v3v3(const float v1[3], const float v2[3], const float limit)
1398 {
1399  float d[3];
1400  sub_v3_v3v3(d, v1, v2);
1401  return (dot_v3v3(d, d) <= (limit * limit));
1402 }
1403 
1404 MINLINE bool compare_size_v3v3(const float v1[3], const float v2[3], const float limit)
1405 {
1406  for (int i = 0; i < 3; i++) {
1407  if (v2[i] == 0.0f) {
1408  /* Catch division by zero. */
1409  if (v1[i] != v2[i]) {
1410  return false;
1411  }
1412  }
1413  else {
1414  if (fabsf(v1[i] / v2[i] - 1.0f) > limit) {
1415  return false;
1416  }
1417  }
1418  }
1419  return true;
1420 }
1421 
1422 /* -------------------------------------------------------------------- */
1426 MINLINE void clamp_v2(float vec[2], const float min, const float max)
1427 {
1428  CLAMP(vec[0], min, max);
1429  CLAMP(vec[1], min, max);
1430 }
1431 
1432 MINLINE void clamp_v3(float vec[3], const float min, const float max)
1433 {
1434  CLAMP(vec[0], min, max);
1435  CLAMP(vec[1], min, max);
1436  CLAMP(vec[2], min, max);
1437 }
1438 
1439 MINLINE void clamp_v4(float vec[4], const float min, const float max)
1440 {
1441  CLAMP(vec[0], min, max);
1442  CLAMP(vec[1], min, max);
1443  CLAMP(vec[2], min, max);
1444  CLAMP(vec[3], min, max);
1445 }
1446 
1447 MINLINE void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2])
1448 {
1449  CLAMP(vec[0], min[0], max[0]);
1450  CLAMP(vec[1], min[1], max[1]);
1451 }
1452 
1453 MINLINE void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3])
1454 {
1455  CLAMP(vec[0], min[0], max[0]);
1456  CLAMP(vec[1], min[1], max[1]);
1457  CLAMP(vec[2], min[2], max[2]);
1458 }
1459 
1460 MINLINE void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4])
1461 {
1462  CLAMP(vec[0], min[0], max[0]);
1463  CLAMP(vec[1], min[1], max[1]);
1464  CLAMP(vec[2], min[2], max[2]);
1465  CLAMP(vec[3], min[3], max[3]);
1466 }
1467 
1470 MINLINE float line_point_side_v2(const float l1[2], const float l2[2], const float pt[2])
1471 {
1472  return (((l1[0] - pt[0]) * (l2[1] - pt[1])) - ((l2[0] - pt[0]) * (l1[1] - pt[1])));
1473 }
1474 
1477 #endif /* __MATH_VECTOR_INLINE_C__ */
typedef float(TangentPoint)[2]
#define BLI_assert(a)
Definition: BLI_assert.h:46
sqrt(x)+1/max(0
MINLINE int compare_ff_relative(float a, float b, float max_diff, int max_ulps)
MINLINE int compare_ff(float a, float b, float max_diff)
#define MINLINE
#define SWAP(type, a, b)
#define ELEM(...)
typedef double(DMatrix)[4][4]
_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 z
_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 y
_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
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
static void mul(btAlignedObjectArray< T > &items, const Q &value)
MINLINE void sub_v3db_v3fl_v3fl(double r[3], const float a[3], const float b[3])
MINLINE float dot_v2v2(const float a[2], const float b[2])
MINLINE double normalize_v3_db(double n[3])
MINLINE double normalize_v3_v3_length_db(double r[3], const double a[3], double const unit_length)
MINLINE void mul_v4_fl(float r[4], float f)
MINLINE int len_manhattan_v2v2_int(const int a[2], const int b[2])
MINLINE double normalize_v3_v3_db(double r[3], const double a[3])
MINLINE void madd_v3_v3v3v3(float r[3], const float a[3], const float b[3], const float c[3])
MINLINE void sub_v2_v2v2_int(int r[2], const int a[2], const int b[2])
MINLINE void round_v2i_v2fl(int r[2], const float a[2])
MINLINE void add_v4_v4(float r[4], const float a[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v2fl_v2i(float r[2], const int a[2])
MINLINE void swap_v4_v4(float a[4], float b[4])
MINLINE void copy_v3fl_v3s(float r[3], const short a[3])
MINLINE void abs_v4(float r[4])
MINLINE float len_squared_v3v3(const float a[3], const float b[3])
MINLINE void copy_v3_uchar(unsigned char r[3], const unsigned char a)
MINLINE void add_v3fl_v3fl_v3i(float r[3], const float a[3], const int b[3])
MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_fl(float r[3], float f)
MINLINE void mul_v2_v2_cw(float r[2], const float mat[2], const float vec[2])
MINLINE void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4])
MINLINE void copy_v2_fl2(float v[2], float x, float y)
MINLINE void mul_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void madd_v2_v2fl(float r[2], const float a[2], float f)
MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
MINLINE void add_v4_v4v4(float r[4], const float a[4], const float b[4])
MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], float f)
MINLINE float dot_v4v4(const float a[4], const float b[4])
MINLINE void swap_v2_v2(float a[2], float b[2])
MINLINE void madd_v3fl_v3fl_v3fl_v3i(float r[3], const float a[3], const float b[3], const int c[3])
MINLINE void copy_v2db_v2fl(double r[2], const float a[2])
MINLINE bool equals_v3v3_int(const int v1[3], const int v2[3])
MINLINE void copy_v2_v2_db(double r[2], const double a[2])
MINLINE float dot_m3_v3_row_x(const float M[3][3], const float a[3])
MINLINE void mul_v4_v4(float r[4], const float a[4])
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE float len_v4v4(const float a[4], const float b[4])
MINLINE void copy_v4_v4_char(char r[4], const char a[4])
MINLINE void madd_v3_v3v3db_db(double r[3], const double a[3], const double b[3], double f)
MINLINE bool equals_v4v4_int(const int v1[4], const int v2[4])
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void copy_v4_uchar(unsigned char r[4], const unsigned char a)
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE float len_v2v2_int(const int v1[2], const int v2[2])
MINLINE double normalize_v3_length_db(double n[3], const double unit_length)
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float v[3])
MINLINE float dot_m4_v3_row_z(const float M[4][4], const float a[3])
MINLINE void mul_v2_v2_ccw(float r[2], const float mat[2], const float vec[2])
MINLINE double len_squared_v3_db(const double v[3])
MINLINE void cross_v3_v3v3_hi_prec(float r[3], const float a[3], const float b[3])
MINLINE void add_v2_v2v2_int(int r[2], const int a[2], const int b[2])
MINLINE void mul_v2_v2(float r[2], const float a[2])
MINLINE float normalize_v2_v2_length(float r[2], const float a[2], const float unit_length)
MINLINE double len_squared_v2v2_db(const double a[2], const double b[2])
MINLINE double len_v3_db(const double a[3])
MINLINE void abs_v2(float r[2])
MINLINE void add_newell_cross_v3_v3v3(float n[3], const float v_prev[3], const float v_curr[3])
MINLINE float len_manhattan_v3(const float v[3])
MINLINE void swap_v3_v3_db(double a[3], double b[3])
MINLINE bool is_one_v3(const float v[3])
MINLINE float dot_m3_v3_row_z(const float M[3][3], const float a[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void clamp_v3(float vec[3], const float min, const float max)
MINLINE bool compare_len_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void copy_v3_v3_char(char r[3], const char a[3])
MINLINE void mul_v3db_db(double r[3], double f)
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE float len_v3(const float a[3])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE bool is_zero_v4_db(const double v[4])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE void madd_v4_v4v4(float r[4], const float a[4], const float b[4])
MINLINE void add_v3_v3_db(double r[3], const double a[3])
MINLINE void normal_float_to_short_v3(short out[3], const float in[3])
MINLINE void mul_v3_v3db_db(double r[3], const double a[3], double f)
MINLINE float len_manhattan_v2(const float v[2])
MINLINE void copy_v4db_v4fl(double r[4], const float a[4])
MINLINE void negate_v2(float r[2])
MINLINE void mul_v4_v4fl(float r[4], const float a[4], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE float normalize_v2_length(float n[2], const float unit_length)
MINLINE void zero_v2_int(int r[2])
MINLINE float len_v2(const float v[2])
MINLINE float cross_v2v2(const float a[2], const float b[2])
MINLINE void negate_v3_v3(float r[3], const float a[3])
MINLINE float dot_v3v3(const float a[3], const float b[3])
MINLINE float len_manhattan_v3v3(const float a[3], const float b[3])
MINLINE void normal_short_to_float_v3(float out[3], const short in[3])
MINLINE void copy_v3_v3_int(int r[3], const int a[3])
MINLINE void copy_v2_v2_char(char r[2], const char a[2])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE void invert_v3_safe(float r[3])
MINLINE bool compare_v3v3_relative(const float v1[3], const float v2[3], const float limit, const int max_ulps)
MINLINE double dot_v2v2_db(const double a[2], const double b[2])
MINLINE void negate_v2_v2(float r[2], const float a[2])
MINLINE void normal_float_to_short_v4(short out[4], const float in[4])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE bool equals_v2v2_int(const int v1[2], const int v2[2])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE float len_v4(const float a[4])
MINLINE void clamp_v2(float vec[2], const float min, const float max)
MINLINE void copy_v4_v4_short(short r[4], const short a[4])
MINLINE void add_v2_fl(float r[2], float f)
MINLINE void zero_v3_int(int r[3])
MINLINE float len_squared_v2(const float v[2])
MINLINE bool compare_size_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void abs_v3(float r[3])
MINLINE void madd_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3_short(short r[3], const short a[3])
MINLINE void copy_v2_uchar(unsigned char r[2], const unsigned char a)
MINLINE void negate_v4_v4(float r[4], const float a[4])
MINLINE double len_v2v2_db(const double v1[2], const double v2[2])
MINLINE float len_v3v3(const float a[3], const float b[3])
MINLINE void copy_v2_v2_short(short r[2], const short a[2])
MINLINE void negate_v3(float r[3])
MINLINE float dot_m4_v3_row_y(const float M[4][4], const float a[3])
MINLINE void sub_v2db_v2fl_v2fl(double r[2], const float a[2], const float b[2])
MINLINE bool equals_v3v3(const float v1[3], const float v2[3])
MINLINE bool equals_v2v2(const float v1[2], const float v2[2])
MINLINE bool equals_v4v4(const float v1[4], const float v2[4])
MINLINE void copy_v3fl_v3db(float r[3], const double a[3])
MINLINE float mul_project_m4_v3_zfac(const float mat[4][4], const float co[3])
MINLINE bool is_zero_v2_db(const double v[2])
MINLINE void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2])
MINLINE void zero_v4(float r[4])
MINLINE void mul_v3_v3v3(float r[3], const float v1[3], const float v2[3])
MINLINE void copy_v3db_v3fl(double r[3], const float a[3])
MINLINE float len_squared_v4v4(const float a[4], const float b[4])
MINLINE void invert_v3(float r[3])
MINLINE void clamp_v4(float vec[4], const float min, const float max)
MINLINE double dot_v3v3_db(const double a[3], const double b[3])
MINLINE float normalize_v3_v3(float r[3], const float a[3])
MINLINE void star_m3_v3(float rmat[3][3], const float a[3])
MINLINE float len_squared_v2v2(const float a[2], const float b[2])
MINLINE double cross_v2v2_db(const double a[2], const double b[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void negate_v3_short(short r[3])
MINLINE void copy_v2fl_v2db(float r[2], const double a[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v3_v3v3_int(int r[3], const int a[3], const int b[3])
MINLINE void zero_v2(float r[2])
MINLINE void copy_v4fl_v4db(float r[4], const double a[4])
MINLINE void cross_v3_v3v3_db(double r[3], const double a[3], const double b[3])
MINLINE float dot_m3_v3_row_y(const float M[3][3], const float a[3])
MINLINE bool compare_v2v2_relative(const float v1[2], const float v2[2], const float limit, const int max_ulps)
MINLINE bool compare_v2v2(const float v1[2], const float v2[2], const float limit)
MINLINE void copy_v4_v4_int(int r[4], const int a[4])
MINLINE void swap_v4_v4_db(double a[4], double b[4])
MINLINE float normalize_v2(float n[2])
MINLINE void abs_v4_v4(float r[4], const float a[4])
MINLINE double len_v2_db(const double v[2])
MINLINE bool compare_v4v4(const float v1[4], const float v2[4], const float limit)
MINLINE float normalize_v3_v3_length(float r[3], const float a[3], const float unit_length)
MINLINE void abs_v2_v2(float r[2], const float a[2])
MINLINE void swap_v3_v3(float a[3], float b[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void abs_v3_v3(float r[3], const float a[3])
MINLINE void madd_v3_v3v3fl(float r[3], const float a[3], const float b[3], float f)
MINLINE void sub_v4_v4(float r[4], const float a[4])
MINLINE void madd_v4_v4fl(float r[4], const float a[4], float f)
MINLINE void copy_v3_v3_db(double r[3], const double a[3])
MINLINE float dot_v3v3v3(const float p[3], const float a[3], const float b[3])
MINLINE void zero_v3(float r[3])
MINLINE void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3])
MINLINE float dot_m4_v3_row_x(const float M[4][4], const float a[3])
MINLINE float len_manhattan_v2v2(const float a[2], const float b[2])
MINLINE void copy_v4_v4_db(double r[4], const double a[4])
MINLINE void negate_v3_db(double r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v4_fl(float r[4], float f)
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
MINLINE bool compare_v4v4_relative(const float v1[4], const float v2[4], const float limit, const int max_ulps)
MINLINE void add_v2_v2_int(int r[2], const int a[2])
MINLINE float line_point_side_v2(const float l1[2], const float l2[2], const float pt[2])
MINLINE bool is_zero_v2(const float v[2])
MINLINE void add_v2_v2_db(double r[2], const double a[2])
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE void invert_v2(float r[2])
MINLINE int len_manhattan_v2_int(const int v[2])
MINLINE void copy_v4_fl(float r[4], float f)
MINLINE float normalize_v2_v2(float r[2], const float a[2])
MINLINE float normalize_v3_length(float n[3], const float unit_length)
MINLINE double dot_v3db_v3fl(const double a[3], const float b[3])
MINLINE void copy_v2_v2_uchar(unsigned char r[2], const unsigned char a[2])
MINLINE void swap_v2_v2_db(double a[2], double b[2])
MINLINE void zero_v3_db(double r[3])
MINLINE float len_squared_v3(const float v[3])
MINLINE float normalize_v3(float n[3])
MINLINE void normal_float_to_short_v2(short out[2], const float in[2])
MINLINE bool is_zero_v3_db(const double v[3])
MINLINE void sub_v4_v4v4(float r[4], const float a[4], const float b[4])
MINLINE void negate_v4(float r[4])
MINLINE bool is_zero_v4(const float v[4])
MINLINE float len_v2v2(const float v1[2], const float v2[2])
MINLINE void sub_v3_v3v3_db(double r[3], const double a[3], const double b[3])
MINLINE void copy_v2_fl(float r[2], float f)
MINLINE void sub_v2_v2v2_db(double r[2], const double a[2], const double b[2])
#define M
#define fabsf(x)
Definition: metal/compat.h:219
#define sqrtf(x)
Definition: metal/compat.h:243
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
T abs(const T &a)
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
#define min(a, b)
Definition: sort.c:35
float max