opensolid/geometry/3.0.0

NOTE: this package is not compatible with Elm 0.19.1

QuadraticSpline2d

QuadraticSpline2d

A QuadraticSpline2d is a quadratic Bézier curve in 2D defined by a start point, control point and end point. This module contains functionality for

  • Evaluating points and derivatives along a spline
  • Scaling, rotating, translating or mirroring a spline
  • Converting a spline between local and global coordinates in different reference frames
type alias QuadraticSpline2d =
QuadraticSpline2d

Constructors

{ startPoint : Point2d
, controlPoint : Point2d
, endPoint : Point2d
}
-> QuadraticSpline2d

Properties

startPoint : QuadraticSpline2d -> Point2d
endPoint : QuadraticSpline2d -> Point2d
controlPoint : QuadraticSpline2d -> Point2d
startDerivative : QuadraticSpline2d -> Vector2d
endDerivative : QuadraticSpline2d -> Vector2d
boundingBox : QuadraticSpline2d -> BoundingBox2d

Evaluation

pointOn : QuadraticSpline2d -> ParameterValue -> Point2d
pointsAt : List ParameterValue -> QuadraticSpline2d -> List Point2d
nondegenerate : QuadraticSpline2d -> Result Point2d Nondegenerate
fromNondegenerate : Nondegenerate -> QuadraticSpline2d
tangentDirection : Nondegenerate -> ParameterValue -> Direction2d
tangentDirectionsAt : List ParameterValue -> Nondegenerate -> List Direction2d
sample : Nondegenerate -> ParameterValue -> ( Point2d, Direction2d )
List ParameterValue
-> Nondegenerate
-> List ( Point2d, Direction2d )

Transformations

reverse : QuadraticSpline2d -> QuadraticSpline2d
scaleAbout : Point2d -> Float -> QuadraticSpline2d -> QuadraticSpline2d
rotateAround : Point2d -> Float -> QuadraticSpline2d -> QuadraticSpline2d
translateBy : Vector2d -> QuadraticSpline2d -> QuadraticSpline2d
translateIn : Direction2d -> Float -> QuadraticSpline2d -> QuadraticSpline2d
mirrorAcross : Axis2d -> QuadraticSpline2d -> QuadraticSpline2d

Coordinate conversions

relativeTo : Frame2d -> QuadraticSpline2d -> QuadraticSpline2d
placeIn : Frame2d -> QuadraticSpline2d -> QuadraticSpline2d

Subdivision

bisect : QuadraticSpline2d -> ( QuadraticSpline2d, QuadraticSpline2d )
ParameterValue
-> QuadraticSpline2d
-> ( QuadraticSpline2d, QuadraticSpline2d )

Arc length parameterization

arcLengthParameterized : { maxError : Float } -> QuadraticSpline2d -> ArcLengthParameterized
arcLength : ArcLengthParameterized -> Float
pointAlong : ArcLengthParameterized -> Float -> Maybe Point2d
tangentDirectionAlong : ArcLengthParameterized -> Float -> Maybe Direction2d
sampleAlong : ArcLengthParameterized -> Float -> Maybe ( Point2d, Direction2d )

Low level

An ArcLengthParameterized value is a combination of an ArcLengthParameterization and an underlying QuadraticSpline2d. If you need to do something fancy, you can extract these two values separately.

arcLengthParameterization : ArcLengthParameterized -> ArcLengthParameterization
fromArcLengthParameterized : ArcLengthParameterized -> QuadraticSpline2d

Differentiation

You are unlikely to need to use these functions directly, but they are useful if you are writing low-level geometric algorithms.

firstDerivative : QuadraticSpline2d -> ParameterValue -> Vector2d
firstDerivativesAt : List ParameterValue -> QuadraticSpline2d -> List Vector2d
secondDerivative : QuadraticSpline2d -> Vector2d