From bef86e261cb9e8038894d38ee12690e47bee0dd5 Mon Sep 17 00:00:00 2001 From: Richard Brice <37087370+RickBrice@users.noreply.github.com> Date: Wed, 1 Nov 2023 08:34:58 -0700 Subject: [PATCH] Renamed interpolate to compute_adjustment and made it a template function. --- src/ifcgeom/mapping/IfcCurveSegment.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ifcgeom/mapping/IfcCurveSegment.cpp b/src/ifcgeom/mapping/IfcCurveSegment.cpp index db80fee16c..e52fd26cab 100644 --- a/src/ifcgeom/mapping/IfcCurveSegment.cpp +++ b/src/ifcgeom/mapping/IfcCurveSegment.cpp @@ -35,7 +35,8 @@ auto sign = [](double v) -> int { return v < 0 ? -1 : 1; }; auto binary_sign = [](double v) -> int { return v < 0 ? -1 : (0 < v ? 1 : 0); }; // returns -1, 0, or 1 // @todo change the calculation at end of this to std::lerp when upgrading to C++ 20 -auto interpolate = [](double u, double a, double b, double l) -> double { return l == 0.0 ? 0.0 : u * (b - a) / l; }; +template +auto compute_adjustment = [](double u, const T& a, const T& b, double l) -> double { return l == 0.0 ? 0.0 : u * (b - a) / l; }; } // namespace @@ -154,8 +155,8 @@ class linear_segment_geometry_adjuster : public segment_geometry_adjuster { auto xs = start_next.col(3)(0); auto ys = start_next.col(3)(1); auto length = get_length(); - auto x = interpolate(u,xe,xs,length); - auto y = interpolate(u,ye,ys,length); + auto x = compute_adjustment(u, xe, xs, length); + auto y = compute_adjustment(u, ye, ys, length); p.col(3)(0) += x; p.col(3)(1) += y; @@ -168,8 +169,8 @@ class linear_segment_geometry_adjuster : public segment_geometry_adjuster { auto dye = end_this.col(i)(1); auto dxs = start_next.col(i)(0); auto dys = start_next.col(i)(1); - auto dx = interpolate(u,dxe,dxs,length); - auto dy = interpolate(u,dye,dys,length); + auto dx = compute_adjustment(u,dxe,dxs,length); + auto dy = compute_adjustment(u,dye,dys,length); p.col(i)(0) += dx; p.col(i)(1) += dy; }