Exemple #1
0
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
  }
}