This commit is contained in:
Andreas Fabri 2025-10-18 09:58:14 +01:00
parent 098e05e134
commit b3cb80760c
2 changed files with 10 additions and 12 deletions

View File

@ -514,11 +514,6 @@ inline void FrechetLight<C>::continueQSimpleSearch(QSimpleInterval& qsimple,
// TODO: uncritical for correctness or speed but unelegant coding style: stripping down information added by getInterval
CInterval temp_interval = FrechetLight::getInterval<IndexType>(
fixed_curve, fixed, curve, cur);
std::cout .precision(15);
std::cout << "cur = " << cur << std::endl;
std::cout << temp_interval.begin.getPoint() << " "
<< temp_interval.begin.getFraction().approx << std::endl;
std::cout << temp_interval.end.getPoint() << std::endl;
Interval interval = Interval(temp_interval.begin.getPoint() == cur
? temp_interval.begin.getFraction()
@ -526,12 +521,9 @@ inline void FrechetLight<C>::continueQSimpleSearch(QSimpleInterval& qsimple,
temp_interval.end.getPoint() == cur
? temp_interval.end.getFraction()
: 1);
std::cout << "before is_zero(): " << interval.begin.approx << std::endl;
// ssert(!certainly(temp_interval.begin.getFraction() <= 1)
// || !certainly(temp_interval.begin.getFraction() > 1));
// do previous check for fullness again, but now it is an exact decision
if (is_zero(interval.begin) && is_one(interval.end)) { // Uncertain (A)
std::cout << "after is_zero(): " << interval.begin.approx << std::endl;
assert(current_free);
++cur;
stepsize *= 2;

View File

@ -113,7 +113,10 @@ struct Lambda<Curve<FilteredTraits,true>>
// fill_lambda returns a pair and we are only interested in a bound
bool update_exact() const
{
if (is_exact) {
if (is_exact){
if (! exact){
exact = (is_one) ? std::make_optional(Exact(1)) : std::make_optional(Exact(0));
}
return true;
}
@ -198,7 +201,9 @@ struct Lambda<Curve<FilteredTraits,true>>
{
if ((is_zero && other.is_zero) || (is_one && other.is_one))
return false;
if ((is_zero && (!other.is_zero)) || (!is_one && other.is_one))
// AF this may be wrong if approx is [0.9,1.1] and other.is_one:
// if ((is_zero && (!other.is_zero)) || (!is_one && other.is_one))
if(is_zero && other.is_one)
return true;
CGAL::Uncertain<bool> res = approx < other.approx;
if (CGAL::is_certain(res)) {
@ -206,7 +211,8 @@ struct Lambda<Curve<FilteredTraits,true>>
}
update_exact();
other.update_exact();
return exact < other.exact;
bool eres = *exact < *other.exact;
return eres;
}
};