add positive_mod() utility function.

This commit is contained in:
2013-09-05 10:12:00 +00:00
parent c84b18790d
commit 96c668b1dd
3 changed files with 7 additions and 2 deletions

View File

@@ -222,6 +222,7 @@ MINLINE int power_of_2_max_i(int n);
MINLINE int power_of_2_min_i(int n);
MINLINE int divide_round_i(int a, int b);
MINLINE int positive_mod(int i, int n);
MINLINE float shell_angle_to_dist(const float angle);

View File

@@ -153,6 +153,11 @@ MINLINE int divide_round_i(int a, int b)
return (2 * a + b) / (2 * b);
}
MINLINE int positive_mod(int i, int n)
{
return ((i = i % n) < 0) ? i + n : i;
}
MINLINE unsigned int highest_order_bit_i(unsigned int n)
{
n |= (n >> 1);

View File

@@ -273,8 +273,7 @@ static void bridge_loop_pair(BMesh *bm,
if (twist_offset != 0) {
const int len_b = BM_edgeloop_length_get(el_store_b);
ListBase *lb_b = BM_edgeloop_verts_get(el_store_b);
const int offset = twist_offset % len_b;
LinkData *el_b = BLI_rfindlink(lb_b, (offset < 0) ? (offset + len_b) : offset);
LinkData *el_b = BLI_rfindlink(lb_b, positive_mod(twist_offset, len_b));
BLI_rotatelist(lb_b, el_b);
}
}