module Geometry.SetOperations.Facet
( Facet (..)
, Facet2D, Facet3D
, flipFacet
, FB2, FB3
) where
import Protolude
import Linear (V2, V3)
import Geometry.Plane.General
import Geometry.SetOperations.CrossPoint
data Facet b v n = Facet
{ facetPlane :: Plane v n
, facetBoundary :: b
}
flipFacet :: (Functor v, Num n) => Facet b v n -> Facet b v n
flipFacet (Facet p b) = Facet (flipPlane p) b
type FB3 v n = [(CrossPoint v n, Plane v n)]
type FB2 v n = (CrossPoint v n, CrossPoint v n)
type Facet2D = Facet (FB2 V2 Double) V2 Double
type Facet3D = Facet (FB3 V3 Double) V3 Double