From 48c0b8b6b0d598f1af23891f6e3f131b640dc564 Mon Sep 17 00:00:00 2001 From: Deepak Rangarajan Date: Wed, 23 Sep 2020 21:22:09 -0400 Subject: [PATCH 1/2] Switch to atan2 and add assert --- src/csg/levelset_3d.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/csg/levelset_3d.cpp b/src/csg/levelset_3d.cpp index 1f3756c..1abdeaa 100644 --- a/src/csg/levelset_3d.cpp +++ b/src/csg/levelset_3d.cpp @@ -146,11 +146,10 @@ double signed_distance_3d(const LinearExtrude &lin_ext, double xx, double yy, double signed_distance_3d(const RotateExtrude &rot_ext, double xx, double yy, double zz) { - double tt = atan(yy / xx) * DEGREES_PER_RADIAN; - if ((xx < 0 && yy >= 0) || (xx < 0 && yy < 0)) - tt += 180; // Quadrants II & III - else if (xx >= 0 && yy < 0) - tt += 360; // Quadrant IV + double tt = std::atan2(yy, xx) * DEGREES_PER_RADIAN; + tt = tt >= 0 ? tt : 360 + tt; + + assert(tt >= 0 && tt <= 360); //tt must be between 0 and 360 double sign_t = (tt >= 0 && tt <= rot_ext.angle) ? -1.0 : 1.0; double dist_t = std::min(std::fabs(rot_ext.angle - tt), std::fabs(360 - tt)); -- GitLab From 439ee756864b7d03f362fc6a0aeb7b0253e2aa96 Mon Sep 17 00:00:00 2001 From: Deepak Rangarajan Date: Thu, 24 Sep 2020 15:06:41 -0400 Subject: [PATCH 2/2] code review changes --- src/csg/levelset_3d.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/csg/levelset_3d.cpp b/src/csg/levelset_3d.cpp index 1abdeaa..61701ce 100644 --- a/src/csg/levelset_3d.cpp +++ b/src/csg/levelset_3d.cpp @@ -151,8 +151,8 @@ double signed_distance_3d(const RotateExtrude &rot_ext, double xx, double yy, assert(tt >= 0 && tt <= 360); //tt must be between 0 and 360 - double sign_t = (tt >= 0 && tt <= rot_ext.angle) ? -1.0 : 1.0; - double dist_t = std::min(std::fabs(rot_ext.angle - tt), std::fabs(360 - tt)); + double sign_t = (tt <= rot_ext.angle) ? -1.0 : 1.0; + double dist_t = std::min(std::fabs(rot_ext.angle - tt), (360 - tt)); auto XX = std::hypot(xx, yy); auto YY = zz; -- GitLab