# [−][src]Module plexus::primitive

Primitive topological structures.

This module provides composable primitives that can form polygonal
structures. This includes simple *$n$-gons* like triangles, *generators*
that form more complex polytopes like spheres, and *iterator expressions*
that compose and decompose streams of primitives.

Plexus uses the terms *trigon* and *tetragon* for its types, which mean
*triangle* and *quadrilateral*, respectively. This is done for consistency
with higher arity polygon names (e.g., *decagon*). In some contexts, the
term *triangle* is still used, such as in functions concerning
*triangulation*.

Types in this module are not strictly geometric and the data they contain
may be arbitrary. For example, polygons are defined in $\Reals^2$, but
`Polygonal`

types may be used to approximate polygons embedded into
higher-dimensional Euclidean spaces or as simple indices. These types are
defined in terms of adjacency.

# Examples

Generating raw buffers with the positional data for a sphere:

use nalgebra::Point3; use plexus::prelude::*; use plexus::primitive::generate::Position; use plexus::primitive::sphere::UvSphere; let sphere = UvSphere::new(16, 16); // Generate the unique set of positional vertices. let positions = sphere .vertices::<Position<Point3<f64>>>() .collect::<Vec<_>>(); // Generate polygons that index the unique set of positional vertices. // The polygons are decomposed into triangles and then into vertices (indices). let indices = sphere .indexing_polygons::<Position>() .triangulate() .vertices() .collect::<Vec<_>>();

Generating raw buffers with positional data for a cube using an indexer:

use decorum::N64; use nalgebra::Point3; use plexus::index::{Flat3, HashIndexer}; use plexus::prelude::*; use plexus::primitive::cube::Cube; use plexus::primitive::generate::Position; let (indices, positions) = Cube::new() .polygons::<Position<Point3<N64>>>() .triangulate() .index_vertices::<Flat3, _>(HashIndexer::default());

## Modules

cube | Cube primitives. |

decompose | Topological decomposition and tessellation. |

generate | Polytope generation. |

sphere | Sphere primitives. |

## Structs

InteriorMap | |

NGon | Homomorphic $n$-gon. |

## Enums

Polygon | Polymorphic $n$-gon. |

## Traits

MapVertices | |

Polygonal | Primitive polygonal structure. |

Rotate | |

Topological | Primitive topological structure. |

Zip |

## Functions

zip_vertices | Zips the vertices and topologies from multiple iterators into a single iterator. |

## Type Definitions

Edge | |

Tetragon | Quadrilateral. |

Trigon | Triangle. |