fix EPICK implementation

This commit is contained in:
Sébastien Loriot 2024-11-07 16:24:12 +01:00
parent af41fbc994
commit 7f3fb65a33
2 changed files with 6 additions and 5 deletions

View File

@ -254,7 +254,7 @@ public:
return IFT(to_interval(n));
}
}
static FT inf(const IFT& n)
static auto inf(const IFT& n)
{
if constexpr(std::is_floating_point_v<FT>)
{

View File

@ -58,11 +58,12 @@ fill_lambda(const Point& circle_center,
C const& curve1,
typename C::PointID const& center_id,
C const& curve2,
typename C::PointID const& seg_start_id)
typename C::PointID const& seg_start_id,
const Traits& traits = Traits())
{
using FT = typename Traits::FT;
FT a(0), b(0), c(0);
auto ccci = curve1.traits().construct_cartesian_const_iterator_d_object();
auto ccci = traits.construct_cartesian_const_iterator_d_object();
auto it_cc = ccci(circle_center), it_s = ccci(line_start), it_e = ccci(line_end);
for (auto i = 0; i < C::dimension; ++i, ++it_cc, ++it_s, ++it_e)
@ -73,7 +74,7 @@ fill_lambda(const Point& circle_center,
b -= start_center_diff * start_end_diff;
c += square(start_center_diff);
}
c -= CGAL::square(radius);
c -= CGAL::square(typename Traits::FT(radius));
FT minus_b_div_a = b / a;
FT d = CGAL::square(minus_b_div_a) - c / a;
@ -167,7 +168,7 @@ intersection_interval(Curve<T, false> const& curve1,
// if not empty
if (fill_lambda<T>(
curve1[center_id], curve2[seg_start_id], curve2[seg_start_id + 1],
C::inf(radius), II, curve1, center_id, curve2, seg_start_id).value())
C::inf(radius), II, curve1, center_id, curve2, seg_start_id, curve1.traits()).value())
{
I = Interval<C>(II.first, II.second);
}