edit definitions to use const for non modified args, also correct incorrect definition for clip_line_plane().

This commit is contained in:
Campbell Barton 2011-04-20 06:47:16 +00:00
parent b5a2d7f15e
commit 66f5ac408e
3 changed files with 112 additions and 113 deletions

@ -44,8 +44,8 @@ extern "C" {
/********************************** Polygons *********************************/ /********************************** Polygons *********************************/
void cent_tri_v3(float r[3], float a[3], float b[3], float c[3]); void cent_tri_v3(float r[3], const float a[3], const float b[3], const float c[3]);
void cent_quad_v3(float r[3], float a[3], float b[3], float c[3], float d[3]); void cent_quad_v3(float r[3], const float a[3], const float b[3], const float c[3], const float d[3]);
float normal_tri_v3(float r[3], const float a[3], const float b[3], const float c[3]); float normal_tri_v3(float r[3], const float a[3], const float b[3], const float c[3]);
float normal_quad_v3(float r[3], const float a[3], const float b[3], const float c[3], const float d[3]); float normal_quad_v3(float r[3], const float a[3], const float b[3], const float c[3], const float d[3]);
@ -54,17 +54,17 @@ float area_tri_v2(const float a[2], const float b[2], const float c[2]);
float area_tri_signed_v2(const float v1[2], const float v2[2], const float v3[2]); float area_tri_signed_v2(const float v1[2], const float v2[2], const float v3[2]);
float area_tri_v3(const float a[3], const float b[3], const float c[3]); float area_tri_v3(const float a[3], const float b[3], const float c[3]);
float area_quad_v3(const float a[3], const float b[3], const float c[3], const float d[3]); float area_quad_v3(const float a[3], const float b[3], const float c[3], const float d[3]);
float area_poly_v3(int nr, float verts[][3], float normal[3]); float area_poly_v3(int nr, float verts[][3], const float normal[3]);
/********************************* Distance **********************************/ /********************************* Distance **********************************/
float dist_to_line_v2(float p[2], float l1[2], float l2[2]); float dist_to_line_v2(const float p[2], const float l1[2], const float l2[2]);
float dist_to_line_segment_v2(float p[2], float l1[2], float l2[2]); float dist_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2]);
float dist_to_line_segment_v3(float p[3], float l1[3], float l2[3]); float dist_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3]);
float closest_to_line_v3(float r[3], const float p[3], const float l1[3], const float l2[3]); float closest_to_line_v3(float r[3], const float p[3], const float l1[3], const float l2[3]);
float closest_to_line_v2(float r[2], const float p[2], const float l1[2], const float l2[2]); float closest_to_line_v2(float r[2], const float p[2], const float l1[2], const float l2[2]);
void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]); void closest_to_line_segment_v3(float r[3], const float p[3], const float l1[3], const float l2[3]);
/******************************* Intersection ********************************/ /******************************* Intersection ********************************/
@ -78,7 +78,7 @@ void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]
int isect_line_line_v2(const float a1[2], const float a2[2], const float b1[2], const float b2[2]); int isect_line_line_v2(const float a1[2], const float a2[2], const float b1[2], const float b2[2]);
int isect_line_line_v2_short(const short a1[2], const short a2[2], const short b1[2], const short b2[2]); int isect_line_line_v2_short(const short a1[2], const short a2[2], const short b1[2], const short b2[2]);
int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2]); int isect_seg_seg_v2_point(const float v1[2], const float v2[2], const float v3[2], const float v4[2], float vi[2]);
/* Returns the number of point of interests /* Returns the number of point of interests
* 0 - lines are colinear * 0 - lines are colinear
@ -92,51 +92,51 @@ int isect_line_line_strict_v3(float v1[3], float v2[3],
float v3[3], float v4[3], float vi[3], float *lambda); float v3[3], float v4[3], float vi[3], float *lambda);
/* line/ray triangle */ /* line/ray triangle */
int isect_line_tri_v3(float p1[3], float p2[3], int isect_line_tri_v3(const float p1[3], const float p2[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv); const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2]);
int isect_ray_tri_v3(float p1[3], float d[3], int isect_ray_tri_v3(const float p1[3], const float d[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv); const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2]);
int isect_ray_tri_threshold_v3(float p1[3], float d[3], int isect_ray_tri_threshold_v3(const float p1[3], const float d[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold); const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2], const float threshold);
int isect_ray_tri_epsilon_v3(float p1[3], float d[3], int isect_ray_tri_epsilon_v3(const float p1[3], const float d[3],
float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon); const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2], const float epsilon);
/* point in polygon */ /* point in polygon */
int isect_point_quad_v2(float p[2], float a[2], float b[2], float c[2], float d[2]); int isect_point_quad_v2(const float p[2], const float a[2], const float b[2], const float c[2], const float d[2]);
int isect_point_tri_v2(float v1[2], float v2[2], float v3[2], float pt[2]); int isect_point_tri_v2(const float v1[2], const float v2[2], const float v3[2], const float pt[2]);
int isect_point_tri_v2_int(int x1, int y1, int x2, int y2, int a, int b); int isect_point_tri_v2_int(const int x1, const int y1, const int x2, const int y2, const int a, const int b);
int isect_point_tri_prism_v3(float p[3], float v1[3], float v2[3], float v3[3]); int isect_point_tri_prism_v3(const float p[3], const float v1[3], const float v2[3], const float v3[3]);
void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], void isect_point_quad_uv_v2(const float v0[2], const float v1[2], const float v2[2], const float v3[2],
float pt[2], float *uv); const float pt[2], float *uv);
void isect_point_face_uv_v2(int isquad, float v0[2], float v1[2], float v2[2], void isect_point_face_uv_v2(const int isquad, const float v0[2], const float v1[2], const float v2[2],
float v3[2], float pt[2], float *uv); const float v3[2], const float pt[2], float *uv);
/* other */ /* other */
int isect_sweeping_sphere_tri_v3(float p1[3], float p2[3], float radius, int isect_sweeping_sphere_tri_v3(const float p1[3], const float p2[3], const float radius,
float v0[3], float v1[3], float v2[3], float *lambda, float *ipoint); const float v0[3], const float v1[3], const float v2[3], float *lambda, float ipoint[3]);
int isect_axial_line_tri_v3(int axis, float co1[3], float co2[3], int isect_axial_line_tri_v3(const int axis, const float co1[3], const float co2[3],
float v0[3], float v1[3], float v2[3], float *lambda); const float v0[3], const float v1[3], const float v2[3], float *lambda);
int isect_aabb_aabb_v3(float min1[3], float max1[3], float min2[3], float max2[3]); int isect_aabb_aabb_v3(const float min1[3], const float max1[3], const float min2[3], const float max2[3]);
int clip_line_plane(float clipco[3], float plane[4], float co[3]); int clip_line_plane(float p1[3], float p2[3], const float plane[4]);
void plot_line_v2v2i(int p1[2], int p2[2], int (*callback)(int, int, void *), void *userData); void plot_line_v2v2i(const int p1[2], const int p2[2], int (*callback)(int, int, void *), void *userData);
/****************************** Interpolation ********************************/ /****************************** Interpolation ********************************/
/* tri or quad, d can be NULL */ /* tri or quad, d can be NULL */
void interp_weights_face_v3(float w[4], void interp_weights_face_v3(float w[4],
float a[3], float b[3], float c[3], float d[3], float p[3]); const float a[3], const float b[3], const float c[3], const float d[3], const float p[3]);
void interp_weights_poly_v3(float w[], float v[][3], int n, float p[3]); void interp_weights_poly_v3(float w[], float v[][3], const int n, const float p[3]);
void interp_cubic_v3(float x[3], float v[3], void interp_cubic_v3(float x[3], float v[3],
float x1[3], float v1[3], float x2[3], float v2[3], float t); const float x1[3], const float v1[3], const float x2[3], const float v2[3], const float t);
int interp_sparse_array(float *array, int list_size, float invalid); int interp_sparse_array(float *array, const int list_size, const float invalid);
void barycentric_transform(float pt_tar[3], float const pt_src[3], void barycentric_transform(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_tar_p1[3], const float tri_tar_p2[3], const float tri_tar_p3[3],
@ -152,22 +152,22 @@ void lookat_m4(float mat[4][4], float vx, float vy,
void polarview_m4(float mat[4][4], float dist, float azimuth, void polarview_m4(float mat[4][4], float dist, float azimuth,
float incidence, float twist); float incidence, float twist);
void perspective_m4(float mat[4][4], float left, float right, void perspective_m4(float mat[4][4], const float left, const float right,
float bottom, float top, float nearClip, float farClip); const float bottom, const float top, const float nearClip, const float farClip);
void orthographic_m4(float mat[4][4], float left, float right, void orthographic_m4(float mat[4][4], const float left, const float right,
float bottom, float top, float nearClip, float farClip); const float bottom, const float top, const float nearClip, const float farClip);
void window_translate_m4(float winmat[][4], float perspmat[][4], void window_translate_m4(float winmat[][4], float perspmat[][4],
float x, float y); const float x, const float y);
int box_clip_bounds_m4(float boundbox[2][3], int box_clip_bounds_m4(float boundbox[2][3],
float bounds[4], float winmat[4][4]); const float bounds[4], float winmat[4][4]);
void box_minmax_bounds_m4(float min[3], float max[3], void box_minmax_bounds_m4(float min[3], float max[3],
float boundbox[2][3], float mat[4][4]); float boundbox[2][3], float mat[4][4]);
/********************************** Mapping **********************************/ /********************************** Mapping **********************************/
void map_to_tube(float *u, float *v, float x, float y, float z); void map_to_tube(float *u, float *v, const float x, const float y, const float z);
void map_to_sphere(float *u, float *v, float x, float y, float z); void map_to_sphere(float *u, float *v, const float x, const float y, const float z);
/********************************** Normals **********************************/ /********************************** Normals **********************************/
@ -182,11 +182,11 @@ typedef struct VertexTangent {
float tang[3], uv[2]; float tang[3], uv[2];
} VertexTangent; } VertexTangent;
float *find_vertex_tangent(VertexTangent *vtang, float *uv); float *find_vertex_tangent(VertexTangent *vtang, const float uv[2]);
void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang,
float *tang, float *uv); const float tang[3], const float uv[2]);
void tangent_from_uv(float *uv1, float *uv2, float *uv3, void tangent_from_uv(float uv1[2], float uv2[2], float uv3[2],
float *co1, float *co2, float *co3, float *n, float *tang); float co1[3], float co2[3], float co3[3], float n[3], float tang[3]);
/******************************** Vector Clouds ******************************/ /******************************** Vector Clouds ******************************/
@ -202,14 +202,14 @@ void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,
4 = (2,-2), 5 = (2,-1), 6 = (2,0), 7 = (2,1), 8 = (2,2) */ 4 = (2,-2), 5 = (2,-1), 6 = (2,0), 7 = (2,1), 8 = (2,2) */
MINLINE void zero_sh(float r[9]); MINLINE void zero_sh(float r[9]);
MINLINE void copy_sh_sh(float r[9], float a[9]); MINLINE void copy_sh_sh(float r[9], const float a[9]);
MINLINE void mul_sh_fl(float r[9], float f); MINLINE void mul_sh_fl(float r[9], const float f);
MINLINE void add_sh_shsh(float r[9], float a[9], float b[9]); MINLINE void add_sh_shsh(float r[9], const float a[9], const float b[9]);
MINLINE float eval_shv3(float r[9], float v[3]); MINLINE float eval_shv3(float r[9], const float v[3]);
MINLINE float diffuse_shv3(float r[9], float v[3]); MINLINE float diffuse_shv3(float r[9], const float v[3]);
MINLINE void vec_fac_to_sh(float r[9], float v[3], float f); MINLINE void vec_fac_to_sh(float r[9], const float v[3], const float f);
MINLINE void madd_sh_shfl(float r[9], float sh[3], float f); MINLINE void madd_sh_shfl(float r[9], const float sh[3], const float f);
/********************************* Form Factor *******************************/ /********************************* Form Factor *******************************/

@ -41,14 +41,14 @@
/********************************** Polygons *********************************/ /********************************** Polygons *********************************/
void cent_tri_v3(float *cent, float *v1, float *v2, float *v3) void cent_tri_v3(float cent[3], const float v1[3], const float v2[3], const float v3[3])
{ {
cent[0]= 0.33333f*(v1[0]+v2[0]+v3[0]); cent[0]= 0.33333f*(v1[0]+v2[0]+v3[0]);
cent[1]= 0.33333f*(v1[1]+v2[1]+v3[1]); cent[1]= 0.33333f*(v1[1]+v2[1]+v3[1]);
cent[2]= 0.33333f*(v1[2]+v2[2]+v3[2]); cent[2]= 0.33333f*(v1[2]+v2[2]+v3[2]);
} }
void cent_quad_v3(float *cent, float *v1, float *v2, float *v3, float *v4) void cent_quad_v3(float cent[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
{ {
cent[0]= 0.25f*(v1[0]+v2[0]+v3[0]+v4[0]); cent[0]= 0.25f*(v1[0]+v2[0]+v3[0]+v4[0]);
cent[1]= 0.25f*(v1[1]+v2[1]+v3[1]+v4[1]); cent[1]= 0.25f*(v1[1]+v2[1]+v3[1]+v4[1]);
@ -131,7 +131,7 @@ float area_tri_v3(const float v1[3], const float v2[3], const float v3[3]) /* T
return (len/2.0f); return (len/2.0f);
} }
float area_poly_v3(int nr, float verts[][3], float *normal) float area_poly_v3(int nr, float verts[][3], const float normal[3])
{ {
float x, y, z, area, max; float x, y, z, area, max;
float *cur, *prev; float *cur, *prev;
@ -165,7 +165,7 @@ float area_poly_v3(int nr, float verts[][3], float *normal)
/* distance v1 to line v2-v3 */ /* distance v1 to line v2-v3 */
/* using Hesse formula, NO LINE PIECE! */ /* using Hesse formula, NO LINE PIECE! */
float dist_to_line_v2(float *v1, float *v2, float *v3) float dist_to_line_v2(const float v1[2], const float v2[2], const float v3[2])
{ {
float a[2],deler; float a[2],deler;
@ -179,7 +179,7 @@ float dist_to_line_v2(float *v1, float *v2, float *v3)
} }
/* distance v1 to line-piece v2-v3 */ /* distance v1 to line-piece v2-v3 */
float dist_to_line_segment_v2(float *v1, float *v2, float *v3) float dist_to_line_segment_v2(const float v1[2], const float v2[2], const float v3[2])
{ {
float labda, rc[2], pt[2], len; float labda, rc[2], pt[2], len;
@ -208,11 +208,11 @@ float dist_to_line_segment_v2(float *v1, float *v2, float *v3)
rc[0]= pt[0]-v1[0]; rc[0]= pt[0]-v1[0];
rc[1]= pt[1]-v1[1]; rc[1]= pt[1]-v1[1];
return (float)sqrt(rc[0]*rc[0]+ rc[1]*rc[1]); return sqrtf(rc[0]*rc[0]+ rc[1]*rc[1]);
} }
/* point closest to v1 on line v2-v3 in 3D */ /* point closest to v1 on line v2-v3 in 3D */
void closest_to_line_segment_v3(float *closest, float v1[3], float v2[3], float v3[3]) void closest_to_line_segment_v3(float closest[3], const float v1[3], const float v2[3], const float v3[3])
{ {
float lambda, cp[3]; float lambda, cp[3];
@ -227,7 +227,7 @@ void closest_to_line_segment_v3(float *closest, float v1[3], float v2[3], float
} }
/* distance v1 to line-piece v2-v3 in 3D */ /* distance v1 to line-piece v2-v3 in 3D */
float dist_to_line_segment_v3(float *v1, float *v2, float *v3) float dist_to_line_segment_v3(const float v1[3], const float v2[3], const float v3[3])
{ {
float closest[3]; float closest[3];
@ -239,7 +239,7 @@ float dist_to_line_segment_v3(float *v1, float *v2, float *v3)
/******************************* Intersection ********************************/ /******************************* Intersection ********************************/
/* intersect Line-Line, shorts */ /* intersect Line-Line, shorts */
int isect_line_line_v2_short(const short *v1, const short *v2, const short *v3, const short *v4) int isect_line_line_v2_short(const short v1[2], const short v2[2], const short v3[2], const short v4[2])
{ {
float div, labda, mu; float div, labda, mu;
@ -258,7 +258,7 @@ int isect_line_line_v2_short(const short *v1, const short *v2, const short *v3,
} }
/* intersect Line-Line, floats */ /* intersect Line-Line, floats */
int isect_line_line_v2(const float *v1, const float *v2, const float *v3, const float *v4) int isect_line_line_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2])
{ {
float div, labda, mu; float div, labda, mu;
@ -279,7 +279,7 @@ int isect_line_line_v2(const float *v1, const float *v2, const float *v3, const
/* get intersection point of two 2D segments and return intersection type: /* get intersection point of two 2D segments and return intersection type:
-1: colliniar -1: colliniar
1: intersection */ 1: intersection */
int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2]) int isect_seg_seg_v2_point(const float v1[2], const float v2[2], const float v3[2], const float v4[2], float vi[2])
{ {
float a1, a2, b1, b2, c1, c2, d; float a1, a2, b1, b2, c1, c2, d;
float u, v; float u, v;
@ -354,8 +354,8 @@ int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, co
1: intersection 1: intersection
*/ */
static short IsectLLPt2Df(float x0,float y0,float x1,float y1, static short IsectLLPt2Df(const float x0, const float y0, const float x1, const float y1,
float x2,float y2,float x3,float y3, float *xi,float *yi) const float x2, const float y2, const float x3, const float y3, float *xi,float *yi)
{ {
/* /*
@ -405,7 +405,7 @@ static short IsectLLPt2Df(float x0,float y0,float x1,float y1,
/* point in tri */ /* point in tri */
int isect_point_tri_v2(float pt[2], float v1[2], float v2[2], float v3[2]) int isect_point_tri_v2(const float pt[2], const float v1[2], const float v2[2], const float v3[2])
{ {
if (line_point_side_v2(v1,v2,pt)>=0.0f) { if (line_point_side_v2(v1,v2,pt)>=0.0f) {
if (line_point_side_v2(v2,v3,pt)>=0.0f) { if (line_point_side_v2(v2,v3,pt)>=0.0f) {
@ -424,7 +424,7 @@ int isect_point_tri_v2(float pt[2], float v1[2], float v2[2], float v3[2])
return 0; return 0;
} }
/* point in quad - only convex quads */ /* point in quad - only convex quads */
int isect_point_quad_v2(float pt[2], float v1[2], float v2[2], float v3[2], float v4[2]) int isect_point_quad_v2(const float pt[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
{ {
if (line_point_side_v2(v1,v2,pt)>=0.0f) { if (line_point_side_v2(v1,v2,pt)>=0.0f) {
if (line_point_side_v2(v2,v3,pt)>=0.0f) { if (line_point_side_v2(v2,v3,pt)>=0.0f) {
@ -451,7 +451,7 @@ int isect_point_quad_v2(float pt[2], float v1[2], float v2[2], float v3[2], floa
test if the line starting at p1 ending at p2 intersects the triangle v0..v2 test if the line starting at p1 ending at p2 intersects the triangle v0..v2
return non zero if it does return non zero if it does
*/ */
int isect_line_tri_v3(float p1[3], float p2[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv) int isect_line_tri_v3(const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2])
{ {
float p[3], s[3], d[3], e1[3], e2[3], q[3]; float p[3], s[3], d[3], e1[3], e2[3], q[3];
@ -491,7 +491,7 @@ int isect_line_tri_v3(float p1[3], float p2[3], float v0[3], float v1[3], float
test if the ray starting at p1 going in d direction intersects the triangle v0..v2 test if the ray starting at p1 going in d direction intersects the triangle v0..v2
return non zero if it does return non zero if it does
*/ */
int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv) int isect_ray_tri_v3(const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2])
{ {
float p[3], s[3], e1[3], e2[3], q[3]; float p[3], s[3], e1[3], e2[3], q[3];
float a, f, u, v; float a, f, u, v;
@ -527,7 +527,7 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2
return 1; return 1;
} }
int isect_ray_tri_epsilon_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon) int isect_ray_tri_epsilon_v3(const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2], const float epsilon)
{ {
float p[3], s[3], e1[3], e2[3], q[3]; float p[3], s[3], e1[3], e2[3], q[3];
float a, f, u, v; float a, f, u, v;
@ -561,7 +561,7 @@ int isect_ray_tri_epsilon_v3(float p1[3], float d[3], float v0[3], float v1[3],
return 1; return 1;
} }
int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold) int isect_ray_tri_threshold_v3(const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float *uv, const float threshold)
{ {
float p[3], s[3], e1[3], e2[3], q[3]; float p[3], s[3], e1[3], e2[3], q[3];
float a, f, u, v; float a, f, u, v;
@ -614,7 +614,7 @@ int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3]
/* Adapted from the paper by Kasper Fauerby */ /* Adapted from the paper by Kasper Fauerby */
/* "Improved Collision detection and Response" */ /* "Improved Collision detection and Response" */
static int getLowestRoot(float a, float b, float c, float maxR, float* root) static int getLowestRoot(const float a, const float b, const float c, const float maxR, float *root)
{ {
// Check if a solution exists // Check if a solution exists
float determinant = b*b - 4.0f*a*c; float determinant = b*b - 4.0f*a*c;
@ -651,7 +651,7 @@ static int getLowestRoot(float a, float b, float c, float maxR, float* root)
return 0; return 0;
} }
int isect_sweeping_sphere_tri_v3(float p1[3], float p2[3], float radius, float v0[3], float v1[3], float v2[3], float *lambda, float *ipoint) int 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 *lambda, float ipoint[3])
{ {
float e1[3], e2[3], e3[3], point[3], vel[3], /*dist[3],*/ nor[3], temp[3], bv[3]; float e1[3], e2[3], e3[3], point[3], vel[3], /*dist[3],*/ nor[3], temp[3], bv[3];
float a, b, c, d, e, x, y, z, radius2=radius*radius; float a, b, c, d, e, x, y, z, radius2=radius*radius;
@ -848,7 +848,7 @@ int isect_sweeping_sphere_tri_v3(float p1[3], float p2[3], float radius, float v
return found_by_sweep; return found_by_sweep;
} }
int isect_axial_line_tri_v3(int axis, float p1[3], float p2[3], float v0[3], float v1[3], float v2[3], float *lambda) int isect_axial_line_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 *lambda)
{ {
float p[3], e1[3], e2[3]; float p[3], e1[3], e2[3];
float u, v, f; float u, v, f;
@ -1014,7 +1014,7 @@ int isect_line_line_strict_v3(float v1[3], float v2[3], float v3[3], float v4[3]
} }
} }
int isect_aabb_aabb_v3(float min1[3], float max1[3], float min2[3], float max2[3]) int isect_aabb_aabb_v3(const float min1[3], const float max1[3], const float min2[3], const float max2[3])
{ {
return (min1[0]<max2[0] && min1[1]<max2[1] && min1[2]<max2[2] && return (min1[0]<max2[0] && min1[1]<max2[1] && min1[2]<max2[2] &&
min2[0]<max1[0] && min2[1]<max1[1] && min2[2]<max1[2]); min2[0]<max1[0] && min2[1]<max1[1] && min2[2]<max1[2]);
@ -1058,7 +1058,7 @@ static float lambda_cp_line(float p[3], float l1[3], float l2[3])
#endif #endif
/* Similar to LineIntersectsTriangleUV, except it operates on a quad and in 2d, assumes point is in quad */ /* Similar to LineIntersectsTriangleUV, except it operates on a quad and in 2d, assumes point is in quad */
void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv) void isect_point_quad_uv_v2(const float v0[2], const float v1[2], const float v2[2], const float v3[2], const float pt[2], float *uv)
{ {
float x0,y0, x1,y1, wtot, v2d[2], w1, w2; float x0,y0, x1,y1, wtot, v2d[2], w1, w2;
@ -1152,7 +1152,7 @@ void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2],
} }
/* same as above but does tri's and quads, tri's are a bit of a hack */ /* same as above but does tri's and quads, tri's are a bit of a hack */
void isect_point_face_uv_v2(int isquad, float v0[2], float v1[2], float v2[2], float v3[2], float pt[2], float *uv) void isect_point_face_uv_v2(const int isquad, const float v0[2], const float v1[2], const float v2[2], const float v3[2], const float pt[2], float *uv)
{ {
if (isquad) { if (isquad) {
isect_point_quad_uv_v2(v0, v1, v2, v3, pt, uv); isect_point_quad_uv_v2(v0, v1, v2, v3, pt, uv);
@ -1238,7 +1238,7 @@ int isect_point_tri_v2(float v0[2], float v1[2], float v2[2], float pt[2])
x1,y1-- x2,y1 x1,y1-- x2,y1
*/ */
int isect_point_tri_v2_int(int x1, int y1, int x2, int y2, int a, int b) int isect_point_tri_v2_int(const int x1, const int y1, const int x2, const int y2, const int a, const int b)
{ {
float v1[2], v2[2], v3[2], p[2]; float v1[2], v2[2], v3[2], p[2];
@ -1257,7 +1257,7 @@ int isect_point_tri_v2_int(int x1, int y1, int x2, int y2, int a, int b)
return isect_point_tri_v2(p, v1, v2, v3); return isect_point_tri_v2(p, v1, v2, v3);
} }
static int point_in_slice(float p[3], float v1[3], float l1[3], float l2[3]) static int point_in_slice(const float p[3], const float v1[3], const float l1[3], const float l2[3])
{ {
/* /*
what is a slice ? what is a slice ?
@ -1305,7 +1305,7 @@ static int point_in_slice_m(float p[3],float origin[3],float normal[3],float lns
} }
#endif #endif
int isect_point_tri_prism_v3(float p[3], float v1[3], float v2[3], float v3[3]) int isect_point_tri_prism_v3(const float p[3], const float v1[3], const float v2[3], const float v3[3])
{ {
if(!point_in_slice(p,v1,v2,v3)) return 0; if(!point_in_slice(p,v1,v2,v3)) return 0;
if(!point_in_slice(p,v2,v3,v1)) return 0; if(!point_in_slice(p,v2,v3,v1)) return 0;
@ -1313,7 +1313,7 @@ int isect_point_tri_prism_v3(float p[3], float v1[3], float v2[3], float v3[3])
return 1; return 1;
} }
int clip_line_plane(float p1[3], float p2[3], float plane[4]) int clip_line_plane(float p1[3], float p2[3], const float plane[4])
{ {
float dp[3], n[3], div, t, pc[3]; float dp[3], n[3], div, t, pc[3];
@ -1363,7 +1363,7 @@ int clip_line_plane(float p1[3], float p2[3], float plane[4])
} }
void plot_line_v2v2i(int p1[2], int p2[2], int (*callback)(int, int, void *), void *userData) void plot_line_v2v2i(const int p1[2], const int p2[2], int (*callback)(int, int, void *), void *userData)
{ {
int x1= p1[0]; int x1= p1[0];
int y1= p1[1]; int y1= p1[1];
@ -1429,12 +1429,12 @@ void plot_line_v2v2i(int p1[2], int p2[2], int (*callback)(int, int, void *), vo
/****************************** Interpolation ********************************/ /****************************** Interpolation ********************************/
static float tri_signed_area(float *v1, float *v2, float *v3, int i, int j) static float tri_signed_area(const float v1[3], const float v2[3], const float v3[3], const int i, const int j)
{ {
return 0.5f*((v1[i]-v2[i])*(v2[j]-v3[j]) + (v1[j]-v2[j])*(v3[i]-v2[i])); return 0.5f*((v1[i]-v2[i])*(v2[j]-v3[j]) + (v1[j]-v2[j])*(v3[i]-v2[i]));
} }
static int barycentric_weights(float *v1, float *v2, float *v3, float *co, float *n, float *w) static int barycentric_weights(const float v1[3], const float v2[3], const float v3[3], const float co[3], const float n[3], float w[3])
{ {
float xn, yn, zn, a1, a2, a3, asum; float xn, yn, zn, a1, a2, a3, asum;
short i, j; short i, j;
@ -1468,7 +1468,7 @@ static int barycentric_weights(float *v1, float *v2, float *v3, float *co, float
return 0; return 0;
} }
void interp_weights_face_v3(float *w,float *v1, float *v2, float *v3, float *v4, float *co) void interp_weights_face_v3(float w[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3], const float co[3])
{ {
float w2[3]; float w2[3];
@ -1592,7 +1592,7 @@ void barycentric_transform(float pt_tar[3], float const pt_src[3],
/* given an array with some invalid values this function interpolates valid values /* given an array with some invalid values this function interpolates valid values
* replacing the invalid ones */ * replacing the invalid ones */
int interp_sparse_array(float *array, int list_size, float skipval) int interp_sparse_array(float *array, int const list_size, const float skipval)
{ {
int found_invalid = 0; int found_invalid = 0;
int found_valid = 0; int found_valid = 0;
@ -1672,7 +1672,7 @@ int interp_sparse_array(float *array, int list_size, float skipval)
/* Mean value weights - smooth interpolation weights for polygons with /* Mean value weights - smooth interpolation weights for polygons with
* more than 3 vertices */ * more than 3 vertices */
static float mean_value_half_tan(float *v1, float *v2, float *v3) static float mean_value_half_tan(const float v1[3], const float v2[3], const float v3[3])
{ {
float d2[3], d3[3], cross[3], area, dot, len; float d2[3], d3[3], cross[3], area, dot, len;
@ -1690,7 +1690,7 @@ static float mean_value_half_tan(float *v1, float *v2, float *v3)
return (len - dot)/area; return (len - dot)/area;
} }
void interp_weights_poly_v3(float *w,float v[][3], int n, float *co) void interp_weights_poly_v3(float *w, float v[][3], const int n, const float co[3])
{ {
float totweight, t1, t2, len, *vmid, *vprev, *vnext; float totweight, t1, t2, len, *vmid, *vprev, *vnext;
int i; int i;
@ -1716,7 +1716,7 @@ void interp_weights_poly_v3(float *w,float v[][3], int n, float *co)
} }
/* (x1,v1)(t1=0)------(x2,v2)(t2=1), 0<t<1 --> (x,v)(t) */ /* (x1,v1)(t1=0)------(x2,v2)(t2=1), 0<t<1 --> (x,v)(t) */
void interp_cubic_v3(float *x, float *v,float *x1, float *v1, float *x2, float *v2, float t) 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)
{ {
float a[3],b[3]; float a[3],b[3];
float t2= t*t; float t2= t*t;
@ -1742,7 +1742,7 @@ void interp_cubic_v3(float *x, float *v,float *x1, float *v1, float *x2, float *
/***************************** View & Projection *****************************/ /***************************** View & Projection *****************************/
void orthographic_m4(float matrix[][4],float left, float right, float bottom, float top, float nearClip, float farClip) void orthographic_m4(float matrix[][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
{ {
float Xdelta, Ydelta, Zdelta; float Xdelta, Ydelta, Zdelta;
@ -1761,7 +1761,7 @@ void orthographic_m4(float matrix[][4],float left, float right, float bottom, fl
matrix[3][2] = -(farClip + nearClip)/Zdelta; matrix[3][2] = -(farClip + nearClip)/Zdelta;
} }
void perspective_m4(float mat[][4],float left, float right, float bottom, float top, float nearClip, float farClip) void perspective_m4(float mat[][4],float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
{ {
float Xdelta, Ydelta, Zdelta; float Xdelta, Ydelta, Zdelta;
@ -1786,7 +1786,7 @@ void perspective_m4(float mat[][4],float left, float right, float bottom, float
} }
/* translate a matrix created by orthographic_m4 or perspective_m4 in XY coords (used to jitter the view) */ /* translate a matrix created by orthographic_m4 or perspective_m4 in XY coords (used to jitter the view) */
void window_translate_m4(float winmat[][4], float perspmat[][4], float x, float y) void window_translate_m4(float winmat[][4], float perspmat[][4], const float x, const float y)
{ {
if(winmat[2][3] == -1.0f) { if(winmat[2][3] == -1.0f) {
/* in the case of a win-matrix, this means perspective always */ /* in the case of a win-matrix, this means perspective always */
@ -1890,7 +1890,7 @@ void lookat_m4(float mat[][4],float vx, float vy, float vz, float px, float py,
translate_m4(mat,-vx,-vy,-vz); /* translate viewpoint to origin */ translate_m4(mat,-vx,-vy,-vz); /* translate viewpoint to origin */
} }
int box_clip_bounds_m4(float boundbox[2][3], float bounds[4], float winmat[4][4]) int box_clip_bounds_m4(float boundbox[2][3], const float bounds[4], float winmat[4][4])
{ {
float mat[4][4], vec[4]; float mat[4][4], vec[4];
int a, fl, flag= -1; int a, fl, flag= -1;
@ -1950,7 +1950,7 @@ void box_minmax_bounds_m4(float min[3], float max[3], float boundbox[2][3], floa
/********************************** Mapping **********************************/ /********************************** Mapping **********************************/
void map_to_tube(float *u, float *v,float x, float y, float z) void map_to_tube(float *u, float *v, const float x, const float y, const float z)
{ {
float len; float len;
@ -1963,7 +1963,7 @@ void map_to_tube(float *u, float *v,float x, float y, float z)
*v = *u = 0.0f; /* to avoid un-initialized variables */ *v = *u = 0.0f; /* to avoid un-initialized variables */
} }
void map_to_sphere(float *u, float *v,float x, float y, float z) void map_to_sphere(float *u, float *v, const float x, const float y, const float z)
{ {
float len; float len;
@ -1972,8 +1972,7 @@ void map_to_sphere(float *u, float *v,float x, float y, float z)
if(x==0.0f && y==0.0f) *u= 0.0f; /* othwise domain error */ if(x==0.0f && y==0.0f) *u= 0.0f; /* othwise domain error */
else *u = (1.0f - atan2f(x,y) / (float)M_PI) / 2.0f; else *u = (1.0f - atan2f(x,y) / (float)M_PI) / 2.0f;
z/=len; *v = 1.0f - (float)saacos(z/len)/(float)M_PI;
*v = 1.0f - (float)saacos(z)/(float)M_PI;
} else { } else {
*v = *u = 0.0f; /* to avoid un-initialized variables */ *v = *u = 0.0f; /* to avoid un-initialized variables */
} }
@ -2033,7 +2032,7 @@ void accumulate_vertex_normals(float n1[3], float n2[3], float n3[3],
/* from BKE_mesh.h */ /* from BKE_mesh.h */
#define STD_UV_CONNECT_LIMIT 0.0001f #define STD_UV_CONNECT_LIMIT 0.0001f
void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, float *tang, float *uv) void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, const float tang[3], const float uv[2])
{ {
VertexTangent *vt; VertexTangent *vt;
@ -2056,7 +2055,7 @@ void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, float *tang,
*vtang= vt; *vtang= vt;
} }
float *find_vertex_tangent(VertexTangent *vtang, float *uv) float *find_vertex_tangent(VertexTangent *vtang, const float uv[2])
{ {
VertexTangent *vt; VertexTangent *vt;
static float nulltang[3] = {0.0f, 0.0f, 0.0f}; static float nulltang[3] = {0.0f, 0.0f, 0.0f};
@ -2068,7 +2067,7 @@ float *find_vertex_tangent(VertexTangent *vtang, float *uv)
return nulltang; /* shouldn't happen, except for nan or so */ return nulltang; /* shouldn't happen, except for nan or so */
} }
void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, float *co3, float *n, float *tang) void tangent_from_uv(float uv1[2], float uv2[2], float uv3[3], float co1[3], float co2[3], float co3[3], float n[3], float tang[3])
{ {
float s1= uv2[0] - uv1[0]; float s1= uv2[0] - uv1[0];
float s2= uv3[0] - uv1[0]; float s2= uv3[0] - uv1[0];
@ -2262,14 +2261,14 @@ void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,flo
/******************************* Form Factor *********************************/ /******************************* Form Factor *********************************/
static void vec_add_dir(float r[3], float v1[3], float v2[3], float fac) static void vec_add_dir(float r[3], const float v1[3], const float v2[3], const float fac)
{ {
r[0]= v1[0] + fac*(v2[0] - v1[0]); r[0]= v1[0] + fac*(v2[0] - v1[0]);
r[1]= v1[1] + fac*(v2[1] - v1[1]); r[1]= v1[1] + fac*(v2[1] - v1[1]);
r[2]= v1[2] + fac*(v2[2] - v1[2]); r[2]= v1[2] + fac*(v2[2] - v1[2]);
} }
static int ff_visible_quad(float p[3], float n[3], float v0[3], float v1[3], float v2[3], float q0[3], float q1[3], float q2[3], float q3[3]) static int ff_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])
{ {
static const float epsilon = 1e-6f; static const float epsilon = 1e-6f;
float c, sd[3]; float c, sd[3];
@ -2628,7 +2627,7 @@ static void ff_normalize(float n[3])
} }
} }
static float ff_quad_form_factor(float *p, float *n, float *q0, float *q1, float *q2, float *q3) static float ff_quad_form_factor(const float p[3], const float n[3], const float q0[3], const float q1[3], const float q2[3], const float q3[3])
{ {
float r0[3], r1[3], r2[3], r3[3], g0[3], g1[3], g2[3], g3[3]; float r0[3], r1[3], r2[3], r3[3], g0[3], g1[3], g2[3], g3[3];
float a1, a2, a3, a4, dot1, dot2, dot3, dot4, result; float a1, a2, a3, a4, dot1, dot2, dot3, dot4, result;

@ -42,12 +42,12 @@ MINLINE void zero_sh(float r[9])
memset(r, 0, sizeof(float)*9); memset(r, 0, sizeof(float)*9);
} }
MINLINE void copy_sh_sh(float r[9], float a[9]) MINLINE void copy_sh_sh(float r[9], const float a[9])
{ {
memcpy(r, a, sizeof(float)*9); memcpy(r, a, sizeof(float)*9);
} }
MINLINE void mul_sh_fl(float r[9], float f) MINLINE void mul_sh_fl(float r[9], const float f)
{ {
int i; int i;
@ -55,7 +55,7 @@ MINLINE void mul_sh_fl(float r[9], float f)
r[i] *= f; r[i] *= f;
} }
MINLINE void add_sh_shsh(float r[9], float a[9], float b[9]) MINLINE void add_sh_shsh(float r[9], const float a[9], const float b[9])
{ {
int i; int i;
@ -74,7 +74,7 @@ MINLINE float dot_shsh(float a[9], float b[9])
return r; return r;
} }
MINLINE float diffuse_shv3(float sh[9], float v[3]) MINLINE float diffuse_shv3(float sh[9], const float v[3])
{ {
/* See formula (13) in: /* See formula (13) in:
"An Efficient Representation for Irradiance Environment Maps" */ "An Efficient Representation for Irradiance Environment Maps" */
@ -96,7 +96,7 @@ MINLINE float diffuse_shv3(float sh[9], float v[3])
return sum; return sum;
} }
MINLINE void vec_fac_to_sh(float r[9], float v[3], float f) MINLINE void vec_fac_to_sh(float r[9], const float v[3], const float f)
{ {
/* See formula (3) in: /* See formula (3) in:
"An Efficient Representation for Irradiance Environment Maps" */ "An Efficient Representation for Irradiance Environment Maps" */
@ -122,7 +122,7 @@ MINLINE void vec_fac_to_sh(float r[9], float v[3], float f)
copy_sh_sh(r, sh); copy_sh_sh(r, sh);
} }
MINLINE float eval_shv3(float sh[9], float v[3]) MINLINE float eval_shv3(float sh[9], const float v[3])
{ {
float tmp[9]; float tmp[9];
@ -130,7 +130,7 @@ MINLINE float eval_shv3(float sh[9], float v[3])
return dot_shsh(tmp, sh); return dot_shsh(tmp, sh);
} }
MINLINE void madd_sh_shfl(float r[9], float sh[3], float f) MINLINE void madd_sh_shfl(float r[9], const float sh[3], const float f)
{ {
float tmp[9]; float tmp[9];