fn activate_circle_event(
        &mut self,
        site1: VSE::SiteEvent<I, F>,
        site2: VSE::SiteEvent<I, F>,
        site3: VSE::SiteEvent<I, F>,
        bisector_node: VB::BeachLineIndex,
    ) -> Result<(), BvError> {
        // Check if the three input sites create a circle event.
        let c_event = VC::CircleEvent::new_1(bisector_node);
        let c_event = VC::CircleEventC::new_1(c_event);

        if VP::CircleFormationFunctor::<I, F>::circle_formation_predicate(
            &site1, &site2, &site3, &c_event,
        ) {
            // Add the new circle event to the circle events queue.
            // Update bisector's circle event iterator to point to the
            // new circle event in the circle event queue.
            tln!("added circle event:{:?}", c_event);

            let e = self.circle_events_.associate_and_push(c_event);
            {
                let b = self.beach_line_.get_node(&bisector_node)?;
                if let Some(mut bd) = b.1.get() {
                    let _ = bd.set_circle_event_id(Some(e.0.get().get_index().unwrap())); // make sure it is_some()
                    b.1.set(Some(bd));
                    #[cfg(feature = "console_debug")]
                    {
                        t!("with bisector_node: ");
                        self.beach_line_
                            .dbgpa_compat_node_(&b.0, &b.1, &self.circle_events_)?;
                    }
                } else {
                    return Err(BvError::InternalError(format!(
                        "activate_circle_event could not find node by key {}",
                        bisector_node.0
                    )));
                }
            }
        }
        Ok(())
    }
/// Add a new circle event to the event queue.
/// bisector_node corresponds to the (site2, site3) bisector.
Add a new circle event to the event queue.
bisector_node corresponds to the (site2, site3) bisector.
Add a new circle event to the event queue . bisector_node corresponds to the ( site2 site3 ) bisector .
fn activate_circle_event(
        &mut self,
        site1: VSE::SiteEvent<I, F>,
        site2: VSE::SiteEvent<I, F>,
        site3: VSE::SiteEvent<I, F>,
        bisector_node: VB::BeachLineIndex,
    ) -> Result<(), BvError> {
        // Check if the three input sites create a circle event.
        let c_event = VC::CircleEvent::new_1(bisector_node);
        let c_event = VC::CircleEventC::new_1(c_event);
        if VP::CircleFormationFunctor::<I, F>::circle_formation_predicate(
            &site1, &site2, &site3, &c_event,
        ) {
            // Add the new circle event to the circle events queue.
            // Update bisector's circle event iterator to point to the
            // new circle event in the circle event queue.
            tln!("added circle event:{:?}", c_event);
            let e = self.circle_events_.associate_and_push(c_event);
            {
                let b = self.beach_line_.get_node(&bisector_node)?;
                if let Some(mut bd) = b.1.get() {
                    let _ = bd.set_circle_event_id(Some(e.0.get().get_index().unwrap())); // make sure it is_some()
                    b.1.set(Some(bd));
                    #[cfg(feature = "console_debug")]
                    {
                        t!("with bisector_node: ");
                        self.beach_line_
                            .dbgpa_compat_node_(&b.0, &b.1, &self.circle_events_)?;
                    }
                } else {
                    return Err(BvError::InternalError(format!(
                        "activate_circle_event could not find node by key {}",
                        bisector_node.0
                    )));
                }
            }
        }
        Ok(())
    }
fn activate_circle_event ( & mut self , site1 : VSE :: SiteEvent < I , F > , site2 : VSE :: SiteEvent < I , F > , site3 : VSE :: SiteEvent < I , F > , bisector_node : VB :: BeachLineIndex , ) -> Result < ( ) , BvError > { // Check if the three input sites create a circle event. let c_event = VC :: CircleEvent :: new_1 ( bisector_node ) ; let c_event = VC :: CircleEventC :: new_1 ( c_event ) ; if VP :: CircleFormationFunctor :: < I , F > :: circle_formation_predicate ( & site1 , & site2 , & site3 , & c_event , ) { // Add the new circle event to the circle events queue. // Update bisector's circle event iterator to point to the // new circle event in the circle event queue. tln ! ( " " c_event ) ; let e = self . circle_events_ . associate_and_push ( c_event ) ; { let b = self . beach_line_ . get_node ( & bisector_node ) ? ; if let Some ( mut bd ) = b . 1 . get ( ) { let _ = bd . set_circle_event_id ( Some ( e . 0 . get ( ) . get_index ( ) . unwrap ( ) ) ) ; // make sure it is_some() b . 1 . set ( Some ( bd ) ) ; # [ cfg ( feature " " ) ] { t ! ( " " ) ; self . beach_line_ . dbgpa_compat_node_ ( & b . 0 , & b . 1 , & self . circle_events_ ) ? ; } } else { return Err ( BvError :: InternalError ( format ! ( " " bisector_node 0 ) ) ) ; } } } Ok ( ( ) ) }
Add a new circle event to the event queue.
Add a new circle event to the event queue .
&mut self
site1
VSE::SiteEvent<I, F>
site2
VSE::SiteEvent<I, F>
site3
VSE::SiteEvent<I, F>
bisector_node
VB::BeachLineIndex