logo
Expand description

Decomposition and tessellation.

The Decompose iterator uses various traits to decompose and tessellate iterators of topological structures.

This module provides two kinds of decomposition traits: conversions and Iterator extensions. Conversion traits are implemented by topological types and decompose a single structure into any number of output structures. Extensions are implemented for iterators of topological structures and perform the corresponding conversion on the input items to produce flattened output. For example, IntoTrigons converts a Polygonal type into an iterator of Trigons while Triangulate does the same to the items of an iterator.

Many of these traits are re-exported in the prelude module.

Examples

Tessellating a Tetragon into Trigons:

use nalgebra::Point2;
use plexus::prelude::*;
use plexus::primitive::Tetragon;

type E2 = Point2<f64>;

let square = Tetragon::from([
    E2::new(1.0, 1.0),
    E2::new(-1.0, 1.0),
    E2::new(-1.0, -1.0),
    E2::new(1.0, -1.0),
]);
let trigons = square.into_trigons();

Tessellating an iterator of Tetragons from a generator:

use nalgebra::Point3;
use plexus::prelude::*;
use plexus::primitive::cube::Cube;
use plexus::primitive::generate::Position;

type E3 = Point3<f64>;

let polygons: Vec<_> = Cube::new()
    .polygons::<Position<E3>>()
    .subdivide()
    .triangulate()
    .collect();

Structs

Traits