Loading src/csg/levelset_3d.cpp +7 −8 Original line number Diff line number Diff line Loading @@ -146,14 +146,13 @@ 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 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 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 <= 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; Loading Loading
src/csg/levelset_3d.cpp +7 −8 Original line number Diff line number Diff line Loading @@ -146,14 +146,13 @@ 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 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 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 <= 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; Loading