Techdraw: Use std::numeric_limits and std::numbers instead of defines

This commit is contained in:
Benjamin Nauck
2025-03-27 19:02:45 +01:00
parent 41756a3726
commit cf94011294
40 changed files with 243 additions and 220 deletions

View File

@@ -657,7 +657,7 @@ Ellipse::Ellipse(Base::Vector3d c, double mnr, double mjr)
Base::Console().Message("G:Ellipse - failed to make Ellipse\n");
}
const Handle(Geom_Ellipse) gEllipse = me.Value();
BRepBuilderAPI_MakeEdge mkEdge(gEllipse, 0.0, 2 * M_PI);
BRepBuilderAPI_MakeEdge mkEdge(gEllipse, 0.0, 2 * std::numbers::pi);
if (mkEdge.IsDone()) {
occEdge = mkEdge.Edge();
}
@@ -686,10 +686,10 @@ AOE::AOE(const TopoDS_Edge &e) : Ellipse(e)
e.GetMessageString());
}
startAngle = fmod(f, 2.0*M_PI);
endAngle = fmod(l, 2.0*M_PI);
startAngle = fmod(f, 2.0*std::numbers::pi);
endAngle = fmod(l, 2.0*std::numbers::pi);
cw = (a < 0) ? true: false;
largeArc = (l-f > M_PI) ? true : false;
largeArc = (l-f > std::numbers::pi) ? true : false;
startPnt = Base::Vector3d(s.X(), s.Y(), s.Z());
endPnt = Base::Vector3d(ePt.X(), ePt.Y(), ePt.Z());
@@ -709,6 +709,8 @@ Circle::Circle()
Circle::Circle(Base::Vector3d c, double r)
{
using std::numbers::pi;
geomType = GeomType::CIRCLE;
radius = r;
center = c;
@@ -722,7 +724,7 @@ Circle::Circle(Base::Vector3d c, double r)
double angle2 = 360.0;
Handle(Geom_Circle) hCircle = new Geom_Circle (circle);
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, angle1*(M_PI/180), angle2*(M_PI/180));
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, angle1*(pi/180), angle2*(pi/180));
TopoDS_Edge edge = aMakeEdge.Edge();
occEdge = edge;
}
@@ -794,12 +796,12 @@ AOC::AOC(const TopoDS_Edge &e) : Circle(e)
// this is the wrong determination of cw/ccw. needs to be determined by edge.
double a = v3.DotCross(v1, v2); //error if v1 = v2?
startAngle = fmod(f, 2.0*M_PI);
endAngle = fmod(l, 2.0*M_PI);
startAngle = fmod(f, 2.0*std::numbers::pi);
endAngle = fmod(l, 2.0*std::numbers::pi);
cw = (a < 0) ? true: false;
largeArc = (fabs(l-f) > M_PI) ? true : false;
largeArc = (fabs(l-f) > std::numbers::pi) ? true : false;
startPnt = Base::convertTo<Base::Vector3d>(s);
endPnt = Base::convertTo<Base::Vector3d>(ePt);
@@ -823,7 +825,7 @@ AOC::AOC(Base::Vector3d c, double r, double sAng, double eAng) : Circle()
circle.SetRadius(r);
Handle(Geom_Circle) hCircle = new Geom_Circle (circle);
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, sAng*(M_PI/180), eAng*(M_PI/180));
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, sAng*(std::numbers::pi/180), eAng*(std::numbers::pi/180));
TopoDS_Edge edge = aMakeEdge.Edge();
occEdge = edge;
@@ -844,10 +846,10 @@ AOC::AOC(Base::Vector3d c, double r, double sAng, double eAng) : Circle()
// this cw flag is a problem. we should just declare that arcs are always ccw and flip the start and end angles.
double a = v3.DotCross(v1, v2); //error if v1 = v2?
startAngle = fmod(f, 2.0*M_PI);
endAngle = fmod(l, 2.0*M_PI);
startAngle = fmod(f, 2.0*std::numbers::pi);
endAngle = fmod(l, 2.0*std::numbers::pi);
cw = (a < 0) ? true: false;
largeArc = (fabs(l-f) > M_PI) ? true : false;
largeArc = (fabs(l-f) > std::numbers::pi) ? true : false;
startPnt = Base::convertTo<Base::Vector3d>(s);
endPnt = Base::convertTo<Base::Vector3d>(ePt);
@@ -866,7 +868,7 @@ AOC::AOC() : Circle()
endPnt = Base::Vector3d(0.0, 0.0, 0.0);
midPnt = Base::Vector3d(0.0, 0.0, 0.0);
startAngle = 0.0;
endAngle = 2.0 * M_PI;
endAngle = 2.0 * std::numbers::pi;
cw = false;
largeArc = false;
@@ -1095,7 +1097,7 @@ double Generic::slope()
{
Base::Vector3d v = asVector();
if (v.x == 0.0) {
return DOUBLE_MAX;
return std::numeric_limits<double>::max();
} else {
return v.y/v.x;
}
@@ -1146,11 +1148,11 @@ BSpline::BSpline(const TopoDS_Edge &e)
startAngle = atan2(startPnt.y, startPnt.x);
if (startAngle < 0) {
startAngle += 2.0 * M_PI;
startAngle += 2.0 * std::numbers::pi;
}
endAngle = atan2(endPnt.y, endPnt.x);
if (endAngle < 0) {
endAngle += 2.0 * M_PI;
endAngle += 2.0 * std::numbers::pi;
}
Standard_Real tol3D = 0.001; //1/1000 of a mm? screen can't resolve this
@@ -1473,7 +1475,7 @@ TopoDS_Edge GeometryUtils::edgeFromCircle(TechDraw::CirclePtr c)
circle.SetAxis(axis);
circle.SetRadius(c->radius);
Handle(Geom_Circle) hCircle = new Geom_Circle (circle);
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, 0.0, 2.0 * M_PI);
BRepBuilderAPI_MakeEdge aMakeEdge(hCircle, 0.0, 2.0 * std::numbers::pi);
return aMakeEdge.Edge();
}