fn antiprism_with_vertices<I: Iterator<Item = Point<f64>>, J: Iterator<Item = Point<f64>>>(
        &self,
        vertices: I,
        dual_vertices: J,
    ) -> Self {
        let (abs, vertex_indices, dual_vertex_indices) = self.abs.antiprism_and_vertices();
        let vertex_count = abs.vertex_count();

        // TODO: is it worth getting into the dark arts of uninitialized buffers?
        let mut new_vertices = vec![Vec::new().into(); vertex_count];

        for (idx, v) in vertices.enumerate() {
            new_vertices[vertex_indices[idx]] = v;
        }

        for (idx, v) in dual_vertices.enumerate() {
            new_vertices[dual_vertex_indices[idx]] = v;
        }

        Self::new(new_vertices, abs)
    }
/// Builds an [antiprism](https://polytope.miraheze.org/wiki/Antiprism),
/// using the specified sets of vertices for the base and the dual base.
///
/// The vertices of the base should be specified in the same order as those
/// of the original polytope. The vertices of the dual face should be
/// specified in the same order as the facets of the original polytope.
Builds an [antiprism],
using the specified sets of vertices for the base and the dual base.

The vertices of the base should be specified in the same order as those
of the original polytope. The vertices of the dual face should be
specified in the same order as the facets of the original polytope.
Builds an [ antiprism ] using the specified sets of vertices for the base and the dual base . The vertices of the base should be specified in the same order as those of the original polytope . The vertices of the dual face should be specified in the same order as the facets of the original polytope .
fn antiprism_with_vertices<I: Iterator<Item = Point<f64>>, J: Iterator<Item = Point<f64>>>(
        &self,
        vertices: I,
        dual_vertices: J,
    ) -> Self {
        let (abs, vertex_indices, dual_vertex_indices) = self.abs.antiprism_and_vertices();
        let vertex_count = abs.vertex_count();
        // TODO: is it worth getting into the dark arts of uninitialized buffers?
        let mut new_vertices = vec![Vec::new().into(); vertex_count];
        for (idx, v) in vertices.enumerate() {
            new_vertices[vertex_indices[idx]] = v;
        }
        for (idx, v) in dual_vertices.enumerate() {
            new_vertices[dual_vertex_indices[idx]] = v;
        }
        Self::new(new_vertices, abs)
    }
fn antiprism_with_vertices < I : Iterator < Item = Point < f64 > > , J : Iterator < Item = Point < f64 > > > ( & self , vertices : I , dual_vertices : J , ) -> Self { let ( abs , vertex_indices , dual_vertex_indices ) = self . abs . antiprism_and_vertices ( ) ; let vertex_count = abs . vertex_count ( ) ; // TODO: is it worth getting into the dark arts of uninitialized buffers? let mut new_vertices = vec ! [ Vec new ( ) into ( ) vertex_count ] ; for ( idx , v ) in vertices . enumerate ( ) { new_vertices [ vertex_indices [ idx ] ] = v ; } for ( idx , v ) in dual_vertices . enumerate ( ) { new_vertices [ dual_vertex_indices [ idx ] ] = v ; } Self :: new ( new_vertices , abs ) }
Builds an [antiprism](https://polytope.miraheze.org/wiki/Antiprism),
using the specified sets of vertices for the base and the dual base.
Builds an [ antiprism ] ( https : // polytope . miraheze . org / wiki / Antiprism ) using the specified sets of vertices for the base and the dual base .
&self
vertices
I
dual_vertices
J