A QuadraticSpline3d is a quadratic Bézier curve
in 3D defined by three control points. This module contains functionality for
Splines can be constructed by passing a tuple of control points to the
QuadraticSpline3d constructor, for example
exampleSpline =
QuadraticSpline3d
( Point3d ( 1, 1, 1 )
, Point3d ( 3, 2, 1 )
, Point3d ( 3, 3, 3 )
)Get the control points of a spline as a tuple.
( p1, p2, p3 ) =
QuadraticSpline3d.controlPoints exampleSpline
--> p1 = Point3d ( 1, 1, 1 )
--> p2 = Point3d ( 3, 2, 1 )
--> p3 = Point3d ( 3, 3, 3 )Get the start point of a spline. This is equal to the spline's first control point.
QuadraticSpline3d.startPoint exampleSpline
--> Point3d ( 1, 1, 1 )Get the end point of a spline. This is equal to the spline's last control point.
QuadraticSpline3d.endPoint exampleSpline
--> Point3d ( 3, 3, 3 )Get the start derivative of a spline. This is equal to twice the vector from the spline's first control point to its second.
QuadraticSpline3d.startDerivative exampleSpline
--> Vector3d ( 4, 2, 0 )Get the end derivative of a spline. This is equal to twice the vector from the spline's second control point to its third.
QuadraticSpline3d.endDerivative exampleSpline
--> Vector3d ( 0, 2, 4 )Get a point along a spline, based on a parameter that ranges from 0 to 1. A parameter value of 0 corresponds to the start point of the spline and a value of 1 corresponds to the end point.
QuadraticSpline3d.point exampleSpline 0
--> Point3d ( 1, 1, 1 )
QuadraticSpline3d.point exampleSpline 0.5
--> Point3d ( 2.5, 2, 1.5 )
QuadraticSpline3d.point exampleSpline 1
--> Point3d ( 3, 3, 3 )Get the deriative value at a point along a spline, based on a parameter that ranges from 0 to 1. A parameter value of 0 corresponds to the start derivative of the spline and a value of 1 corresponds to the end derivative.
QuadraticSpline3d.derivative exampleSpline 0
--> Vector3d ( 4, 2, 0 )
QuadraticSpline3d.derivative exampleSpline 0.5
--> Vector3d ( 2, 2, 2 )
QuadraticSpline3d.derivative exampleSpline 1
--> Vector3d ( 0, 2, 4 )Note that the derivative interpolates linearly from end to end.
Scale a spline about the given center point by the given scale.
QuadraticSpline3d.scaleAbout Point3d.origin 2 exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 2, 2, 2 )
--> , Point3d ( 6, 4, 2 )
--> , Point3d ( 6, 6, 6 )
--> )Rotate a spline counterclockwise around a given axis by a given angle (in radians).
QuadraticSpline3d.rotateAround Axis3d.z (degrees 90) exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( -1, 1, 1 )
--> , Point3d ( -2, 3, 1 )
--> , Point3d ( -3, 3, 3 )
--> )Translate a spline by a given displacement.
displacement =
Vector3d ( 2, 3, 1 )
QuadraticSpline3d.translateBy displacement exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 3, 4, 2 )
--> , Point3d ( 5, 5, 2 )
--> , Point3d ( 5, 6, 4 )
--> )Mirror a spline across a plane.
QuadraticSpline3d.mirrorAcross Plane3d.xy exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 1, 1, -1 )
--> , Point3d ( 3, 2, -1 )
--> , Point3d ( 3, 3, -3 )
--> )Project a spline onto a plane.
QuadraticSpline3d.projectOnto Plane3d.xy exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 1, 1, 0 )
--> , Point3d ( 3, 2, 0 )
--> , Point3d ( 3, 3, 0 )
--> )Take a spline defined in global coordinates, and return it expressed in local coordinates relative to a given reference frame.
localFrame =
Frame3d.at (Point3d ( 1, 2, 3 ))
QuadraticSpline3d.relativeTo localFrame exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 0, -1, -2 )
--> , Point3d ( 2, 0, -2 )
--> , Point3d ( 2, 1, 0 )
--> )Take a spline considered to be defined in local coordinates relative to a given reference frame, and return that spline expressed in global coordinates.
localFrame =
Frame3d.at (Point3d ( 1, 2, 3 ))
QuadraticSpline3d.placeIn localFrame exampleSpline
--> QuadraticSpline3d
--> ( Point3d ( 2, 3, 4 )
--> , Point3d ( 4, 4, 4 )
--> , Point3d ( 4, 5, 6 )
--> )Project a spline into a given sketch plane. Conceptually, this projects the spline onto the plane and then expresses the projected spline in 2D sketch coordinates.
QuadraticSpline3d.projectInto SketchPlane3d.yz exampleSpline
--> QuadraticSpline2d
--> ( Point2d ( 1, 1 )
--> , Point2d ( 2, 1 )
--> , Point2d ( 3, 3 )
--> )
Construct a spline from its three control points. This is the same as just using the
QuadraticSpline3dconstructor directly;is equivalent to