AATIsolineSegment::AATIsolineSegment(const AATPoint &ap, const TaskProjection &projection) :AATIsoline(ap, projection) { IsolineCrossingFinder icf_up(ap, ell, fixed_zero, fixed_half); IsolineCrossingFinder icf_down(ap, ell, -fixed_half, fixed_zero); t_up = icf_up.solve(); t_down = icf_down.solve(); if ((t_up < -fixed_half) || (t_down < -fixed_half)) { t_up = fixed_zero; t_down = fixed_zero; // single solution only } }
AATIsolineSegment::AATIsolineSegment(const AATPoint& ap): AATIsoline(ap) { const fixed t_target = FindTargetInSector(ap); const fixed t_a = t_target + - fixed_half; const fixed t_c = t_target + fixed_half; IsolineCrossingFinder icf_up(ap, ell, t_target , t_c); IsolineCrossingFinder icf_down(ap, ell, t_a, t_target); t_up = icf_up.solve(); t_down = icf_down.solve(); if ((t_down <= t_a) || (t_down >= t_target) || (t_up <= t_target) || (t_up >= t_c)) { t_up = fixed_zero; t_down = fixed_zero; // single solution only } }