Blender  V2.93
BLI_math_geom.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  *
19  * The Original Code is: some of this file.
20  */
21 
22 #pragma once
23 
28 #include "BLI_compiler_attrs.h"
29 #include "BLI_math_inline.h"
30 
31 #ifdef BLI_MATH_GCC_WARN_PRAGMA
32 # pragma GCC diagnostic push
33 # pragma GCC diagnostic ignored "-Wredundant-decls"
34 #endif
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 /********************************** Polygons *********************************/
41 
42 float normal_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3]);
43 float normal_quad_v3(
44  float n[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
45 float normal_poly_v3(float n[3], const float verts[][3], unsigned int nr);
46 
47 MINLINE float area_tri_v2(const float v1[2], const float v2[2], const float v3[2]);
48 MINLINE float area_squared_tri_v2(const float v1[2], const float v2[2], const float v3[2]);
49 MINLINE float area_tri_signed_v2(const float v1[2], const float v2[2], const float v3[2]);
50 float area_tri_v3(const float v1[3], const float v2[3], const float v3[3]);
51 float area_squared_tri_v3(const float v1[3], const float v2[3], const float v3[3]);
52 float area_tri_signed_v3(const float v1[3],
53  const float v2[3],
54  const float v3[3],
55  const float normal[3]);
56 float area_quad_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
57 float area_squared_quad_v3(const float v1[3],
58  const float v2[3],
59  const float v3[3],
60  const float v4[3]);
61 float area_poly_v3(const float verts[][3], unsigned int nr);
62 float area_poly_v2(const float verts[][2], unsigned int nr);
63 float area_squared_poly_v3(const float verts[][3], unsigned int nr);
64 float area_squared_poly_v2(const float verts[][2], unsigned int nr);
65 float area_poly_signed_v2(const float verts[][2], unsigned int nr);
66 float cotangent_tri_weight_v3(const float v1[3], const float v2[3], const float v3[3]);
67 
68 void cross_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3]);
69 MINLINE float cross_tri_v2(const float v1[2], const float v2[2], const float v3[2]);
70 void cross_poly_v3(float n[3], const float verts[][3], unsigned int nr);
71 float cross_poly_v2(const float verts[][2], unsigned int nr);
72 
73 /********************************* Planes **********************************/
74 
75 void plane_from_point_normal_v3(float r_plane[4],
76  const float plane_co[3],
77  const float plane_no[3]);
78 void plane_to_point_vector_v3(const float plane[4], float r_plane_co[3], float r_plane_no[3]);
79 void plane_to_point_vector_v3_normalized(const float plane[4],
80  float r_plane_co[3],
81  float r_plane_no[3]);
82 
83 MINLINE float plane_point_side_v3(const float plane[4], const float co[3]);
84 
85 /********************************* Volume **********************************/
86 
87 float volume_tetrahedron_v3(const float v1[3],
88  const float v2[3],
89  const float v3[3],
90  const float v4[3]);
91 float volume_tetrahedron_signed_v3(const float v1[3],
92  const float v2[3],
93  const float v3[3],
94  const float v4[3]);
95 
96 float volume_tri_tetrahedron_signed_v3_6x(const float v1[3], const float v2[3], const float v3[3]);
97 float volume_tri_tetrahedron_signed_v3(const float v1[3], const float v2[3], const float v3[3]);
98 
99 bool is_edge_convex_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
100 bool is_quad_convex_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
101 bool is_quad_convex_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2]);
102 bool is_poly_convex_v2(const float verts[][2], unsigned int nr);
103 int is_quad_flip_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
104 bool is_quad_flip_v3_first_third_fast(const float v1[3],
105  const float v2[3],
106  const float v3[3],
107  const float v4[3]);
108 
109 /********************************* Distance **********************************/
110 
111 float dist_squared_to_line_v2(const float p[2], const float l1[2], const float l2[2]);
112 float dist_to_line_v2(const float p[2], const float l1[2], const float l2[2]);
113 float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2]);
114 float dist_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2]);
115 
116 float dist_signed_squared_to_plane_v3(const float p[3], const float plane[4]);
117 float dist_squared_to_plane_v3(const float p[3], const float plane[4]);
118 float dist_signed_to_plane_v3(const float p[3], const float plane[4]);
119 float dist_to_plane_v3(const float p[3], const float plane[4]);
120 
121 /* plane3 versions */
122 float dist_signed_squared_to_plane3_v3(const float p[3], const float plane[4]);
123 float dist_squared_to_plane3_v3(const float p[3], const float plane[4]);
124 float dist_signed_to_plane3_v3(const float p[3], const float plane[4]);
125 float dist_to_plane3_v3(const float p[3], const float plane[4]);
126 
127 float dist_squared_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3]);
128 float dist_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3]);
129 float dist_squared_to_line_v3(const float p[3], const float l1[3], const float l2[3]);
130 float dist_to_line_v3(const float p[3], const float l1[3], const float l2[3]);
131 float dist_signed_squared_to_corner_v3v3v3(const float p[3],
132  const float v1[3],
133  const float v2[3],
134  const float v3[3],
135  const float axis_ref[3]);
136 float dist_squared_to_ray_v3_normalized(const float ray_origin[3],
137  const float ray_direction[3],
138  const float co[3]);
139 float dist_squared_ray_to_seg_v3(const float ray_origin[3],
140  const float ray_direction[3],
141  const float v0[3],
142  const float v1[3],
143  float r_point[3],
144  float *r_depth);
145 
146 void aabb_get_near_far_from_plane(const float plane_no[3],
147  const float bbmin[3],
148  const float bbmax[3],
149  float bb_near[3],
150  float bb_afar[3]);
151 
153  float ray_origin[3];
154  float ray_direction[3];
155  float ray_inv_dir[3];
156 };
157 void dist_squared_ray_to_aabb_v3_precalc(struct DistRayAABB_Precalc *neasrest_precalc,
158  const float ray_origin[3],
159  const float ray_direction[3]);
161  const float bb_min[3],
162  const float bb_max[3],
163  float r_point[3],
164  float *r_depth);
165 /* when there is no advantage to precalc. */
166 float dist_squared_ray_to_aabb_v3_simple(const float ray_origin[3],
167  const float ray_direction[3],
168  const float bb_min[3],
169  const float bb_max[3],
170  float r_point[3],
171  float *r_depth);
172 
174  float ray_origin[3];
175  float ray_direction[3];
176  float ray_inv_dir[3];
177  float pmat[4][4];
178  float mval[2];
179 };
181  const float projmat[4][4],
182  const float winsize[2],
183  const float mval[2]);
185  const float bbmin[3],
186  const float bbmax[3],
187  bool r_axis_closest[3]);
188 float dist_squared_to_projected_aabb_simple(const float projmat[4][4],
189  const float winsize[2],
190  const float mval[2],
191  const float bbmin[3],
192  const float bbmax[3]);
193 
194 float closest_to_ray_v3(float r_close[3],
195  const float p[3],
196  const float ray_orig[3],
197  const float ray_dir[3]);
198 float closest_to_line_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2]);
199 double closest_to_line_v2_db(double r_close[2],
200  const double p[2],
201  const double l1[2],
202  const double l2[2]);
203 float closest_to_line_v3(float r_close[3], const float p[3], const float l1[3], const float l2[3]);
204 void closest_to_line_segment_v2(float r_close[2],
205  const float p[2],
206  const float l1[2],
207  const float l2[2]);
208 void closest_to_line_segment_v3(float r_close[3],
209  const float p[3],
210  const float l1[3],
211  const float l2[3]);
212 void closest_to_plane_normalized_v3(float r_close[3], const float plane[4], const float pt[3]);
213 void closest_to_plane_v3(float r_close[3], const float plane[4], const float pt[3]);
214 void closest_to_plane3_normalized_v3(float r_close[3], const float plane[3], const float pt[3]);
215 void closest_to_plane3_v3(float r_close[3], const float plane[3], const float pt[3]);
216 
217 /* Set 'r' to the point in triangle (v1, v2, v3) closest to point 'p' */
219  float r[3], const float p[3], const float v1[3], const float v2[3], const float v3[3]);
220 
221 float ray_point_factor_v3_ex(const float p[3],
222  const float ray_origin[3],
223  const float ray_direction[3],
224  const float epsilon,
225  const float fallback);
226 float ray_point_factor_v3(const float p[3],
227  const float ray_origin[3],
228  const float ray_direction[3]);
229 
230 float line_point_factor_v3_ex(const float p[3],
231  const float l1[3],
232  const float l2[3],
233  const float epsilon,
234  const float fallback);
235 float line_point_factor_v3(const float p[3], const float l1[3], const float l2[3]);
236 
237 float line_point_factor_v2_ex(const float p[2],
238  const float l1[2],
239  const float l2[2],
240  const float epsilon,
241  const float fallback);
242 float line_point_factor_v2(const float p[2], const float l1[2], const float l2[2]);
243 
244 float line_plane_factor_v3(const float plane_co[3],
245  const float plane_no[3],
246  const float l1[3],
247  const float l2[3]);
248 
249 void limit_dist_v3(float v1[3], float v2[3], const float dist);
250 
251 /******************************* Intersection ********************************/
252 
253 /* TODO int return value consistency */
254 
255 /* line-line */
256 #define ISECT_LINE_LINE_COLINEAR -1
257 #define ISECT_LINE_LINE_NONE 0
258 #define ISECT_LINE_LINE_EXACT 1
259 #define ISECT_LINE_LINE_CROSS 2
260 
261 int isect_seg_seg_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2]);
262 void isect_seg_seg_v3(const float a0[3],
263  const float a1[3],
264  const float b0[3],
265  const float b1[3],
266  float r_a[3],
267  float r_b[3]);
268 
269 int isect_seg_seg_v2_int(const int v1[2], const int v2[2], const int v3[2], const int v4[2]);
270 int isect_seg_seg_v2_point_ex(const float v0[2],
271  const float v1[2],
272  const float v2[2],
273  const float v3[2],
274  const float endpoint_bias,
275  float vi[2]);
277  const float v0[2], const float v1[2], const float v2[2], const float v3[2], float vi[2]);
278 bool isect_seg_seg_v2_simple(const float v1[2],
279  const float v2[2],
280  const float v3[2],
281  const float v4[2]);
282 int isect_seg_seg_v2_lambda_mu_db(const double v1[2],
283  const double v2[2],
284  const double v3[2],
285  const double v4[2],
286  double *r_lambda,
287  double *r_mu);
288 int isect_line_sphere_v3(const float l1[3],
289  const float l2[3],
290  const float sp[3],
291  const float r,
292  float r_p1[3],
293  float r_p2[3]);
294 int isect_line_sphere_v2(const float l1[2],
295  const float l2[2],
296  const float sp[2],
297  const float r,
298  float r_p1[2],
299  float r_p2[2]);
300 
302  const float v0[2], const float v1[2], const float v2[2], const float v3[2], float r_vi[2]);
303 int isect_line_line_epsilon_v3(const float v1[3],
304  const float v2[3],
305  const float v3[3],
306  const float v4[3],
307  float i1[3],
308  float i2[3],
309  const float epsilon);
310 int isect_line_line_v3(const float v1[3],
311  const float v2[3],
312  const float v3[3],
313  const float v4[3],
314  float r_i1[3],
315  float r_i2[3]);
316 bool isect_line_line_strict_v3(const float v1[3],
317  const float v2[3],
318  const float v3[3],
319  const float v4[3],
320  float vi[3],
321  float *r_lambda);
322 bool isect_ray_ray_epsilon_v3(const float ray_origin_a[3],
323  const float ray_direction_a[3],
324  const float ray_origin_b[3],
325  const float ray_direction_b[3],
326  const float epsilon,
327  float *r_lambda_a,
328  float *r_lambda_b);
329 bool isect_ray_ray_v3(const float ray_origin_a[3],
330  const float ray_direction_a[3],
331  const float ray_origin_b[3],
332  const float ray_direction_b[3],
333  float *r_lambda_a,
334  float *r_lambda_b);
335 
336 bool isect_ray_plane_v3(const float ray_origin[3],
337  const float ray_direction[3],
338  const float plane[4],
339  float *r_lambda,
340  const bool clip);
341 
342 bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3]);
343 bool isect_point_planes_v3_negated(const float (*planes)[4], const int totplane, const float p[3]);
344 
345 bool isect_line_plane_v3(float r_isect_co[3],
346  const float l1[3],
347  const float l2[3],
348  const float plane_co[3],
349  const float plane_no[3]) ATTR_WARN_UNUSED_RESULT;
350 
351 bool isect_plane_plane_plane_v3(const float plane_a[4],
352  const float plane_b[4],
353  const float plane_c[4],
354  float r_isect_co[3]) ATTR_WARN_UNUSED_RESULT;
355 bool isect_plane_plane_v3(const float plane_a[4],
356  const float plane_b[4],
357  float r_isect_co[3],
358  float r_isect_no[3]) ATTR_WARN_UNUSED_RESULT;
359 
360 bool isect_planes_v3_fn(
361  const float planes[][4],
362  const int planes_len,
363  const float eps_coplanar,
364  const float eps_isect,
365  void (*callback_fn)(const float co[3], int i, int j, int k, void *user_data),
366  void *user_data);
367 
368 /* line/ray triangle */
369 bool isect_line_segment_tri_v3(const float p1[3],
370  const float p2[3],
371  const float v0[3],
372  const float v1[3],
373  const float v2[3],
374  float *r_lambda,
375  float r_uv[2]);
376 bool isect_line_segment_tri_epsilon_v3(const float p1[3],
377  const float p2[3],
378  const float v0[3],
379  const float v1[3],
380  const float v2[3],
381  float *r_lambda,
382  float r_uv[2],
383  const float epsilon);
384 bool isect_axial_line_segment_tri_v3(const int axis,
385  const float p1[3],
386  const float p2[3],
387  const float v0[3],
388  const float v1[3],
389  const float v2[3],
390  float *r_lambda);
391 
392 bool isect_ray_tri_v3(const float ray_origin[3],
393  const float ray_direction[3],
394  const float v0[3],
395  const float v1[3],
396  const float v2[3],
397  float *r_lambda,
398  float r_uv[2]);
399 bool isect_ray_tri_threshold_v3(const float ray_origin[3],
400  const float ray_direction[3],
401  const float v0[3],
402  const float v1[3],
403  const float v2[3],
404  float *r_lambda,
405  float r_uv[2],
406  const float threshold);
407 bool isect_ray_tri_epsilon_v3(const float ray_origin[3],
408  const float ray_direction[3],
409  const float v0[3],
410  const float v1[3],
411  const float v2[3],
412  float *r_lambda,
413  float r_uv[2],
414  const float epsilon);
415 bool isect_tri_tri_v3_ex(const float tri_a[3][3],
416  const float tri_b[3][3],
417  float r_i1[3],
418  float r_i2[3],
419  int *r_tri_a_edge_isect_count);
420 bool isect_tri_tri_v3(const float t_a0[3],
421  const float t_a1[3],
422  const float t_a2[3],
423  const float t_b0[3],
424  const float t_b1[3],
425  const float t_b2[3],
426  float r_i1[3],
427  float r_i2[3]);
428 
429 bool isect_tri_tri_v2(const float p1[2],
430  const float q1[2],
431  const float r1[2],
432  const float p2[2],
433  const float q2[2],
434  const float r2[2]);
435 
436 /* water-tight raycast (requires pre-calculation) */
438  /* Maximal dimension kz, and orthogonal dimensions. */
439  int kx, ky, kz;
440 
441  /* Shear constants. */
442  float sx, sy, sz;
443 };
444 
445 void isect_ray_tri_watertight_v3_precalc(struct IsectRayPrecalc *isect_precalc,
446  const float ray_direction[3]);
447 bool isect_ray_tri_watertight_v3(const float ray_origin[3],
448  const struct IsectRayPrecalc *isect_precalc,
449  const float v0[3],
450  const float v1[3],
451  const float v2[3],
452  float *r_dist,
453  float r_uv[2]);
454 /* slower version which calculates IsectRayPrecalc each time */
455 bool isect_ray_tri_watertight_v3_simple(const float ray_origin[3],
456  const float ray_direction[3],
457  const float v0[3],
458  const float v1[3],
459  const float v2[3],
460  float *r_lambda,
461  float r_uv[2]);
462 
463 bool isect_ray_seg_v2(const float ray_origin[2],
464  const float ray_direction[2],
465  const float v0[2],
466  const float v1[2],
467  float *r_lambda,
468  float *r_u);
469 
470 bool isect_ray_line_v3(const float ray_origin[3],
471  const float ray_direction[3],
472  const float v0[3],
473  const float v1[3],
474  float *r_lambda);
475 
476 /* point in polygon */
477 bool isect_point_poly_v2(const float pt[2],
478  const float verts[][2],
479  const unsigned int nr,
480  const bool use_holes);
481 bool isect_point_poly_v2_int(const int pt[2],
482  const int verts[][2],
483  const unsigned int nr,
484  const bool use_holes);
485 
487  const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2]);
488 
489 int isect_point_tri_v2(const float pt[2], const float v1[2], const float v2[2], const float v3[2]);
490 bool isect_point_tri_v2_cw(const float pt[2],
491  const float v1[2],
492  const float v2[2],
493  const float v3[2]);
495  const int x1, const int y1, const int x2, const int y2, const int a, const int b);
496 bool isect_point_tri_prism_v3(const float p[3],
497  const float v1[3],
498  const float v2[3],
499  const float v3[3]);
500 bool isect_point_tri_v3(const float p[3],
501  const float v1[3],
502  const float v2[3],
503  const float v3[3],
504  float r_isect_co[3]);
505 
506 /* axis-aligned bounding box */
507 bool isect_aabb_aabb_v3(const float min1[3],
508  const float max1[3],
509  const float min2[3],
510  const float max2[3]);
511 
513  float ray_origin[3];
514  float ray_inv_dir[3];
515  int sign[3];
516 };
517 
519  const float ray_origin[3],
520  const float ray_direction[3]);
521 bool isect_ray_aabb_v3(const struct IsectRayAABB_Precalc *data,
522  const float bb_min[3],
523  const float bb_max[3],
524  float *tmin);
525 bool isect_ray_aabb_v3_simple(const float orig[3],
526  const float dir[3],
527  const float bb_min[3],
528  const float bb_max[3],
529  float *tmin,
530  float *tmax);
531 
532 /* other */
533 #define ISECT_AABB_PLANE_BEHIND_ANY 0
534 #define ISECT_AABB_PLANE_CROSS_ANY 1
535 #define ISECT_AABB_PLANE_IN_FRONT_ALL 2
536 
537 int isect_aabb_planes_v3(const float (*planes)[4],
538  const int totplane,
539  const float bbmin[3],
540  const float bbmax[3]);
541 
542 bool isect_sweeping_sphere_tri_v3(const float p1[3],
543  const float p2[3],
544  const float radius,
545  const float v0[3],
546  const float v1[3],
547  const float v2[3],
548  float *r_lambda,
549  float ipoint[3]);
550 
552  const float p1[3], const float p2[3], const float plane[4], float r_p1[3], float r_p2[3]);
553 bool clip_segment_v3_plane_n(const float p1[3],
554  const float p2[3],
555  const float plane_array[][4],
556  const int plane_tot,
557  float r_p1[3],
558  float r_p2[3]);
559 
560 bool point_in_slice_seg(float p[3], float l1[3], float l2[3]);
561 
562 /****************************** Interpolation ********************************/
564  float w[3], const float v1[3], const float v2[3], const float v3[3], const float co[3]);
565 void interp_weights_quad_v3(float w[4],
566  const float v1[3],
567  const float v2[3],
568  const float v3[3],
569  const float v4[3],
570  const float co[3]);
571 void interp_weights_poly_v3(float w[], float v[][3], const int n, const float co[3]);
572 void interp_weights_poly_v2(float w[], float v[][2], const int n, const float co[2]);
573 
574 void interp_cubic_v3(float x[3],
575  float v[3],
576  const float x1[3],
577  const float v1[3],
578  const float x2[3],
579  const float v2[3],
580  const float t);
581 
582 int interp_sparse_array(float *array, const int list_size, const float skipval);
583 
584 void transform_point_by_tri_v3(float pt_tar[3],
585  float const pt_src[3],
586  const float tri_tar_p1[3],
587  const float tri_tar_p2[3],
588  const float tri_tar_p3[3],
589  const float tri_src_p1[3],
590  const float tri_src_p2[3],
591  const float tri_src_p3[3]);
592 void transform_point_by_seg_v3(float p_dst[3],
593  const float p_src[3],
594  const float l_dst_p1[3],
595  const float l_dst_p2[3],
596  const float l_src_p1[3],
597  const float l_src_p2[3]);
598 
600  const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3]);
602  const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3]);
604  const float v1[4], const float v2[4], const float v3[4], const float co[2], float w[3]);
605 void barycentric_weights_v2_quad(const float v1[2],
606  const float v2[2],
607  const float v3[2],
608  const float v4[2],
609  const float co[2],
610  float w[4]);
611 
613  const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3]);
614 int barycentric_inside_triangle_v2(const float w[3]);
615 
616 void resolve_tri_uv_v2(
617  float r_uv[2], const float st[2], const float st0[2], const float st1[2], const float st2[2]);
618 void resolve_tri_uv_v3(
619  float r_uv[2], const float st[3], const float st0[3], const float st1[3], const float st2[3]);
620 void resolve_quad_uv_v2(float r_uv[2],
621  const float st[2],
622  const float st0[2],
623  const float st1[2],
624  const float st2[2],
625  const float st3[2]);
626 void resolve_quad_uv_v2_deriv(float r_uv[2],
627  float r_deriv[2][2],
628  const float st[2],
629  const float st0[2],
630  const float st1[2],
631  const float st2[2],
632  const float st3[2]);
633 float resolve_quad_u_v2(const float st[2],
634  const float st0[2],
635  const float st1[2],
636  const float st2[2],
637  const float st3[2]);
638 
639 /* use to find the point of a UV on a face */
640 void interp_bilinear_quad_v3(float data[4][3], float u, float v, float res[3]);
641 void interp_barycentric_tri_v3(float data[3][3], float u, float v, float res[3]);
642 
643 /***************************** View & Projection *****************************/
644 
645 void lookat_m4(
646  float mat[4][4], float vx, float vy, float vz, float px, float py, float pz, float twist);
647 void polarview_m4(float mat[4][4], float dist, float azimuth, float incidence, float twist);
648 
649 void perspective_m4(float mat[4][4],
650  const float left,
651  const float right,
652  const float bottom,
653  const float top,
654  const float nearClip,
655  const float farClip);
656 void perspective_m4_fov(float mat[4][4],
657  const float angle_left,
658  const float angle_right,
659  const float angle_up,
660  const float angle_down,
661  const float nearClip,
662  const float farClip);
663 void orthographic_m4(float mat[4][4],
664  const float left,
665  const float right,
666  const float bottom,
667  const float top,
668  const float nearClip,
669  const float farClip);
670 void window_translate_m4(float winmat[4][4], float perspmat[4][4], const float x, const float y);
671 
672 void planes_from_projmat(const float mat[4][4],
673  float left[4],
674  float right[4],
675  float top[4],
676  float bottom[4],
677  float near[4],
678  float far[4]);
679 
680 void projmat_dimensions(const float projmat[4][4],
681  float *r_left,
682  float *r_right,
683  float *r_bottom,
684  float *r_top,
685  float *r_near,
686  float *r_far);
687 void projmat_dimensions_db(const float projmat[4][4],
688  double *r_left,
689  double *r_right,
690  double *r_bottom,
691  double *r_top,
692  double *r_near,
693  double *r_far);
694 
695 void projmat_from_subregion(const float projmat[4][4],
696  const int win_size[2],
697  const int x_min,
698  const int x_max,
699  const int y_min,
700  const int y_max,
701  float r_projmat[4][4]);
702 
703 int box_clip_bounds_m4(float boundbox[2][3], const float bounds[4], float winmat[4][4]);
704 void box_minmax_bounds_m4(float min[3], float max[3], float boundbox[2][3], float mat[4][4]);
705 
706 /********************************** Mapping **********************************/
707 
708 void map_to_tube(float *r_u, float *r_v, const float x, const float y, const float z);
709 void map_to_sphere(float *r_u, float *r_v, const float x, const float y, const float z);
710 void map_to_plane_v2_v3v3(float r_co[2], const float co[3], const float no[3]);
711 void map_to_plane_axis_angle_v2_v3v3fl(float r_co[2],
712  const float co[3],
713  const float axis[3],
714  const float angle);
715 
716 /********************************** Normals **********************************/
717 
718 void accumulate_vertex_normals_tri_v3(float n1[3],
719  float n2[3],
720  float n3[3],
721  const float f_no[3],
722  const float co1[3],
723  const float co2[3],
724  const float co3[3]);
725 
726 void accumulate_vertex_normals_v3(float n1[3],
727  float n2[3],
728  float n3[3],
729  float n4[3],
730  const float f_no[3],
731  const float co1[3],
732  const float co2[3],
733  const float co3[3],
734  const float co4[3]);
735 
736 void accumulate_vertex_normals_poly_v3(float **vertnos,
737  const float polyno[3],
738  const float **vertcos,
739  float vdiffs[][3],
740  const int nverts);
741 
742 /********************************* Tangents **********************************/
743 
744 void tangent_from_uv_v3(const float uv1[2],
745  const float uv2[2],
746  const float uv3[2],
747  const float co1[3],
748  const float co2[3],
749  const float co3[3],
750  const float n[3],
751  float r_tang[3]);
752 
753 /******************************** Vector Clouds ******************************/
754 
755 void vcloud_estimate_transform_v3(const int list_size,
756  const float (*pos)[3],
757  const float *weight,
758  const float (*rpos)[3],
759  const float *rweight,
760  float lloc[3],
761  float rloc[3],
762  float lrot[3][3],
763  float lscale[3][3]);
764 
765 /****************************** Spherical Harmonics *************************/
766 
767 /* Uses 2nd order SH => 9 coefficients, stored in this order:
768  * 0 = (0, 0),
769  * 1 = (1, -1), 2 = (1, 0), 3 = (1, 1),
770  * 4 = (2, -2), 5 = (2, -1), 6 = (2, 0), 7 = (2, 1), 8 = (2, 2) */
771 
772 MINLINE void zero_sh(float r[9]);
773 MINLINE void copy_sh_sh(float r[9], const float a[9]);
774 MINLINE void mul_sh_fl(float r[9], const float f);
775 MINLINE void add_sh_shsh(float r[9], const float a[9], const float b[9]);
776 MINLINE float dot_shsh(const float a[9], const float b[9]);
777 
778 MINLINE float eval_shv3(float r[9], const float v[3]);
779 MINLINE float diffuse_shv3(float r[9], const float v[3]);
780 MINLINE void vec_fac_to_sh(float r[9], const float v[3], const float f);
781 MINLINE void madd_sh_shfl(float r[9], const float sh[3], const float f);
782 
783 /********************************* Form Factor *******************************/
784 
785 float form_factor_quad(const float p[3],
786  const float n[3],
787  const float q0[3],
788  const float q1[3],
789  const float q2[3],
790  const float q3[3]);
791 bool form_factor_visible_quad(const float p[3],
792  const float n[3],
793  const float v0[3],
794  const float v1[3],
795  const float v2[3],
796  float q0[3],
797  float q1[3],
798  float q2[3],
799  float q3[3]);
801  float p[3], float n[3], float v1[3], float v2[3], float v3[3], float v4[3]);
802 
803 void axis_dominant_v3_to_m3_negate(float r_mat[3][3], const float normal[3]);
804 void axis_dominant_v3_to_m3(float r_mat[3][3], const float normal[3]);
805 
806 MINLINE void axis_dominant_v3(int *r_axis_a, int *r_axis_b, const float axis[3]);
807 MINLINE float axis_dominant_v3_max(int *r_axis_a,
808  int *r_axis_b,
809  const float axis[3]) ATTR_WARN_UNUSED_RESULT;
810 MINLINE int axis_dominant_v3_single(const float vec[3]);
811 MINLINE int axis_dominant_v3_ortho_single(const float vec[3]);
812 
813 MINLINE int max_axis_v3(const float vec[3]);
814 MINLINE int min_axis_v3(const float vec[3]);
815 
816 MINLINE int poly_to_tri_count(const int poly_count, const int corner_count);
817 
818 MINLINE float shell_angle_to_dist(const float angle);
819 MINLINE float shell_v3v3_normalized_to_dist(const float a[3], const float b[3]);
820 MINLINE float shell_v2v2_normalized_to_dist(const float a[2], const float b[2]);
821 MINLINE float shell_v3v3_mid_normalized_to_dist(const float a[3], const float b[3]);
822 MINLINE float shell_v2v2_mid_normalized_to_dist(const float a[2], const float b[2]);
823 
824 /********************************* Cubic (Bezier) *******************************/
825 
826 float cubic_tangent_factor_circle_v3(const float tan_l[3], const float tan_r[3]);
827 
828 /********************************** Geodesics *********************************/
829 
831  const float v0[3], const float v1[3], const float v2[3], const float dist1, const float dist2);
832 
833 /**************************** Inline Definitions ******************************/
834 
835 #if BLI_MATH_DO_INLINE
836 # include "intern/math_geom_inline.c"
837 #endif
838 
839 #ifdef BLI_MATH_GCC_WARN_PRAGMA
840 # pragma GCC diagnostic pop
841 #endif
842 
843 #ifdef __cplusplus
844 }
845 #endif
void BLI_kdtree_nd_() int BLI_kdtree_nd_() int BLI_kdtree_nd_() int BLI_kdtree_nd_() ATTR_WARN_UNUSED_RESULT
void map_to_sphere(float *r_u, float *r_v, const float x, const float y, const float z)
Definition: math_geom.c:5236
int isect_seg_seg_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2])
Definition: math_geom.c:1151
bool isect_tri_tri_v2(const float p1[2], const float q1[2], const float r1[2], const float p2[2], const float q2[2], const float r2[2])
Definition: math_geom.c:2695
void plane_from_point_normal_v3(float r_plane[4], const float plane_co[3], const float plane_no[3])
Definition: math_geom.c:243
bool isect_ray_ray_v3(const float ray_origin_a[3], const float ray_direction_a[3], const float ray_origin_b[3], const float ray_direction_b[3], float *r_lambda_a, float *r_lambda_b)
Definition: math_geom.c:3210
int isect_point_quad_v2(const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
Definition: math_geom.c:1616
float closest_to_ray_v3(float r_close[3], const float p[3], const float ray_orig[3], const float ray_dir[3])
Definition: math_geom.c:3341
void isect_ray_tri_watertight_v3_precalc(struct IsectRayPrecalc *isect_precalc, const float ray_direction[3])
Definition: math_geom.c:1879
void window_translate_m4(float winmat[4][4], float perspmat[4][4], const float x, const float y)
Definition: math_geom.c:4877
float dist_squared_to_line_v3(const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:507
float dist_squared_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:493
float area_squared_poly_v2(const float verts[][2], unsigned int nr)
Definition: math_geom.c:214
float dist_squared_to_projected_aabb(struct DistProjectedAABBPrecalc *data, const float bbmin[3], const float bbmax[3], bool r_axis_closest[3])
Definition: math_geom.c:875
float normal_quad_v3(float n[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:68
int isect_line_line_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3], float r_i1[3], float r_i2[3])
Definition: math_geom.c:3103
float line_point_factor_v2_ex(const float p[2], const float l1[2], const float l2[2], const float epsilon, const float fallback)
Definition: math_geom.c:3454
MINLINE int poly_to_tri_count(const int poly_count, const int corner_count)
int isect_line_line_epsilon_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3], float i1[3], float i2[3], const float epsilon)
Definition: math_geom.c:3039
MINLINE float shell_v2v2_normalized_to_dist(const float a[2], const float b[2])
float dist_squared_to_plane_v3(const float p[3], const float plane[4])
Definition: math_geom.c:440
bool isect_ray_line_v3(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], float *r_lambda)
Definition: math_geom.c:2123
int barycentric_inside_triangle_v2(const float w[3])
Definition: math_geom.c:3897
MINLINE float area_tri_v2(const float v1[2], const float v2[2], const float v3[2])
int is_quad_flip_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:6184
void transform_point_by_seg_v3(float p_dst[3], const float p_src[3], const float l_dst_p1[3], const float l_dst_p2[3], const float l_src_p1[3], const float l_src_p2[3])
Definition: math_geom.c:4169
bool isect_sweeping_sphere_tri_v3(const float p1[3], const float p2[3], const float radius, const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float ipoint[3])
Definition: math_geom.c:2788
MINLINE void vec_fac_to_sh(float r[9], const float v[3], const float f)
bool isect_ray_tri_v3(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2])
Definition: math_geom.c:1751
bool isect_plane_plane_v3(const float plane_a[4], const float plane_b[4], float r_isect_co[3], float r_isect_no[3]) ATTR_WARN_UNUSED_RESULT
Definition: math_geom.c:2265
float area_poly_v3(const float verts[][3], unsigned int nr)
Definition: math_geom.c:149
void barycentric_weights_v2(const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
Definition: math_geom.c:3943
MINLINE float area_squared_tri_v2(const float v1[2], const float v2[2], const float v3[2])
void accumulate_vertex_normals_tri_v3(float n1[3], float n2[3], float n3[3], const float f_no[3], const float co1[3], const float co2[3], const float co3[3])
Definition: math_geom.c:5281
float ray_point_factor_v3(const float p[3], const float ray_origin[3], const float ray_direction[3])
Definition: math_geom.c:3420
void barycentric_weights_v2_clamped(const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
Definition: math_geom.c:3971
void projmat_dimensions_db(const float projmat[4][4], double *r_left, double *r_right, double *r_bottom, double *r_top, double *r_near, double *r_far)
Definition: math_geom.c:4992
float dist_to_plane3_v3(const float p[3], const float plane[4])
void isect_seg_seg_v3(const float a0[3], const float a1[3], const float b0[3], const float b1[3], float r_a[3], float r_b[3])
Definition: math_geom.c:1174
MINLINE int axis_dominant_v3_single(const float vec[3])
float form_factor_quad(const float p[3], const float n[3], const float q0[3], const float q1[3], const float q2[3], const float q3[3])
Definition: math_geom.c:5996
double closest_to_line_v2_db(double r_close[2], const double p[2], const double l1[2], const double l2[2])
Definition: math_geom.c:3388
MINLINE float cross_tri_v2(const float v1[2], const float v2[2], const float v3[2])
bool isect_ray_aabb_v3(const struct IsectRayAABB_Precalc *data, const float bb_min[3], const float bb_max[3], float *tmin)
Definition: math_geom.c:3251
MINLINE int axis_dominant_v3_ortho_single(const float vec[3])
MINLINE float plane_point_side_v3(const float plane[4], const float co[3])
bool isect_line_segment_tri_epsilon_v3(const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2], const float epsilon)
Definition: math_geom.c:1696
void cross_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:36
bool point_in_slice_seg(float p[3], float l1[3], float l2[3])
Definition: math_geom.c:3580
float dist_to_plane_v3(const float p[3], const float plane[4])
Definition: math_geom.c:475
void transform_point_by_tri_v3(float pt_tar[3], float const pt_src[3], const float tri_tar_p1[3], const float tri_tar_p2[3], const float tri_tar_p3[3], const float tri_src_p1[3], const float tri_src_p2[3], const float tri_src_p3[3])
Definition: math_geom.c:4121
void polarview_m4(float mat[4][4], float dist, float azimuth, float incidence, float twist)
Definition: math_geom.c:5076
int isect_seg_seg_v2_lambda_mu_db(const double v1[2], const double v2[2], const double v3[2], const double v4[2], double *r_lambda, double *r_mu)
Definition: math_geom.c:1384
void interp_weights_quad_v3(float w[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3], const float co[3])
Definition: math_geom.c:3840
float area_tri_signed_v3(const float v1[3], const float v2[3], const float v3[3], const float normal[3])
Definition: math_geom.c:131
float volume_tri_tetrahedron_signed_v3_6x(const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:307
void closest_to_plane3_normalized_v3(float r_close[3], const float plane[3], const float pt[3])
Definition: math_geom.c:426
bool isect_seg_seg_v2_simple(const float v1[2], const float v2[2], const float v3[2], const float v4[2])
Definition: math_geom.c:1360
void closest_to_plane_normalized_v3(float r_close[3], const float plane[4], const float pt[3])
Definition: math_geom.c:412
int isect_point_tri_v2_int(const int x1, const int y1, const int x2, const int y2, const int a, const int b)
Definition: math_geom.c:3518
MINLINE float axis_dominant_v3_max(int *r_axis_a, int *r_axis_b, const float axis[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float diffuse_shv3(float r[9], const float v[3])
bool isect_point_tri_v3(const float p[3], const float v1[3], const float v2[3], const float v3[3], float r_isect_co[3])
Definition: math_geom.c:3612
void interp_weights_tri_v3(float w[3], const float v1[3], const float v2[3], const float v3[3], const float co[3])
Definition: math_geom.c:3831
void resolve_tri_uv_v2(float r_uv[2], const float st[2], const float st0[2], const float st1[2], const float st2[2])
Definition: math_geom.c:4561
void interp_weights_poly_v3(float w[], float v[][3], const int n, const float co[3])
float line_point_factor_v3_ex(const float p[3], const float l1[3], const float l2[3], const float epsilon, const float fallback)
Definition: math_geom.c:3434
bool isect_ray_aabb_v3_simple(const float orig[3], const float dir[3], const float bb_min[3], const float bb_max[3], float *tmin, float *tmax)
Definition: math_geom.c:3308
float dist_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:502
bool isect_aabb_aabb_v3(const float min1[3], const float max1[3], const float min2[3], const float max2[3])
Definition: math_geom.c:3226
MINLINE void madd_sh_shfl(float r[9], const float sh[3], const float f)
float area_squared_poly_v3(const float verts[][3], unsigned int nr)
Definition: math_geom.c:156
void vcloud_estimate_transform_v3(const int list_size, const float(*pos)[3], const float *weight, const float(*rpos)[3], const float *rweight, float lloc[3], float rloc[3], float lrot[3][3], float lscale[3][3])
Definition: math_geom.c:5466
void dist_squared_ray_to_aabb_v3_precalc(struct DistRayAABB_Precalc *neasrest_precalc, const float ray_origin[3], const float ray_direction[3])
Definition: math_geom.c:696
void projmat_from_subregion(const float projmat[4][4], const int win_size[2], const int x_min, const int x_max, const int y_min, const int y_max, float r_projmat[4][4])
Definition: math_geom.c:5031
float volume_tri_tetrahedron_signed_v3(const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:315
bool isect_point_poly_v2(const float pt[2], const float verts[][2], const unsigned int nr, const bool use_holes)
void cross_poly_v3(float n[3], const float verts[][3], unsigned int nr)
Definition: math_geom.c:190
bool isect_ray_seg_v2(const float ray_origin[2], const float ray_direction[2], const float v0[2], const float v1[2], float *r_lambda, float *r_u)
Definition: math_geom.c:2077
void closest_to_line_segment_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:353
float dist_signed_squared_to_plane3_v3(const float p[3], const float plane[4])
float dist_squared_to_projected_aabb_simple(const float projmat[4][4], const float winsize[2], const float mval[2], const float bbmin[3], const float bbmax[3])
Definition: math_geom.c:1005
void accumulate_vertex_normals_poly_v3(float **vertnos, const float polyno[3], const float **vertcos, float vdiffs[][3], const int nverts)
Definition: math_geom.c:5367
bool isect_ray_tri_watertight_v3(const float ray_origin[3], const struct IsectRayPrecalc *isect_precalc, const float v0[3], const float v1[3], const float v2[3], float *r_dist, float r_uv[2])
Definition: math_geom.c:1906
float dist_squared_ray_to_aabb_v3_simple(const float ray_origin[3], const float ray_direction[3], const float bb_min[3], const float bb_max[3], float r_point[3], float *r_depth)
Definition: math_geom.c:802
bool is_quad_flip_v3_first_third_fast(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:6206
MINLINE void add_sh_shsh(float r[9], const float a[9], const float b[9])
float form_factor_hemi_poly(float p[3], float n[3], float v1[3], float v2[3], float v3[3], float v4[3])
Definition: math_geom.c:6041
bool clip_segment_v3_plane(const float p1[3], const float p2[3], const float plane[4], float r_p1[3], float r_p2[3])
Definition: math_geom.c:3632
bool isect_point_poly_v2_int(const int pt[2], const int verts[][2], const unsigned int nr, const bool use_holes)
void closest_to_plane3_v3(float r_close[3], const float plane[3], const float pt[3])
Definition: math_geom.c:419
void resolve_quad_uv_v2(float r_uv[2], const float st[2], const float st0[2], const float st1[2], const float st2[2], const float st3[2])
Definition: math_geom.c:4620
void projmat_dimensions(const float projmat[4][4], float *r_left, float *r_right, float *r_bottom, float *r_top, float *r_near, float *r_far)
Definition: math_geom.c:4964
float line_point_factor_v2(const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:3469
bool isect_ray_tri_watertight_v3_simple(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2])
Definition: math_geom.c:1981
void closest_on_tri_to_point_v3(float r[3], const float p[3], const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:1023
MINLINE void mul_sh_fl(float r[9], const float f)
void tangent_from_uv_v3(const float uv1[2], const float uv2[2], const float uv3[2], const float co1[3], const float co2[3], const float co3[3], const float n[3], float r_tang[3])
MINLINE float shell_v3v3_normalized_to_dist(const float a[3], const float b[3])
MINLINE float shell_v3v3_mid_normalized_to_dist(const float a[3], const float b[3])
void perspective_m4(float mat[4][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
Definition: math_geom.c:4830
void lookat_m4(float mat[4][4], float vx, float vy, float vz, float px, float py, float pz, float twist)
Definition: math_geom.c:5086
void axis_dominant_v3_to_m3_negate(float r_mat[3][3], const float normal[3])
Definition: math_geom.c:3772
bool is_edge_convex_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:6064
void accumulate_vertex_normals_v3(float n1[3], float n2[3], float n3[3], float n4[3], const float f_no[3], const float co1[3], const float co2[3], const float co3[3], const float co4[3])
Definition: math_geom.c:5318
bool isect_tri_tri_v3(const float t_a0[3], const float t_a1[3], const float t_a2[3], const float t_b0[3], const float t_b1[3], const float t_b2[3], float r_i1[3], float r_i2[3])
Definition: math_geom.c:2521
float line_plane_factor_v3(const float plane_co[3], const float plane_no[3], const float l1[3], const float l2[3])
Definition: math_geom.c:3477
void dist_squared_to_projected_aabb_precalc(struct DistProjectedAABBPrecalc *precalc, const float projmat[4][4], const float winsize[2], const float mval[2])
Definition: math_geom.c:823
float dist_signed_to_plane_v3(const float p[3], const float plane[4])
Definition: math_geom.c:468
void aabb_get_near_far_from_plane(const float plane_no[3], const float bbmin[3], const float bbmax[3], float bb_near[3], float bb_afar[3])
Definition: math_geom.c:660
float dist_squared_to_plane3_v3(const float p[3], const float plane[4])
void resolve_tri_uv_v3(float r_uv[2], const float st[3], const float st0[3], const float st1[3], const float st2[3])
Definition: math_geom.c:4588
void isect_ray_aabb_v3_precalc(struct IsectRayAABB_Precalc *data, const float ray_origin[3], const float ray_direction[3])
Definition: math_geom.c:3235
float area_tri_v3(const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:116
bool isect_point_tri_v2_cw(const float pt[2], const float v1[2], const float v2[2], const float v3[2])
Definition: math_geom.c:1579
float area_poly_signed_v2(const float verts[][2], unsigned int nr)
Definition: math_geom.c:209
int isect_line_sphere_v3(const float l1[3], const float l2[3], const float sp[3], const float r, float r_p1[3], float r_p2[3])
Definition: math_geom.c:1431
bool is_quad_convex_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:6083
float resolve_quad_u_v2(const float st[2], const float st0[2], const float st1[2], const float st2[2], const float st3[2])
Definition: math_geom.c:4722
void axis_dominant_v3_to_m3(float r_mat[3][3], const float normal[3])
Normal to x,y matrix.
Definition: math_geom.c:3752
void interp_barycentric_tri_v3(float data[3][3], float u, float v, float res[3])
Definition: math_geom.c:4783
float volume_tetrahedron_signed_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:289
void perspective_m4_fov(float mat[4][4], const float angle_left, const float angle_right, const float angle_up, const float angle_down, const float nearClip, const float farClip)
Definition: math_geom.c:4856
void interp_weights_poly_v2(float w[], float v[][2], const int n, const float co[2])
bool isect_ray_tri_threshold_v3(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2], const float threshold)
bool isect_line_line_strict_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3], float vi[3], float *r_lambda)
Definition: math_geom.c:3118
void interp_cubic_v3(float x[3], float v[3], const float x1[3], const float v1[3], const float x2[3], const float v2[3], const float t)
Definition: math_geom.c:4519
float area_squared_tri_v3(const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:123
bool isect_tri_tri_v3_ex(const float tri_a[3][3], const float tri_b[3][3], float r_i1[3], float r_i2[3], int *r_tri_a_edge_isect_count)
Definition: math_geom.c:2384
MINLINE float dot_shsh(const float a[9], const float b[9])
float dist_squared_ray_to_seg_v3(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], float r_point[3], float *r_depth)
Definition: math_geom.c:622
int isect_seg_seg_v2_point(const float v0[2], const float v1[2], const float v2[2], const float v3[2], float vi[2])
Definition: math_geom.c:1353
float dist_squared_ray_to_aabb_v3(const struct DistRayAABB_Precalc *data, const float bb_min[3], const float bb_max[3], float r_point[3], float *r_depth)
Definition: math_geom.c:713
void barycentric_weights_v2_quad(const float v1[2], const float v2[2], const float v3[2], const float v4[2], const float co[2], float w[4])
Definition: math_geom.c:4026
int isect_line_sphere_v2(const float l1[2], const float l2[2], const float sp[2], const float r, float r_p1[2], float r_p2[2])
Definition: math_geom.c:1494
float geodesic_distance_propagate_across_triangle(const float v0[3], const float v1[3], const float v2[3], const float dist1, const float dist2)
Definition: math_geom.c:6264
int box_clip_bounds_m4(float boundbox[2][3], const float bounds[4], float winmat[4][4])
Definition: math_geom.c:5139
bool isect_planes_v3_fn(const float planes[][4], const int planes_len, const float eps_coplanar, const float eps_isect, void(*callback_fn)(const float co[3], int i, int j, int k, void *user_data), void *user_data)
Definition: math_geom.c:2312
MINLINE float area_tri_signed_v2(const float v1[2], const float v2[2], const float v3[2])
float cubic_tangent_factor_circle_v3(const float tan_l[3], const float tan_r[3])
Definition: math_geom.c:6229
int isect_seg_seg_v2_point_ex(const float v0[2], const float v1[2], const float v2[2], const float v3[2], const float endpoint_bias, float vi[2])
Definition: math_geom.c:1252
float line_point_factor_v3(const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:3449
float dist_squared_to_ray_v3_normalized(const float ray_origin[3], const float ray_direction[3], const float co[3])
Definition: math_geom.c:600
float area_squared_quad_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:106
MINLINE float shell_v2v2_mid_normalized_to_dist(const float a[2], const float b[2])
void limit_dist_v3(float v1[3], float v2[3], const float dist)
Definition: math_geom.c:3494
bool barycentric_coords_v2(const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
Definition: math_geom.c:3913
int isect_line_line_v2_point(const float v0[2], const float v1[2], const float v2[2], const float v3[2], float r_vi[2])
Definition: math_geom.c:1127
MINLINE int min_axis_v3(const float vec[3])
void closest_to_plane_v3(float r_close[3], const float plane[4], const float pt[3])
Definition: math_geom.c:405
void plane_to_point_vector_v3(const float plane[4], float r_plane_co[3], float r_plane_no[3])
Definition: math_geom.c:252
float cross_poly_v2(const float verts[][2], unsigned int nr)
Definition: math_geom.c:171
float closest_to_line_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:3371
MINLINE float shell_angle_to_dist(const float angle)
MINLINE void copy_sh_sh(float r[9], const float a[9])
float dist_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:347
void map_to_tube(float *r_u, float *r_v, const float x, const float y, const float z)
Definition: math_geom.c:5221
float closest_to_line_v3(float r_close[3], const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:3364
MINLINE void zero_sh(float r[9])
void map_to_plane_v2_v3v3(float r_co[2], const float co[3], const float no[3])
Definition: math_geom.c:5256
void planes_from_projmat(const float mat[4][4], float left[4], float right[4], float top[4], float bottom[4], float near[4], float far[4])
Definition: math_geom.c:4911
bool is_quad_convex_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2])
Definition: math_geom.c:6133
float cotangent_tri_weight_v3(const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:220
void resolve_quad_uv_v2_deriv(float r_uv[2], float r_deriv[2][2], const float st[2], const float st0[2], const float st1[2], const float st2[2], const float st3[2])
Definition: math_geom.c:4631
bool isect_ray_ray_epsilon_v3(const float ray_origin_a[3], const float ray_direction_a[3], const float ray_origin_b[3], const float ray_direction_b[3], const float epsilon, float *r_lambda_a, float *r_lambda_b)
Definition: math_geom.c:3174
void barycentric_weights_v2_persp(const float v1[4], const float v2[4], const float v3[4], const float co[2], float w[3])
Definition: math_geom.c:3998
void closest_to_line_segment_v3(float r_close[3], const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:375
float dist_to_line_v3(const float p[3], const float l1[3], const float l2[3])
Definition: math_geom.c:515
float ray_point_factor_v3_ex(const float p[3], const float ray_origin[3], const float ray_direction[3], const float epsilon, const float fallback)
Definition: math_geom.c:3408
float dist_signed_squared_to_plane_v3(const float p[3], const float plane[4])
Definition: math_geom.c:433
int interp_sparse_array(float *array, const int list_size, const float skipval)
Definition: math_geom.c:4182
bool isect_line_plane_v3(float r_isect_co[3], const float l1[3], const float l2[3], const float plane_co[3], const float plane_no[3]) ATTR_WARN_UNUSED_RESULT
Definition: math_geom.c:2191
void orthographic_m4(float mat[4][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
Definition: math_geom.c:4802
bool isect_plane_plane_plane_v3(const float plane_a[4], const float plane_b[4], const float plane_c[4], float r_isect_co[3]) ATTR_WARN_UNUSED_RESULT
Definition: math_geom.c:2221
bool isect_ray_tri_epsilon_v3(const float ray_origin[3], const float ray_direction[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2], const float epsilon)
Definition: math_geom.c:1830
float dist_squared_to_line_v2(const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:324
bool form_factor_visible_quad(const float p[3], const float n[3], const float v0[3], const float v1[3], const float v2[3], float q0[3], float q1[3], float q2[3], float q3[3])
Definition: math_geom.c:5624
int isect_seg_seg_v2_int(const int v1[2], const int v2[2], const int v3[2], const int v4[2])
Definition: math_geom.c:1104
float normal_poly_v3(float n[3], const float verts[][3], unsigned int nr)
Definition: math_geom.c:94
int isect_point_tri_v2(const float pt[2], const float v1[2], const float v2[2], const float v3[2])
Definition: math_geom.c:1595
bool is_poly_convex_v2(const float verts[][2], unsigned int nr)
Definition: math_geom.c:6139
float normal_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:51
bool isect_axial_line_segment_tri_v3(const int axis, const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda)
Definition: math_geom.c:2981
bool isect_line_segment_tri_v3(const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2])
Definition: math_geom.c:1645
float area_quad_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:100
float area_poly_v2(const float verts[][2], unsigned int nr)
Definition: math_geom.c:204
bool clip_segment_v3_plane_n(const float p1[3], const float p2[3], const float plane_array[][4], const int plane_tot, float r_p1[3], float r_p2[3])
Definition: math_geom.c:3679
float dist_to_line_v2(const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:332
void plane_to_point_vector_v3_normalized(const float plane[4], float r_plane_co[3], float r_plane_no[3])
Definition: math_geom.c:261
int isect_aabb_planes_v3(const float(*planes)[4], const int totplane, const float bbmin[3], const float bbmax[3])
Definition: math_geom.c:2766
MINLINE int max_axis_v3(const float vec[3])
void interp_bilinear_quad_v3(float data[4][3], float u, float v, float res[3])
Definition: math_geom.c:4766
bool isect_point_planes_v3_negated(const float(*planes)[4], const int totplane, const float p[3])
Definition: math_geom.c:2169
bool isect_point_tri_prism_v3(const float p[3], const float v1[3], const float v2[3], const float v3[3])
Definition: math_geom.c:3589
void map_to_plane_axis_angle_v2_v3v3fl(float r_co[2], const float co[3], const float axis[3], const float angle)
Definition: math_geom.c:5267
bool isect_ray_plane_v3(const float ray_origin[3], const float ray_direction[3], const float plane[4], float *r_lambda, const bool clip)
Definition: math_geom.c:1808
float dist_signed_to_plane3_v3(const float p[3], const float plane[4])
float volume_tetrahedron_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3])
Definition: math_geom.c:274
float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2])
Definition: math_geom.c:338
void box_minmax_bounds_m4(float min[3], float max[3], float boundbox[2][3], float mat[4][4])
Definition: math_geom.c:5198
MINLINE void axis_dominant_v3(int *r_axis_a, int *r_axis_b, const float axis[3])
bool isect_point_planes_v3(float(*planes)[4], int totplane, const float p[3])
Definition: math_geom.c:2152
MINLINE float eval_shv3(float r[9], const float v[3])
float dist_signed_squared_to_corner_v3v3v3(const float p[3], const float v1[3], const float v2[3], const float v3[3], const float axis_ref[3])
Definition: math_geom.c:543
#define MINLINE
_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 y1
_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 x2
_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 right
_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 i1
_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 top
_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 const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
_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 bottom
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition: btDbvt.cpp:299
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
Definition: btVector3.h:356
void * user_data
static float verts[][3]
uint pos
IconTextureDrawCall normal
static int left
static unsigned a[3]
Definition: RandGen.cpp:92
static double epsilon
#define min(a, b)
Definition: sort.c:51
float max