A LineSegment3d is a line between two points in 3D. This module contains
functionality such as:
Construct a line segment from its two endpoints:
exampleLineSegment =
LineSegment3d.fromEndpoints
( Point3d.meters 1 2 3
, Point3d.meters 4 5 6
)Construct a line segment from the first point to the second;
LineSegment3d.from firstPoint secondPointis equivalent to
LineSegment3d.fromEndpoints ( firstPoint, secondPoint )Construct a line segment given its start point and the vector from its start point to its end point;
LineSegment3d.fromPointAndVector point vectoris equivalent to
LineSegment3d.fromEndpoints
( point
, point |> Point3d.translateBy vector
)Construct a line segment lying on the given axis, with its endpoints at the given distances from the axis' origin point.
LineSegment3d.along Axis3d.x
(Length.meters 3)
(Length.meters 5)
--> LineSegment3d.fromEndpoints
--> ( Point3d.meters 3 0 0
--> , Point3d.meters 5 0 0
--> )Construct a 3D line segment lying on a sketch plane by providing a 2D line segment specified in XY coordinates within the sketch plane.
LineSegment3d.on SketchPlane3d.yz <|
LineSegment2d.fromEndpoints
( Point2d.meters 1 2
, Point2d.meters 3 4
)
--> LineSegment3d.fromEndpoints
--> ( Point3d.meters 0 1 2
--> , Point3d.meters 0 3 4
--> )Get the start point of a line segment.
Get the end point of a line segment.
Get the endpoints of a line segment as a tuple.
( p1, p2 ) =
LineSegment3d.endpoints lineSegmentGet the midpoint of a line segment.
LineSegment3d.midpoint exampleLineSegment
--> Point3d.meters 2.5 3.5 4.5Get the length of a line segment.
LineSegment3d.length exampleLineSegment
--> Length.meters 5.1962Get the direction from a line segment's start point to its end point. If the
line segment has zero length (the start and end points are the same), returns
Nothing.
LineSegment3d.direction exampleLineSegment
--> Just <|
--> Direction3d.xyZ (Angle.degrees 45)
--> (Angle.degrees 35.26)Get an arbitrary direction perpendicular to a line segment. If the line
segment has zero length, returns Nothing.
LineSegment3d.perpendicularDirection exampleLineSegment
--> Just (Direction3d.yz (Angle.degrees 135))Get the vector from a line segment's start point to its end point.
LineSegment3d.vector exampleLineSegment
--> Vector3d.meters 2 2 2Get the minimal bounding box containing a line segment.
LineSegment3d.boundingBox exampleLineSegment
--> BoundingBox3d.from
--> (Point3d.meters 1 2 3)
--> (Point3d.meters 4 5 6)Interpolate a line segment between its start and end points; a value of 0.0 corresponds to the start point of the line segment, a value of 0.5 corresponds to its midpoint and a value of 1.0 corresponds to its end point. Values less than 0.0 or greater than 1.0 can be used to extrapolate.
LineSegment3d.interpolate exampleLineSegment (1 / 3)
--> Point3d.meters 2 4 5
LineSegment3d.interpolate exampleLineSegment (-1 / 3)
--> Point3d.meters 0 1 2If you just need to interpolate between two points, you don't have to construct
a line segment first - you can use Point3d.interpolateFrom
directly.
Try to find the unique intersection point of a line segment with a plane. If
the line segment does not intersect the plane, or if it is coplanar with it
(lying perfectly in the plane), returns Nothing.
Measure the distance of a line segment along an axis. This is the range of distances along the axis resulting from projecting the line segment perpendicularly onto the axis.
Note that reversing the line segment will not affect the result.
Measure the distance of a line segment from a plane. If the returned interval:
Note that reversing the line segment will not affect the result.
These transformations generally behave just like the ones in the Point3d
module.
Reverse a line segment, swapping its start and end points.
Scale a line segment about the given center point by the given scale.
Rotate a line segment around a given axis by a given angle.
Translate a line segment by a given displacement.
Translate a line segment in a given direction by a given distance.
Mirror a line segment across a plane.
Find the orthographic projection of a line segment onto a plane.
Transform the start and end points of a line segment by a given function
and create a new line segment from the resulting points. Most other
transformation functions can be defined in terms of mapEndpoints; for example,
LineSegment3d.projectOnto planeis equivalent to
LineSegment3d.mapEndpoints (Point3d.projectOnto plane)Convert a line segment from one units type to another, by providing a conversion factor given as a rate of change of destination units with respect to source units.
Convert a line segment from one units type to another, by providing an 'inverse' conversion factor given as a rate of change of source units with respect to destination units.
Take a line segment defined in global coordinates, and return it expressed in local coordinates relative to a given reference frame.
Take a line segment considered to be defined in local coordinates relative to a given reference frame, and return that line segment expressed in global coordinates.
Project a line segment into a given sketch plane.