waterfall-cad-0.5.1.0: Declarative CAD/Solid Modeling Library
Safe HaskellNone
LanguageHaskell2010

Waterfall.TwoD.Path2D

Description

Paths in 2D space.

Synopsis

Documentation

data Path2D Source #

A Path in 2D Space

Under the hood, this is represented by an OpenCascade Wire, constrained to the plane \(z=0\).

Please feel free to report a bug if you're able to construct a Path2D which does not lie on this plane (without using Internal functions).

The monoid instance Joins Path2Ds, a <> b connects the end point of a to the start of b , if these points are not coincident, a line is created between them.

data Sense Source #

Instances

Instances details
Show Sense Source # 
Instance details

Defined in Waterfall.TwoD.Path2D

Methods

showsPrec :: Int -> Sense -> ShowS #

show :: Sense -> String #

showList :: [Sense] -> ShowS #

Eq Sense Source # 
Instance details

Defined in Waterfall.TwoD.Path2D

Methods

(==) :: Sense -> Sense -> Bool #

(/=) :: Sense -> Sense -> Bool #

arc :: Sense -> Double -> V2 Double -> V2 Double -> Path2D Source #

Section of a circle, with a given radius, that lies between two points.

This may fail, if the radius is less than half of the distance between the points.

In general, arcVia is the "safer" way to construct an arc.

arc is not polymorphic, as it would not be possible to define an arc in 3D space in this way.

arcTo :: Sense -> Double -> V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

Version of arc designed to work with pathFrom

arcRelative :: Sense -> Double -> V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

Version of arc designed to work with pathFrom

With relative points; specifying the distance of the endpoint relative to the start of the line, rather than in absolute space.

repeatLooping :: Path2D -> Path2D Source #

Given a Path where both endpoints are equidistant from the origin.

And which subtends an angle \( φ \) from the origin that evenly divides a complete revolution, such that \(n φ = 2 π \).

Replicates the path \( n \) times, rotating it by \( φ \), until the resulting path completes one revolution around the origin.

This can be used to construct paths with rotational symmetry, such as regular polygons, or gears.

line2D :: V2 Double -> V2 Double -> Path2D Source #

line, with the type fixed to Path2D

lineTo2D :: V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

lineTo, with the type fixed to Path2D

lineRelative2D :: V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

lineRelative, with the type fixed to Path2D

arcVia2D :: V2 Double -> V2 Double -> V2 Double -> Path2D Source #

arcVia, with the type fixed to Path2D

arcViaTo2D :: V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

arcViaTo, with the type fixed to Path2D

bezier2D :: V2 Double -> V2 Double -> V2 Double -> V2 Double -> Path2D Source #

bezier, with the type fixed to Path2D

bezierTo2D :: V2 Double -> V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D) Source #

bezierTo, with the type fixed to Path2D

pathFrom2D :: V2 Double -> [V2 Double -> (V2 Double, Path2D)] -> Path2D Source #

pathFrom, with the type fixed to Path2D

pathFromTo2D :: [V2 Double -> (V2 Double, Path2D)] -> V2 Double -> (V2 Double, Path2D) Source #

pathFromTo, with the type fixed to Path2D

closeLoop2D :: Path2D -> Path2D Source #

closeLoop with the type fixed to Path2D

reversePath2D :: Path2D -> Path2D Source #

reversePath with the type fixed to Path2D

splice2D :: Path2D -> V2 Double -> (V2 Double, Path2D) Source #

splice with the type fixed to Path2D

splitPath2D :: Path2D -> [Path2D] Source #

splitPath with the type fixed to Path2D