Add mid_v3_v3_array function and remove redundant functions
Other than implementing a `mid_v3_v3_array` function, this removes `cent_tri_v3` and `cent_quad_v3` in favor of `mid_v3_v3v3v3` and `mid_v3_v3v3v3v3` respectively. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D2459
This commit is contained in:
parent
da026249ab
commit
1dbaf0dbcc
|
@ -1909,19 +1909,19 @@ void BKE_mesh_calc_poly_center(
|
|||
const MVert *mvarray, float r_cent[3])
|
||||
{
|
||||
if (mpoly->totloop == 3) {
|
||||
cent_tri_v3(r_cent,
|
||||
mvarray[loopstart[0].v].co,
|
||||
mvarray[loopstart[1].v].co,
|
||||
mvarray[loopstart[2].v].co
|
||||
);
|
||||
mid_v3_v3v3v3(r_cent,
|
||||
mvarray[loopstart[0].v].co,
|
||||
mvarray[loopstart[1].v].co,
|
||||
mvarray[loopstart[2].v].co
|
||||
);
|
||||
}
|
||||
else if (mpoly->totloop == 4) {
|
||||
cent_quad_v3(r_cent,
|
||||
mvarray[loopstart[0].v].co,
|
||||
mvarray[loopstart[1].v].co,
|
||||
mvarray[loopstart[2].v].co,
|
||||
mvarray[loopstart[3].v].co
|
||||
);
|
||||
mid_v3_v3v3v3v3(r_cent,
|
||||
mvarray[loopstart[0].v].co,
|
||||
mvarray[loopstart[1].v].co,
|
||||
mvarray[loopstart[2].v].co,
|
||||
mvarray[loopstart[3].v].co
|
||||
);
|
||||
}
|
||||
else {
|
||||
mesh_calc_ngon_center(mpoly, loopstart, mvarray, r_cent);
|
||||
|
@ -1978,7 +1978,7 @@ static float mesh_calc_poly_planar_area_centroid(
|
|||
tri_area = area_tri_signed_v3(v1, v2, v3, normal);
|
||||
total_area += tri_area;
|
||||
|
||||
cent_tri_v3(tri_cent, v1, v2, v3);
|
||||
mid_v3_v3v3v3(tri_cent, v1, v2, v3);
|
||||
madd_v3_v3fl(r_cent, tri_cent, tri_area);
|
||||
|
||||
copy_v3_v3(v2, v3);
|
||||
|
|
|
@ -44,9 +44,6 @@ extern "C" {
|
|||
|
||||
/********************************** Polygons *********************************/
|
||||
|
||||
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], 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_quad_v3(float r[3], const float a[3], const float b[3], const float c[3], const float d[3]);
|
||||
float normal_poly_v3(float r[3], const float verts[][3], unsigned int nr);
|
||||
|
|
|
@ -234,6 +234,7 @@ void mid_v3_v3v3(float r[3], const float a[3], const float b[3]);
|
|||
void mid_v2_v2v2(float r[2], const float a[2], const float b[2]);
|
||||
void mid_v3_v3v3v3(float v[3], const float v1[3], const float v2[3], const float v3[3]);
|
||||
void mid_v3_v3v3v3v3(float v[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
|
||||
void mid_v3_v3_array(float r[3], const float (*vec_arr)[3], const unsigned int nbr);
|
||||
|
||||
void mid_v3_v3v3_angle_weighted(float r[3], const float a[3], const float b[3]);
|
||||
void mid_v3_angle_weighted(float r[3]);
|
||||
|
|
|
@ -37,20 +37,6 @@
|
|||
|
||||
/********************************** Polygons *********************************/
|
||||
|
||||
void cent_tri_v3(float cent[3], const float v1[3], const float v2[3], const float v3[3])
|
||||
{
|
||||
cent[0] = (v1[0] + v2[0] + v3[0]) / 3.0f;
|
||||
cent[1] = (v1[1] + v2[1] + v3[1]) / 3.0f;
|
||||
cent[2] = (v1[2] + v2[2] + v3[2]) / 3.0f;
|
||||
}
|
||||
|
||||
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[1] = 0.25f * (v1[1] + v2[1] + v3[1] + v4[1]);
|
||||
cent[2] = 0.25f * (v1[2] + v2[2] + v3[2] + v4[2]);
|
||||
}
|
||||
|
||||
void cross_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3])
|
||||
{
|
||||
float n1[3], n2[3];
|
||||
|
|
|
@ -280,6 +280,16 @@ void mid_v3_v3v3v3v3(float v[3], const float v1[3], const float v2[3], const flo
|
|||
v[2] = (v1[2] + v2[2] + v3[2] + v4[2]) / 4.0f;
|
||||
}
|
||||
|
||||
void mid_v3_v3_array(float r[3], const float (*vec_arr)[3], const unsigned int nbr)
|
||||
{
|
||||
const float factor = 1.0f / (float)nbr;
|
||||
zero_v3(r);
|
||||
|
||||
for (unsigned int i = 0; i < nbr; i++) {
|
||||
madd_v3_v3fl(r, vec_arr[i], factor);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized function for calculating normals.
|
||||
* fastpath for:
|
||||
|
|
|
@ -339,7 +339,7 @@ static bool mdisp_in_mdispquad(
|
|||
compute_mdisp_quad(l_dst, l_dst_f_center, v1, v2, v3, v4, e1, e2);
|
||||
|
||||
/* expand quad a bit */
|
||||
cent_quad_v3(c, v1, v2, v3, v4);
|
||||
mid_v3_v3v3v3v3(c, v1, v2, v3, v4);
|
||||
|
||||
sub_v3_v3(v1, c); sub_v3_v3(v2, c);
|
||||
sub_v3_v3(v3, c); sub_v3_v3(v4, c);
|
||||
|
|
|
@ -329,7 +329,7 @@ static void occ_face(const OccFace *face, float co[3], float normal[3], float *a
|
|||
if (vlr->v4)
|
||||
mid_v3_v3v3(co, vlr->v1->co, vlr->v3->co);
|
||||
else
|
||||
cent_tri_v3(co, vlr->v1->co, vlr->v2->co, vlr->v3->co);
|
||||
mid_v3_v3v3v3(co, vlr->v1->co, vlr->v2->co, vlr->v3->co);
|
||||
|
||||
if (obi->flag & R_TRANSFORMED)
|
||||
mul_m4_v3(obi->mat, co);
|
||||
|
@ -1245,7 +1245,7 @@ static void *exec_strandsurface_sample(void *data)
|
|||
normal_quad_v3(n, co1, co2, co3, co4);
|
||||
}
|
||||
else {
|
||||
cent_tri_v3(co, co1, co2, co3);
|
||||
mid_v3_v3v3v3(co, co1, co2, co3);
|
||||
normal_tri_v3(n, co1, co2, co3);
|
||||
}
|
||||
negate_v3(n);
|
||||
|
|
Loading…
Reference in New Issue