Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-01-29 05:37:04 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-01-29 05:37:04 +0400
commit3b45518080387e4bf8aeab8729dbc487889b4cac (patch)
treeb3abce7ce1673066e64f4e5152755e3c3fd4d827 /source/blender/editors/transform
parent3fc5002a4a40f9d9d12a624920b4e4d86af227ce (diff)
minor improvement to edge slide, normalize the edge vectors that accumulate the direction, otherwise longer edges would skew the direction.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index b901c14f6ba..a61f03d52b7 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -4890,13 +4890,13 @@ static BMEdge *get_other_edge(BMVert *v, BMEdge *e)
static BMLoop *get_next_loop(BMVert *v, BMLoop *l,
BMEdge *e_prev, BMEdge *e_next, float slide_vec[3])
{
- BMLoop *firstl;
+ BMLoop *l_first;
float vec_accum[3] = {0.0f, 0.0f, 0.0f};
int i = 0;
BLI_assert(BM_edge_share_vert(e_prev, e_next) == v);
- firstl = l;
+ l_first = l;
do {
l = BM_face_other_edge_loop(l->f, l->e, v);
if (l->radial_next == l)
@@ -4931,8 +4931,11 @@ static BMLoop *get_next_loop(BMVert *v, BMLoop *l,
return l;
}
else {
+ /* accumulate the normalized edge vector,
+ * normalize so some edges don't skew the result */
float tvec[3];
sub_v3_v3v3(tvec, BM_edge_other_vert(l->e, v)->co, v->co);
+ normalize_v3(tvec);
add_v3_v3v3(vec_accum, vec_accum, tvec);
i += 1;
}
@@ -4947,7 +4950,7 @@ static BMLoop *get_next_loop(BMVert *v, BMLoop *l,
}
l = l->radial_next;
- } while (l != firstl);
+ } while (l != l_first);
if (i) {
mul_v3_fl(vec_accum, 1.0f / (float)i);