opensolid/geometry/3.0.1

NOTE: this package is not compatible with Elm 0.19.1

QuadraticSpline3d

QuadraticSpline3d

A QuadraticSpline3d is a quadratic Bézier curve in 3D 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 QuadraticSpline3d =
QuadraticSpline3d

Constructors

{ startPoint : Point3d
, controlPoint : Point3d
, endPoint : Point3d
}
-> QuadraticSpline3d
on : SketchPlane3d -> QuadraticSpline2d -> QuadraticSpline3d

Properties

startPoint : QuadraticSpline3d -> Point3d
endPoint : QuadraticSpline3d -> Point3d
controlPoint : QuadraticSpline3d -> Point3d
startDerivative : QuadraticSpline3d -> Vector3d
endDerivative : QuadraticSpline3d -> Vector3d
boundingBox : QuadraticSpline3d -> BoundingBox3d

Evaluation

pointOn : QuadraticSpline3d -> ParameterValue -> Point3d
pointsAt : List ParameterValue -> QuadraticSpline3d -> List Point3d
nondegenerate : QuadraticSpline3d -> Result Point3d Nondegenerate
fromNondegenerate : Nondegenerate -> QuadraticSpline3d
tangentDirection : Nondegenerate -> ParameterValue -> Direction3d
tangentDirectionsAt : List ParameterValue -> Nondegenerate -> List Direction3d
sample : Nondegenerate -> ParameterValue -> ( Point3d, Direction3d )
List ParameterValue
-> Nondegenerate
-> List ( Point3d, Direction3d )

Transformations

reverse : QuadraticSpline3d -> QuadraticSpline3d
scaleAbout : Point3d -> Float -> QuadraticSpline3d -> QuadraticSpline3d
rotateAround : Axis3d -> Float -> QuadraticSpline3d -> QuadraticSpline3d
translateBy : Vector3d -> QuadraticSpline3d -> QuadraticSpline3d
translateIn : Direction3d -> Float -> QuadraticSpline3d -> QuadraticSpline3d
mirrorAcross : Plane3d -> QuadraticSpline3d -> QuadraticSpline3d
projectOnto : Plane3d -> QuadraticSpline3d -> QuadraticSpline3d

Coordinate conversions

relativeTo : Frame3d -> QuadraticSpline3d -> QuadraticSpline3d
placeIn : Frame3d -> QuadraticSpline3d -> QuadraticSpline3d

Sketch planes

projectInto : SketchPlane3d -> QuadraticSpline3d -> QuadraticSpline2d

Subdivision

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

Arc length parameterization

arcLengthParameterized : { maxError : Float } -> QuadraticSpline3d -> ArcLengthParameterized
arcLength : ArcLengthParameterized -> Float
pointAlong : ArcLengthParameterized -> Float -> Maybe Point3d
tangentDirectionAlong : ArcLengthParameterized -> Float -> Maybe Direction3d
sampleAlong : ArcLengthParameterized -> Float -> Maybe ( Point3d, Direction3d )

Low level

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

arcLengthParameterization : ArcLengthParameterized -> ArcLengthParameterization
fromArcLengthParameterized : ArcLengthParameterized -> QuadraticSpline3d

Differentiation

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

firstDerivative : QuadraticSpline3d -> ParameterValue -> Vector3d
firstDerivativesAt : List ParameterValue -> QuadraticSpline3d -> List Vector3d
secondDerivative : QuadraticSpline3d -> Vector3d