replace len_v3v3 with len_squared_v3v3 for comparisons.
This commit is contained in:
@@ -3172,6 +3172,8 @@ void BKE_nurb_handles_test(Nurb *nu, const bool use_handle)
|
|||||||
void BKE_nurb_handles_autocalc(Nurb *nu, int flag)
|
void BKE_nurb_handles_autocalc(Nurb *nu, int flag)
|
||||||
{
|
{
|
||||||
/* checks handle coordinates and calculates type */
|
/* checks handle coordinates and calculates type */
|
||||||
|
const float eps = 0.0001f;
|
||||||
|
const float eps_sq = eps * eps;
|
||||||
|
|
||||||
BezTriple *bezt2, *bezt1, *bezt0;
|
BezTriple *bezt2, *bezt1, *bezt0;
|
||||||
int i, align, leftsmall, rightsmall;
|
int i, align, leftsmall, rightsmall;
|
||||||
@@ -3191,18 +3193,18 @@ void BKE_nurb_handles_autocalc(Nurb *nu, int flag)
|
|||||||
if (flag == 0 || (bezt1->f1 & flag) ) {
|
if (flag == 0 || (bezt1->f1 & flag) ) {
|
||||||
bezt1->h1 = HD_FREE;
|
bezt1->h1 = HD_FREE;
|
||||||
/* distance too short: vectorhandle */
|
/* distance too short: vectorhandle */
|
||||||
if (len_v3v3(bezt1->vec[1], bezt0->vec[1]) < 0.0001f) {
|
if (len_squared_v3v3(bezt1->vec[1], bezt0->vec[1]) < eps_sq) {
|
||||||
bezt1->h1 = HD_VECT;
|
bezt1->h1 = HD_VECT;
|
||||||
leftsmall = 1;
|
leftsmall = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* aligned handle? */
|
/* aligned handle? */
|
||||||
if (dist_to_line_v2(bezt1->vec[1], bezt1->vec[0], bezt1->vec[2]) < 0.0001f) {
|
if (dist_to_line_v2(bezt1->vec[1], bezt1->vec[0], bezt1->vec[2]) < eps) {
|
||||||
align = 1;
|
align = 1;
|
||||||
bezt1->h1 = HD_ALIGN;
|
bezt1->h1 = HD_ALIGN;
|
||||||
}
|
}
|
||||||
/* or vector handle? */
|
/* or vector handle? */
|
||||||
if (dist_to_line_v2(bezt1->vec[0], bezt1->vec[1], bezt0->vec[1]) < 0.0001f)
|
if (dist_to_line_v2(bezt1->vec[0], bezt1->vec[1], bezt0->vec[1]) < eps)
|
||||||
bezt1->h1 = HD_VECT;
|
bezt1->h1 = HD_VECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3210,7 +3212,7 @@ void BKE_nurb_handles_autocalc(Nurb *nu, int flag)
|
|||||||
if (flag == 0 || (bezt1->f3 & flag) ) {
|
if (flag == 0 || (bezt1->f3 & flag) ) {
|
||||||
bezt1->h2 = HD_FREE;
|
bezt1->h2 = HD_FREE;
|
||||||
/* distance too short: vectorhandle */
|
/* distance too short: vectorhandle */
|
||||||
if (len_v3v3(bezt1->vec[1], bezt2->vec[1]) < 0.0001f) {
|
if (len_squared_v3v3(bezt1->vec[1], bezt2->vec[1]) < eps_sq) {
|
||||||
bezt1->h2 = HD_VECT;
|
bezt1->h2 = HD_VECT;
|
||||||
rightsmall = 1;
|
rightsmall = 1;
|
||||||
}
|
}
|
||||||
@@ -3219,7 +3221,7 @@ void BKE_nurb_handles_autocalc(Nurb *nu, int flag)
|
|||||||
if (align) bezt1->h2 = HD_ALIGN;
|
if (align) bezt1->h2 = HD_ALIGN;
|
||||||
|
|
||||||
/* or vector handle? */
|
/* or vector handle? */
|
||||||
if (dist_to_line_v2(bezt1->vec[2], bezt1->vec[1], bezt2->vec[1]) < 0.0001f)
|
if (dist_to_line_v2(bezt1->vec[2], bezt1->vec[1], bezt2->vec[1]) < eps)
|
||||||
bezt1->h2 = HD_VECT;
|
bezt1->h2 = HD_VECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user