[][src]Module plexus::primitive

Primitive topological structures.

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

Types in this module generally describe cycle graphs and are not strictly geometric. For example, Polygonal types may be geometrically degenerate (e.g., collinear, converged, etc.) or used to approximate polygons from $\Reals^2$ embedded into higher-dimensional Euclidean spaces. These types are also used for indexing, in which case their representation and data are both entirely topological.

Plexus uses the terms trigon and tetragon for its polygon 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.

Examples

Generating raw buffers with the positional data for a sphere approximation:

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, where each
// vertex is an index into the position data.
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

Monomorphic $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.