diff options
Diffstat (limited to 'source/blender/blenkernel/intern/mask.c')
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 3a3ad9ef051..a3f122115d8 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -1893,10 +1893,17 @@ static void interp_weights_uv_v2_calc(float r_uv[2], const float pt_a[2], const float pt_b[2]) { + const float segment_len = len_v2v2(pt_a, pt_b); + if (segment_len == 0.0f) { + r_uv[0] = 1.0f; + r_uv[1] = 0.0f; + return; + } + float pt_on_line[2]; r_uv[0] = closest_to_line_v2(pt_on_line, pt, pt_a, pt_b); - r_uv[1] = (len_v2v2(pt_on_line, pt) / len_v2v2(pt_a, pt_b)) * + r_uv[1] = (len_v2v2(pt_on_line, pt) / segment_len) * /* This line only sets the sign. */ ((line_point_side_v2(pt_a, pt_b, pt) < 0.0f) ? -1.0f : 1.0f); } |