/// Returns an iterator over the elements of the Coxeter group.
Returns an iterator over the elements of the Coxeter group.
Returns an iterator over the elements of the Coxeter group .
pub fn gen_iter(&self) -> Option<GenIter<Matrix<T>>> {
        let normals = self.normals()?;
        let dim = normals.nrows();
        // Builds a reflection matrix from a vector.
        let refl_mat = |n: VectorSlice<'_, T>| {
            let nn = n.norm_squared();
            let mut mat = Matrix::identity(dim, dim);
            // Reflects every basis vector, builds a matrix from all of their images.
            for mut e in mat.column_iter_mut() {
                e -= n * (T::TWO * e.dot(&n) / nn);
            }
            mat
        };
        Some(GenIter::new(
            dim,
            normals.column_iter().map(refl_mat).collect(),
        ))
    }
pub fn gen_iter ( & self ) -> Option < GenIter < Matrix < T > > > { let normals = self . normals ( ) ? ; let dim = normals . nrows ( ) ; // Builds a reflection matrix from a vector. let refl_mat = | n : VectorSlice < ' _ , T > | { let nn = n . norm_squared ( ) ; let mut mat = Matrix :: identity ( dim , dim ) ; // Reflects every basis vector, builds a matrix from all of their images. for mut e in mat . column_iter_mut ( ) { e -= n * ( T :: TWO * e . dot ( & n ) / nn ) ; } mat } ; Some ( GenIter :: new ( dim , normals . column_iter ( ) . map ( refl_mat ) . collect ( ) , ) ) }
Returns an iterator over the elements of the Coxeter group.
Returns an iterator over the elements of the Coxeter group .
&self