# Multistep Evolution Method to Generate Topological Interlocking Assemblies
## 3 Polygon Evolution
### Double-Direction Polygon-Polyhedron Evolution  
We expand the family of evolved polyhedra by considering negative evolution steps. A negative evolution step is the opposite of the normal vector from the respective seed polygon. We must flip the orientation of the seed polygon for the first negative evolution. In that way, we can consider negative evolution steps as regular evolution steps, as discussed so far. Figure 8 shows an example of the stages during a double-direction polygon-polyhedron evolution process. The polygon \(f\) is the seed polygon for two evolution sequences: a positive (along the normal vector of \(f\)) step and a negative step (opposite to the normal vector of \(f\)). We refer to \(f\) as \(f_{0}^{+}\) for the positive step, and \(f_{0}^{-}\) for the negative step. A new evolved polytope \(f_{1}^{-}=\textsc{Evolve}(f_{0}^{-},\Theta_{0}^{-},\lambda_{0}^{-})\) corresponds to the negative evolution step. In such an example, the union of the vertices from polygons \(f\), \(f_{1}^{+}\) and \(f_{1}^{-}\) represents a new polyhedron. The following paragraphs describe the double-direction polygon-polyhedron evolution process in formal terms. Let \(f\) be a seed polygon with a normalized normal vector, \(\hat{N}\). An additional sequence of evolution steps, along with \(-\hat{N}\), allows for the generation of polyhedra that a single-direction polygon-polyhedron evolution cannot describe. A positive evolution step occurs above \(f\) along \(\hat{N}\), and a negative evolution step occurs below \(f\) along \(-\hat{N}\). Let \(f_{0}^{+}=f\) be the seed polygon for the first positive evolution step; the sequence of \(m^{+}\in\mathbb{N}^{+}\) positive evolution steps \(f_{i+1}^{+}=\textsc{Evolve}(f_{i}^{+},\Theta_{i}^{+},\lambda_{i}^{+})\), \(i=0,1,\ldots,m^{+}-1\) describes the upper half of the polyhedron (i.e., the section that lies above \(f\) in direction \(\hat{N}\)). Similarly, let \(f_{0}^{-}=\text{flip}(f)\) be the seed polygon for the first negative evolution step, where \(\text{flip}(p)\) changes the vertex indices order of the edges from a polygon, \(p\) (i.e., swaps the orientation of the front face of the polygon). Flipping the seed polygon for the first negative evolution step allows for the evolution of \(f\) along \(-\hat{N}\). This adjustment lets us use the evolution step method without any modification for negative evolution steps. The sequence of \(m^{-}\in\mathbb{N}^{+}\) negative evolution steps \(f_{j+1}^{-}=\textsc{Evolve}(f_{j}^{-},\Theta_{j}^{-},\lambda_{j}^{-})\), \(j=0,1,\ldots,m^{-}-1\) describes the lower half of the polyhedron (i.e., the section that lies above \(f\) in direction \(-\hat{N}\)). The geometry of an evolved polyhedron, \(B\), comes from the vertices of the seed polygon and the evolved \(n\)-polytopes, along with the positive and negative directions. The vertices from the seed polygon \(f=\{V,E\}\), the positive evolved \(n\)-polytopes \(f_{i}^{+}=\{V_{i}^{+},E_{i}^{+}\}\), \(\forall i=0,1,\ldots,m^{+}-1\), and the negative evolved \(n\)-polytopes \(f_{j}^{-}=\{V_{j}^{-},E_{j}^{-}\}\)  
Figure 8: Example of the stages of a double-direction polygon–polyhedron evolution. From **left** to **right**: Initial evolution step from \(f\) to \(f^{\prime\prime}=f_{1}^{+}\) (positive evolution step), Parameters for the negative evolution step, Definition of the evolved polytope from the intersection of evolving lines resulting from the negative evolution step, Resultant polyhedron by joining the vertices from \(f\), \(f_{1}^{+}\), and \(f_{1}^{-}\). \(\forall j=0,1,\ldots,m^{-}-1\) describe the vertices of the polyhedron \(B\) generated from both positive and negative and negative evolution sequences. The set \(V_{B}=V\cup\bigcup_{i=0}^{m^{+}-1}V_{i}^{+}\cup\bigcup_{j=0}^{m^{-}-1}V_{j}^{-}\) contains the vertices of \(B\). The set \(F_{B}\) is the set of vertex indices that defines the faces of \(B\). Similar to the single-direction evolution, the correspondences between the edges of the seed polygons and their respective evolved \(n\)-polytopes define \(F_{B}\).