BMesh API: optionally pass fallback to BM_edge_calc_face_angle functions

This commit is contained in:
Campbell Barton
2013-12-14 23:18:23 +11:00
parent b43ce8a140
commit ab9fabdfc6
2 changed files with 14 additions and 4 deletions

View File

@@ -1202,7 +1202,7 @@ void BM_loop_calc_face_tangent(BMLoop *l, float r_tangent[3])
*
* \return angle in radians
*/
float BM_edge_calc_face_angle(const BMEdge *e)
float BM_edge_calc_face_angle_ex(const BMEdge *e, const float fallback)
{
if (BM_edge_is_manifold(e)) {
const BMLoop *l1 = e->l;
@@ -1210,9 +1210,13 @@ float BM_edge_calc_face_angle(const BMEdge *e)
return angle_normalized_v3v3(l1->f->no, l2->f->no);
}
else {
return DEG2RADF(90.0f);
return fallback;
}
}
float BM_edge_calc_face_angle(const BMEdge *e)
{
return BM_edge_calc_face_angle_ex(e, DEG2RADF(90.0f));
}
/**
* \brief BMESH EDGE/FACE ANGLE
@@ -1222,7 +1226,7 @@ float BM_edge_calc_face_angle(const BMEdge *e)
*
* \return angle in radians
*/
float BM_edge_calc_face_angle_signed(const BMEdge *e)
float BM_edge_calc_face_angle_signed_ex(const BMEdge *e, const float fallback)
{
if (BM_edge_is_manifold(e)) {
BMLoop *l1 = e->l;
@@ -1231,9 +1235,13 @@ float BM_edge_calc_face_angle_signed(const BMEdge *e)
return BM_edge_is_convex(e) ? angle : -angle;
}
else {
return DEG2RADF(90.0f);
return fallback;
}
}
float BM_edge_calc_face_angle_signed(const BMEdge *e)
{
return BM_edge_calc_face_angle_signed_ex(e, DEG2RADF(90.0f));
}
/**
* \brief BMESH EDGE/FACE TANGENT

View File

@@ -73,7 +73,9 @@ void BM_loop_calc_face_normal(BMLoop *l, float r_normal[3]);
void BM_loop_calc_face_direction(BMLoop *l, float r_normal[3]);
void BM_loop_calc_face_tangent(BMLoop *l, float r_tangent[3]);
float BM_edge_calc_face_angle_ex(const BMEdge *e, const float fallback);
float BM_edge_calc_face_angle(const BMEdge *e);
float BM_edge_calc_face_angle_signed_ex(const BMEdge *e, const float fallback);
float BM_edge_calc_face_angle_signed(const BMEdge *e);
void BM_edge_calc_face_tangent(const BMEdge *e, const BMLoop *e_loop, float r_tangent[3]);