hgeometry-spline
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2024

HGeometry.BezierSpline

Description

Basic Bezier splines.

Synopsis

Documentation

newtype BezierSplineF (f :: Type -> Type) point Source #

A Bezier spline.

Constructors

BezierSpline (f point) 

Bundled Patterns

pattern Bezier2 :: point -> point -> point -> QuadraticBezier point

Construct a QuadatricBezier

pattern Bezier3 :: point -> point -> point -> point -> CubicBezier point

Construct a cubic bezier

Instances

Instances details
Foldable1 f => Foldable1 (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

fold1 :: Semigroup m => BezierSplineF f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> BezierSplineF f a -> m Source #

foldMap1' :: Semigroup m => (a -> m) -> BezierSplineF f a -> m Source #

toNonEmpty :: BezierSplineF f a -> NonEmpty a Source #

maximum :: Ord a => BezierSplineF f a -> a Source #

minimum :: Ord a => BezierSplineF f a -> a Source #

head :: BezierSplineF f a -> a Source #

last :: BezierSplineF f a -> a Source #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> BezierSplineF f a -> b Source #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> BezierSplineF f a -> b Source #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> BezierSplineF f a -> b Source #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> BezierSplineF f a -> b Source #

Eq1 f => Eq1 (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

liftEq :: (a -> b -> Bool) -> BezierSplineF f a -> BezierSplineF f b -> Bool Source #

Ord1 f => Ord1 (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

liftCompare :: (a -> b -> Ordering) -> BezierSplineF f a -> BezierSplineF f b -> Ordering Source #

Functor f => Functor (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

fmap :: (a -> b) -> BezierSplineF f a -> BezierSplineF f b Source #

(<$) :: a -> BezierSplineF f b -> BezierSplineF f a Source #

Foldable f => Foldable (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

fold :: Monoid m => BezierSplineF f m -> m Source #

foldMap :: Monoid m => (a -> m) -> BezierSplineF f a -> m Source #

foldMap' :: Monoid m => (a -> m) -> BezierSplineF f a -> m Source #

foldr :: (a -> b -> b) -> b -> BezierSplineF f a -> b Source #

foldr' :: (a -> b -> b) -> b -> BezierSplineF f a -> b Source #

foldl :: (b -> a -> b) -> b -> BezierSplineF f a -> b Source #

foldl' :: (b -> a -> b) -> b -> BezierSplineF f a -> b Source #

foldr1 :: (a -> a -> a) -> BezierSplineF f a -> a Source #

foldl1 :: (a -> a -> a) -> BezierSplineF f a -> a Source #

toList :: BezierSplineF f a -> [a] Source #

null :: BezierSplineF f a -> Bool Source #

length :: BezierSplineF f a -> Int Source #

elem :: Eq a => a -> BezierSplineF f a -> Bool Source #

maximum :: Ord a => BezierSplineF f a -> a Source #

minimum :: Ord a => BezierSplineF f a -> a Source #

sum :: Num a => BezierSplineF f a -> a Source #

product :: Num a => BezierSplineF f a -> a Source #

Traversable f => Traversable (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

traverse :: Applicative f0 => (a -> f0 b) -> BezierSplineF f a -> f0 (BezierSplineF f b) Source #

sequenceA :: Applicative f0 => BezierSplineF f (f0 a) -> f0 (BezierSplineF f a) Source #

mapM :: Monad m => (a -> m b) -> BezierSplineF f a -> m (BezierSplineF f b) Source #

sequence :: Monad m => BezierSplineF f (m a) -> m (BezierSplineF f a) Source #

Traversable1 f => Traversable1 (BezierSplineF f) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

traverse1 :: Apply f0 => (a -> f0 b) -> BezierSplineF f a -> f0 (BezierSplineF f b) Source #

sequence1 :: Apply f0 => BezierSplineF f (f0 b) -> f0 (BezierSplineF f b) Source #

NFData (f point) => NFData (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

rnf :: BezierSplineF f point -> () Source #

Generic (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Associated Types

type Rep (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type Rep (BezierSplineF f point) = D1 ('MetaData "BezierSplineF" "HGeometry.BezierSpline" "hgeometry-spline-1.0.0.0-inplace" 'True) (C1 ('MetaCons "BezierSpline" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))

Methods

from :: BezierSplineF f point -> Rep (BezierSplineF f point) x Source #

to :: Rep (BezierSplineF f point) x -> BezierSplineF f point Source #

Show (f point) => Show (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

showsPrec :: Int -> BezierSplineF f point -> ShowS Source #

show :: BezierSplineF f point -> String Source #

showList :: [BezierSplineF f point] -> ShowS Source #

Eq (f point) => Eq (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

(==) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

(/=) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

Ord (f point) => Ord (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

compare :: BezierSplineF f point -> BezierSplineF f point -> Ordering Source #

(<) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

(<=) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

(>) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

(>=) :: BezierSplineF f point -> BezierSplineF f point -> Bool Source #

max :: BezierSplineF f point -> BezierSplineF f point -> BezierSplineF f point Source #

min :: BezierSplineF f point -> BezierSplineF f point -> BezierSplineF f point Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), Point_ point 2 r) => IsBoxable (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

boundingBox :: forall (d :: Nat) r0. (d ~ Dimension (BezierSplineF f point), r0 ~ NumType (BezierSplineF f point), Ord r0) => BezierSplineF f point -> Box (Point d r0) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), DefaultTransformByConstraints (BezierSplineF f point) 2 r, Point_ point 2 r) => IsTransformable (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

(Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Associated Types

type Vertex (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type Vertex (BezierSplineF f point) = point
type VertexIx (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type VertexIx (BezierSplineF f point) = Int
(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (BezierSplineF f point) (BezierSplineF f point') Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasPoints (BezierSplineF f point) (BezierSplineF f point') point point' Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (BezierSplineF f point) ~ r, NumType (BezierSplineF f point') ~ r', Dimension (BezierSplineF f point) ~ d, Dimension (BezierSplineF f point') ~ d) => Traversal1 (BezierSplineF f point) (BezierSplineF f point') point point' Source #

type Rep (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

type Rep (BezierSplineF f point) = D1 ('MetaData "BezierSplineF" "HGeometry.BezierSpline" "hgeometry-spline-1.0.0.0-inplace" 'True) (C1 ('MetaCons "BezierSpline" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))
type Dimension (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

type Dimension (BezierSplineF f point) = 2
type NumType (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

type NumType (BezierSplineF f point) = NumType point
type Vertex (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

type Vertex (BezierSplineF f point) = point
type VertexIx (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

type VertexIx (BezierSplineF f point) = Int

type BezierSpline = BezierSplineF NonEmptyVector Source #

By default we store simple poylline as non-empty vectors.

type QuadraticBezier = BezierSplineF (Vector 3) Source #

Quadratic Bezier splines

type CubicBezier = BezierSplineF (Vector 4) Source #

Cubic Bezier splines