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 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
--> )
LineSegment3d.along Axis3d.y
(Length.meters 2)
(Length.meters -4)
--> LineSegment3d.fromEndpoints
--> ( Point3d.meters 0 2 0
--> , Point3d.meters 0 -4 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.
LineSegment3d.startPoint exampleLineSegment
--> Point3d.meters 1 2 3Get the end point of a line segment.
LineSegment3d.endPoint exampleLineSegment
--> Point3d.meters 4 5 6Get 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.fromExtrema
--> { minX = Length.meters 1
--> , maxX = Length.meters 4
--> , minY = Length.meters 2
--> , maxY = Length.meters 5
--> , minZ = Length.meters 3
--> , maxZ = Length.meters 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.
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.
These transformations generally behave just like the ones in the Point3d
module.
Reverse a line segment, swapping its start and end points.
LineSegment3d.reverse exampleLineSegment
--> LineSegment3d.fromEndpoints
--> ( Point3d.meters 4 5 6
--> , Point3d.meters 1 2 3
--> )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)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.