Copyright | (C) Frank Staals |
---|---|
License | see the LICENSE file |
Maintainer | Frank Staals |
Safe Haskell | None |
Language | GHC2021 |
HGeometry.Plane.LowerEnvelope.Clipped
Description
A Representation of the Lower envelope of planes inside a given triangle. This means now all regions are actually bounded.
Synopsis
- type ClippedMinimizationDiagram plane = ClippedMinimizationDiagram' (NumType plane) plane
- data ClippedMinimizationDiagram' r plane
- _ClippedMinimizationDiagramMap :: NumType plane ~ r => Iso' (ClippedMinimizationDiagram plane) (NEMap plane (ClippedMDCell r plane))
- type ClippedMDCell r plane = ClippedMDCell' r (MDVertex r plane)
- newtype ClippedMDCell' r vertex = ClippedMDCell (PossiblyDegenerateSimplePolygon (OriginalOrExtra vertex (Point 2 r)) (ClippedBoundedRegion r vertex (Point 2 r)))
- lowerEnvelopeIn :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Point_ corner 2 r, Foldable1 set, Show r, Show corner, Show plane) => Triangle corner -> set plane -> ClippedMinimizationDiagram plane
Documentation
type ClippedMinimizationDiagram plane = ClippedMinimizationDiagram' (NumType plane) plane Source #
The representing (the minimization diagram) of the lower envelope of a set of planes, clipped to some bounding triangle.
A ClippedMinimizationDiagram
is essentially just a non-empty Map mapping planes
to cells.
data ClippedMinimizationDiagram' r plane Source #
Implementatino of the ClippedMinimizationDiagram type; r is the numeric type of the planes
Instances
_ClippedMinimizationDiagramMap :: NumType plane ~ r => Iso' (ClippedMinimizationDiagram plane) (NEMap plane (ClippedMDCell r plane)) Source #
Get access to the underlying NonEmpty Map
type ClippedMDCell r plane = ClippedMDCell' r (MDVertex r plane) Source #
Cells in the Minimization diagram (i.e. the projected lower envelope of planes) parameterized by the numeric type and the planes
newtype ClippedMDCell' r vertex Source #
Helper type for representing cells in a minimzation diagram. These cells are possibly
degenerate convex polygons, whose vertices are either of type vertex
or of type
'Point 2 r'.
Constructors
ClippedMDCell (PossiblyDegenerateSimplePolygon (OriginalOrExtra vertex (Point 2 r)) (ClippedBoundedRegion r vertex (Point 2 r))) |
Instances
lowerEnvelopeIn :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Point_ corner 2 r, Foldable1 set, Show r, Show corner, Show plane) => Triangle corner -> set plane -> ClippedMinimizationDiagram plane Source #
Compute the lower envelope of planes inside a given triangle.
\(O(n^4)\) (as it currently uses the brute force algorithm).