fn pp(
        left_site: &VSE::SiteEvent<I, F>,
        right_site: &VSE::SiteEvent<I, F>,
        new_point: &Point<I>,
    ) -> bool {
        let left_point = left_site.point0();
        let right_point = right_site.point0();
        let i_to_i64 = TC1::<I>::i_to_i64;
        //dbg!(&left_site, &right_site, &new_point);
        //dbg!(left_point.x, left_point.y);
        //dbg!(right_point.x, right_point.y);

        match left_point.x.cmp(&right_point.x) {
            cmp::Ordering::Greater => {
                if new_point.y <= left_point.y {
                    return false;
                }
            }
            cmp::Ordering::Less => {
                if new_point.y >= right_point.y {
                    return true;
                }
            }
            _ => {
                return i_to_i64(left_point.y) + i_to_i64(right_point.y) < i_to_i64(new_point.y) * 2
            }
        }

        let dist1 = Self::find_distance_to_point_arc(left_site, new_point);
        let dist2 = Self::find_distance_to_point_arc(right_site, new_point);

        // The undefined ulp range is equal to 3EPS + 3EPS <= 6ULP.
        dist1 < dist2
    }
/// Robust predicate, avoids using high-precision libraries.
/// Returns true if a horizontal line going through the new point site
/// intersects right arc at first, else returns false. If horizontal line
/// goes through intersection point of the given two arcs returns false.
Robust predicate, avoids using high-precision libraries.
Returns true if a horizontal line going through the new point site
intersects right arc at first, else returns false. If horizontal line
goes through intersection point of the given two arcs returns false.
Robust predicate avoids using high - precision libraries . Returns true if a horizontal line going through the new point site intersects right arc at first else returns false . If horizontal line goes through intersection point of the given two arcs returns false .
fn pp(
        left_site: &VSE::SiteEvent<I, F>,
        right_site: &VSE::SiteEvent<I, F>,
        new_point: &Point<I>,
    ) -> bool {
        let left_point = left_site.point0();
        let right_point = right_site.point0();
        let i_to_i64 = TC1::<I>::i_to_i64;
        //dbg!(&left_site, &right_site, &new_point);
        //dbg!(left_point.x, left_point.y);
        //dbg!(right_point.x, right_point.y);
        match left_point.x.cmp(&right_point.x) {
            cmp::Ordering::Greater => {
                if new_point.y <= left_point.y {
                    return false;
                }
            }
            cmp::Ordering::Less => {
                if new_point.y >= right_point.y {
                    return true;
                }
            }
            _ => {
                return i_to_i64(left_point.y) + i_to_i64(right_point.y) < i_to_i64(new_point.y) * 2
            }
        }
        let dist1 = Self::find_distance_to_point_arc(left_site, new_point);
        let dist2 = Self::find_distance_to_point_arc(right_site, new_point);
        // The undefined ulp range is equal to 3EPS + 3EPS <= 6ULP.
        dist1 < dist2
    }
fn pp ( left_site : & VSE :: SiteEvent < I , F > , right_site : & VSE :: SiteEvent < I , F > , new_point : & Point < I > , ) -> bool { let left_point = left_site . point0 ( ) ; let right_point = right_site . point0 ( ) ; let i_to_i64 = TC1 :: < I > :: i_to_i64 ; //dbg!(&left_site, &right_site, &new_point); //dbg!(left_point.x, left_point.y); //dbg!(right_point.x, right_point.y); match left_point . x . cmp ( & right_point . x ) { cmp :: Ordering :: Greater => { if new_point . y <= left_point . y { return false ; } } cmp :: Ordering :: Less => { if new_point . y >= right_point . y { return true ; } } _ => { return i_to_i64 ( left_point . y ) + i_to_i64 ( right_point . y ) < i_to_i64 ( new_point . y ) * 2 } } let dist1 = Self :: find_distance_to_point_arc ( left_site , new_point ) ; let dist2 = Self :: find_distance_to_point_arc ( right_site , new_point ) ; // The undefined ulp range is equal to 3EPS + 3EPS <= 6ULP. dist1 < dist2 }
Robust predicate, avoids using high-precision libraries.
Robust predicate avoids using high - precision libraries .
left_site
&VSE::SiteEvent<I, F>
right_site
&VSE::SiteEvent<I, F>
new_point
&Point<I>