Math Lib: name signed versions of dist_to_plane_v3 explicitly
also add unsigned versions
This commit is contained in:
@@ -473,7 +473,7 @@ static void camera_to_frame_view_cb(const float co[3], void *user_data)
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
float nd = dist_squared_to_plane_v3(co, data->plane_tx[i]);
|
||||
float nd = dist_signed_squared_to_plane_v3(co, data->plane_tx[i]);
|
||||
if (nd < data->dist_vals_sq[i]) {
|
||||
data->dist_vals_sq[i] = nd;
|
||||
}
|
||||
|
||||
@@ -86,8 +86,11 @@ float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const
|
||||
float dist_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2]);
|
||||
void closest_to_line_segment_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2]);
|
||||
|
||||
float dist_squared_to_plane_v3(const float p[3], const float plane[4]);
|
||||
float dist_to_plane_v3(const float p[3], const float plane[4]);
|
||||
float dist_signed_squared_to_plane_v3(const float p[3], const float plane[4]);
|
||||
float dist_squared_to_plane_v3(const float p[3], const float plane[4]);
|
||||
float dist_signed_to_plane_v3(const float p[3], const float plane[4]);
|
||||
float dist_to_plane_v3(const float p[3], const float plane[4]);
|
||||
|
||||
float dist_squared_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3]);
|
||||
float dist_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3]);
|
||||
float dist_squared_to_line_v3(const float p[3], const float l1[3], const float l2[3]);
|
||||
|
||||
@@ -376,24 +376,36 @@ void closest_to_plane_v3(float r_close[3], const float plane[4], const float pt[
|
||||
madd_v3_v3v3fl(r_close, pt, plane, -side / len_sq);
|
||||
}
|
||||
|
||||
float dist_squared_to_plane_v3(const float pt[3], const float plane[4])
|
||||
float dist_signed_squared_to_plane_v3(const float pt[3], const float plane[4])
|
||||
{
|
||||
const float len_sq = len_squared_v3(plane);
|
||||
const float side = plane_point_side_v3(plane, pt);
|
||||
const float fac = side / len_sq;
|
||||
return copysignf(len_sq * (fac * fac), side);
|
||||
}
|
||||
float dist_squared_to_plane_v3(const float pt[3], const float plane[4])
|
||||
{
|
||||
const float len_sq = len_squared_v3(plane);
|
||||
const float side = plane_point_side_v3(plane, pt);
|
||||
const float fac = side / len_sq;
|
||||
/* only difference to code above - no 'copysignf' */
|
||||
return len_sq * (fac * fac);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the signed distance from the point to the plane.
|
||||
*/
|
||||
float dist_to_plane_v3(const float pt[3], const float plane[4])
|
||||
float dist_signed_to_plane_v3(const float pt[3], const float plane[4])
|
||||
{
|
||||
const float len_sq = len_squared_v3(plane);
|
||||
const float side = plane_point_side_v3(plane, pt);
|
||||
const float fac = side / len_sq;
|
||||
return sqrtf(len_sq) * fac;
|
||||
}
|
||||
float dist_to_plane_v3(const float pt[3], const float plane[4])
|
||||
{
|
||||
return fabsf(dist_signed_to_plane_v3(pt, plane));
|
||||
}
|
||||
|
||||
/* distance v1 to line-piece l1-l2 in 3D */
|
||||
float dist_squared_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3])
|
||||
|
||||
@@ -1120,8 +1120,8 @@ static bool knife_ray_intersect_face(KnifeTool_OpData *kcd,
|
||||
/* check if line coplanar with tri */
|
||||
normal_tri_v3(tri_norm, lv1, lv2, lv3);
|
||||
plane_from_point_normal_v3(tri_plane, lv1, tri_norm);
|
||||
if ((fabsf(dist_squared_to_plane_v3(v1, tri_plane)) < KNIFE_FLT_EPS) &&
|
||||
(fabsf(dist_squared_to_plane_v3(v2, tri_plane)) < KNIFE_FLT_EPS))
|
||||
if ((dist_squared_to_plane_v3(v1, tri_plane) < KNIFE_FLT_EPS) &&
|
||||
(dist_squared_to_plane_v3(v2, tri_plane) < KNIFE_FLT_EPS))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -362,7 +362,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
|
||||
|
||||
if (ltmd->flag & MOD_SCREW_UV_STRETCH_V) {
|
||||
for (i = 0, mv_orig = mvert_orig; i < totvert; i++, mv_orig++) {
|
||||
const float v = dist_squared_to_plane_v3(mv_orig->co, uv_axis_plane);
|
||||
const float v = dist_signed_squared_to_plane_v3(mv_orig->co, uv_axis_plane);
|
||||
uv_v_minmax[0] = min_ff(v, uv_v_minmax[0]);
|
||||
uv_v_minmax[1] = max_ff(v, uv_v_minmax[1]);
|
||||
}
|
||||
@@ -897,8 +897,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
|
||||
}
|
||||
|
||||
if (has_mloop_orig == false && mloopuv_layers_tot) {
|
||||
uv_v_offset_a = dist_to_plane_v3(mvert_new[medge_new[i].v1].co, uv_axis_plane);
|
||||
uv_v_offset_b = dist_to_plane_v3(mvert_new[medge_new[i].v2].co, uv_axis_plane);
|
||||
uv_v_offset_a = dist_signed_to_plane_v3(mvert_new[medge_new[i].v1].co, uv_axis_plane);
|
||||
uv_v_offset_b = dist_signed_to_plane_v3(mvert_new[medge_new[i].v2].co, uv_axis_plane);
|
||||
|
||||
if (ltmd->flag & MOD_SCREW_UV_STRETCH_V) {
|
||||
uv_v_offset_a = (uv_v_offset_a - uv_v_minmax[0]) * uv_v_range_inv;
|
||||
|
||||
@@ -1082,7 +1082,7 @@ static PyObject *M_Geometry_distance_point_to_plane(PyObject *UNUSED(self), PyOb
|
||||
}
|
||||
|
||||
plane_from_point_normal_v3(plane, plane_co->vec, plane_no->vec);
|
||||
return PyFloat_FromDouble(dist_to_plane_v3(pt->vec, plane));
|
||||
return PyFloat_FromDouble(dist_signed_to_plane_v3(pt->vec, plane));
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(M_Geometry_barycentric_transform_doc,
|
||||
|
||||
Reference in New Issue
Block a user