[Bf-blender-cvs] [7cbb659] master: Use squared dist /w comparisons (mask, edge-slide)

Campbell Barton noreply at git.blender.org
Fri Mar 27 15:08:13 CET 2015


Commit: 7cbb659400a647d6450470b054ac77518fd40c6a
Author: Campbell Barton
Date:   Fri Mar 27 22:43:19 2015 +1100
Branches: master
https://developer.blender.org/rB7cbb659400a647d6450470b054ac77518fd40c6a

Use squared dist /w comparisons (mask, edge-slide)

===================================================================

M	source/blender/editors/mask/mask_add.c
M	source/blender/editors/transform/transform.c

===================================================================

diff --git a/source/blender/editors/mask/mask_add.c b/source/blender/editors/mask/mask_add.c
index cb47adb..2dae956 100644
--- a/source/blender/editors/mask/mask_add.c
+++ b/source/blender/editors/mask/mask_add.c
@@ -72,7 +72,7 @@ bool ED_mask_find_nearest_diff_point(const bContext *C,
 	MaskLayer *masklay, *point_masklay;
 	MaskSpline *point_spline;
 	MaskSplinePoint *point = NULL;
-	float dist = FLT_MAX, co[2];
+	float dist_best_sq = FLT_MAX, co[2];
 	int width, height;
 	float u;
 	float scalex, scaley;
@@ -123,7 +123,7 @@ bool ED_mask_find_nearest_diff_point(const bContext *C,
 					}
 
 					for (j = 0; j < tot_point - 1; j++) {
-						float cur_dist, a[2], b[2];
+						float dist_sq, a[2], b[2];
 
 						a[0] = points[2 * j] * scalex;
 						a[1] = points[2 * j + 1] * scaley;
@@ -131,16 +131,16 @@ bool ED_mask_find_nearest_diff_point(const bContext *C,
 						b[0] = points[2 * j + 2] * scalex;
 						b[1] = points[2 * j + 3] * scaley;
 
-						cur_dist = dist_to_line_segment_v2(co, a, b);
+						dist_sq = dist_squared_to_line_segment_v2(co, a, b);
 
-						if (cur_dist < dist) {
+						if (dist_sq < dist_best_sq) {
 							if (tangent)
 								sub_v2_v2v2(tangent, &diff_points[2 * j + 2], &diff_points[2 * j]);
 
 							point_masklay = masklay;
 							point_spline = spline;
 							point = use_deform ? &spline->points[(cur_point - spline->points_deform)] : cur_point;
-							dist = cur_dist;
+							dist_best_sq = dist_sq;
 							u = (float)j / tot_point;
 						}
 					}
@@ -154,7 +154,7 @@ bool ED_mask_find_nearest_diff_point(const bContext *C,
 		}
 	}
 
-	if (point && dist < threshold) {
+	if (point && dist_best_sq < threshold) {
 		if (masklay_r)
 			*masklay_r = point_masklay;
 
@@ -174,7 +174,7 @@ bool ED_mask_find_nearest_diff_point(const bContext *C,
 		}
 
 		if (score_r) {
-			*score_r = dist;
+			*score_r = dist_best_sq;
 		}
 
 		return true;
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index f4cb8f7..8b2bc3b 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -5668,7 +5668,7 @@ static bool createEdgeSlideVerts(TransInfo *t)
 	float projectMat[4][4];
 	float mval[2] = {(float)t->mval[0], (float)t->mval[1]};
 	float mval_start[2], mval_end[2];
-	float mval_dir[3], maxdist, (*loop_dir)[3], *loop_maxdist;
+	float mval_dir[3], dist_best_sq, (*loop_dir)[3], *loop_maxdist;
 	int numsel, i, j, loop_nr, l_nr;
 	int use_btree_disp;
 
@@ -5995,7 +5995,7 @@ static bool createEdgeSlideVerts(TransInfo *t)
 	/* find mouse vectors, the global one, and one per loop in case we have
 	 * multiple loops selected, in case they are oriented different */
 	zero_v3(mval_dir);
-	maxdist = -1.0f;
+	dist_best_sq = -1.0f;
 
 	loop_dir = MEM_callocN(sizeof(float) * 3 * loop_nr, "sv loop_dir");
 	loop_maxdist = MEM_mallocN(sizeof(float) * loop_nr, "sv loop_maxdist");
@@ -6005,7 +6005,7 @@ static bool createEdgeSlideVerts(TransInfo *t)
 		if (BM_elem_flag_test(e, BM_ELEM_SELECT)) {
 			BMIter iter2;
 			BMEdge *e2;
-			float d;
+			float dist_sq;
 
 			/* search cross edges for visible edge to the mouse cursor,
 			 * then use the shared vertex to calculate screen vector*/
@@ -6043,19 +6043,19 @@ static bool createEdgeSlideVerts(TransInfo *t)
 					}
 					
 					/* global direction */
-					d = dist_to_line_segment_v2(mval, sco_b, sco_a);
-					if ((maxdist == -1.0f) ||
+					dist_sq = dist_squared_to_line_segment_v2(mval, sco_b, sco_a);
+					if ((dist_best_sq == -1.0f) ||
 					    /* intentionally use 2d size on 3d vector */
-					    (d < maxdist && (len_squared_v2v2(sco_b, sco_a) > 0.1f)))
+					    (dist_sq < dist_best_sq && (len_squared_v2v2(sco_b, sco_a) > 0.1f)))
 					{
-						maxdist = d;
+						dist_best_sq = dist_sq;
 						sub_v3_v3v3(mval_dir, sco_b, sco_a);
 					}
 
 					/* per loop direction */
 					l_nr = sv_array[j].loop_nr;
-					if (loop_maxdist[l_nr] == -1.0f || d < loop_maxdist[l_nr]) {
-						loop_maxdist[l_nr] = d;
+					if (loop_maxdist[l_nr] == -1.0f || dist_sq < loop_maxdist[l_nr]) {
+						loop_maxdist[l_nr] = dist_sq;
 						sub_v3_v3v3(loop_dir[l_nr], sco_b, sco_a);
 					}
 				}




More information about the Bf-blender-cvs mailing list