fn recurse_color_exterior(&self, edge_id: Option<EdgeIndex>, external_color: ColorType) {
        if edge_id.is_none() || (self.edge_get_color_(edge_id).unwrap() & external_color) != 0 {
            // This edge has already been colored, break recursion
            return;
        }
        // Color edge as EXTERNAL
        self.edge_or_color_(edge_id, external_color);

        let v1 = self._edge_get_vertex1(edge_id);
        if self.edge_get_vertex0_(edge_id).is_some() && v1.is_none() {
            // this edge leads to nowhere, break recursion
            return;
        }
        // Color twin edge as EXTERNAL
        self.edge_or_color_(self.edge_get_twin_(edge_id), external_color);
        if v1.is_none()
            || self.vertex_is_site_point_(v1).unwrap_or(true)
            || !self
                .get_edge_(edge_id)
                .map_or(false, |x| x.get().is_primary())
        {
            // stop recursion if this edge does not have a vertex1 (e.g is infinite)
            // or if this edge isn't a primary edge.
            return;
        }
        self.vertex_set_color_(v1, external_color);
        let incident_edge = self.vertex_get_incident_edge(v1);
        for e in self.edge_rot_next_iterator_(incident_edge) {
            // mark all surrounding edges as EXTERNAL, but only recurse on primary edges
            self.recurse_color_exterior(Some(e), external_color);
        }
    }
/// Mark all edges connected to an 'infinite' edge via primary edges as 'external'
/// You should only call this on edges that you know are infinite. i.e. lacks one or two vertexes
Mark all edges connected to an 'infinite' edge via primary edges as 'external'
You should only call this on edges that you know are infinite.
Mark all edges connected to an ' infinite ' edge via primary edges as ' external ' You should only call this on edges that you know are infinite .
fn recurse_color_exterior(&self, edge_id: Option<EdgeIndex>, external_color: ColorType) {
        if edge_id.is_none() || (self.edge_get_color_(edge_id).unwrap() & external_color) != 0 {
            // This edge has already been colored, break recursion
            return;
        }
        // Color edge as EXTERNAL
        self.edge_or_color_(edge_id, external_color);
        let v1 = self._edge_get_vertex1(edge_id);
        if self.edge_get_vertex0_(edge_id).is_some() && v1.is_none() {
            // this edge leads to nowhere, break recursion
            return;
        }
        // Color twin edge as EXTERNAL
        self.edge_or_color_(self.edge_get_twin_(edge_id), external_color);
        if v1.is_none()
            || self.vertex_is_site_point_(v1).unwrap_or(true)
            || !self
                .get_edge_(edge_id)
                .map_or(false, |x| x.get().is_primary())
        {
            // stop recursion if this edge does not have a vertex1 (e.g is infinite)
            // or if this edge isn't a primary edge.
            return;
        }
        self.vertex_set_color_(v1, external_color);
        let incident_edge = self.vertex_get_incident_edge(v1);
        for e in self.edge_rot_next_iterator_(incident_edge) {
            // mark all surrounding edges as EXTERNAL, but only recurse on primary edges
            self.recurse_color_exterior(Some(e), external_color);
        }
    }
fn recurse_color_exterior ( & self , edge_id : Option < EdgeIndex > , external_color : ColorType ) { if edge_id . is_none ( ) || ( self . edge_get_color_ ( edge_id ) . unwrap ( ) & external_color ) != 0 { // This edge has already been colored, break recursion return ; } // Color edge as EXTERNAL self . edge_or_color_ ( edge_id , external_color ) ; let v1 = self . _edge_get_vertex1 ( edge_id ) ; if self . edge_get_vertex0_ ( edge_id ) . is_some ( ) && v1 . is_none ( ) { // this edge leads to nowhere, break recursion return ; } // Color twin edge as EXTERNAL self . edge_or_color_ ( self . edge_get_twin_ ( edge_id ) , external_color ) ; if v1 . is_none ( ) || self . vertex_is_site_point_ ( v1 ) . unwrap_or ( true ) || ! self . get_edge_ ( edge_id ) . map_or ( false , | x | x . get ( ) . is_primary ( ) ) { // stop recursion if this edge does not have a vertex1 (e.g is infinite) // or if this edge isn't a primary edge. return ; } self . vertex_set_color_ ( v1 , external_color ) ; let incident_edge = self . vertex_get_incident_edge ( v1 ) ; for e in self . edge_rot_next_iterator_ ( incident_edge ) { // mark all surrounding edges as EXTERNAL, but only recurse on primary edges self . recurse_color_exterior ( Some ( e ) , external_color ) ; } }
Mark all edges connected to an 'infinite' edge via primary edges as 'external'
You should only call this on edges that you know are infinite.
Mark all edges connected to an ' infinite ' edge via primary edges as ' external ' You should only call this on edges that you know are infinite .
&self
edge_id
Option<EdgeIndex>
external_color
ColorType