waterfall-cad-0.2.2.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).

Instances

Instances details
Monoid Path2D Source # 
Instance details

Defined in Waterfall.TwoD.Internal.Path2D

Semigroup Path2D Source #

The Semigroup for Path2D attempts to join two paths that share a common endpoint.

Attempts to combine paths that do not share a common endpoint currently in an error case that is not currently handled gracefully.

Instance details

Defined in Waterfall.TwoD.Internal.Path2D

Transformable2D Path2D Source # 
Instance details

Defined in Waterfall.TwoD.Transforms

AnyPath (V2 Double) Path2D Source # 
Instance details

Defined in Waterfall.Path.Common

Methods

fromWire :: Acquire (Ptr Wire) -> Path2D

pointToGPPnt :: Proxy Path2D -> V2 Double -> Acquire (Ptr Pnt)

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.

closeLoop :: Path2D -> Path2D Source #

Given a path, return a new path with the endpoints joined by a straight line.

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