An ellipsoid is defined by a
center point, X, Y and Z radii, and a Frame3d
representing the ellipsoid's
axes. This module includes functionality for
Geometry.Types.Ellipsoid3d units coordinates
with : { axes : Frame3d units coordinates defines, xRadius : Quantity Basics.Float units, yRadius : Quantity Basics.Float units, zRadius : Quantity Basics.Float units } -> Ellipsoid3d units coordinates
Construct a 3d ellipsoid from its axes and X, Y and Z radii. If you pass a negative radius, the absolute value will be used.
exampleEllipsoid =
Ellipsoid3d.with
{ axes = Frame3d.atPoint (Point3d.meters 2 1 3)
, xRadius = Length.meters 5
, yRadius = Length.meters 3
, zRadius = Length.meters 4
}
centerPoint : Ellipsoid3d units coordinates -> Point3d units coordinates
Get the geometric center of an ellipsoid.
axes : Ellipsoid3d units coordinates -> Frame3d units coordinates defines
Get the X, Y and Z axes of an ellipsoid as a Frame3d
.
xAxis : Ellipsoid3d units coordinates -> Axis3d units coordinates
Get the X axis of an ellipsoid.
yAxis : Ellipsoid3d units coordinates -> Axis3d units coordinates
Get the Y axis of an ellipsoid.
zAxis : Ellipsoid3d units coordinates -> Axis3d units coordinates
Get the Z axis of an ellipsoid.
xDirection : Ellipsoid3d units coordinates -> Direction3d coordinates
Get the direction of the ellipsoid's X axis.
yDirection : Ellipsoid3d units coordinates -> Direction3d coordinates
Get the direction of the ellipsoid's Y axis.
zDirection : Ellipsoid3d units coordinates -> Direction3d coordinates
Get the direction of the ellipsoid's Z axis.
xRadius : Ellipsoid3d units coordinates -> Quantity Basics.Float units
Get the radius of an ellipsoid along its X axis.
Ellipsoid3d.xRadius exampleEllipsoid
--> Length.meters 5
yRadius : Ellipsoid3d units coordinates -> Quantity Basics.Float units
Get the radius of an ellipsoid along its Y axis.
Ellipsoid3d.yRadius exampleEllipsoid
--> Length.meters 3
zRadius : Ellipsoid3d units coordinates -> Quantity Basics.Float units
Get the radius of an ellipsoid along its Z axis.
Ellipsoid3d.zRadius exampleEllipsoid
--> Length.meters 4
volume : Ellipsoid3d units coordinates -> Quantity Basics.Float (Quantity.Cubed units)
Get the volume of an ellipsoid.
boundingBox : Ellipsoid3d units coordinates -> BoundingBox3d units coordinates
Get the minimal bounding box containing a given ellipsoid.
Ellipsoid3d.boundingBox exampleSphere
--> BoundingBox3d.from
--> (Point3d.meters -3 -2 -1)
--> (Point3d.meters 7 4 7)
contains : Point3d units coordinates -> Ellipsoid3d units coordinates -> Basics.Bool
Check if an ellipsoid contains a given point.
signedDistanceAlong : Axis3d units coordinates -> Ellipsoid3d units coordinates -> Quantity.Interval.Interval Basics.Float units
Project an ellipsoid onto an axis, returning the range of projected distances along that axis.
scaleAbout : Point3d units coordinates -> Basics.Float -> Ellipsoid3d units coordinates -> Ellipsoid3d units coordinates
Scale an ellipsoid about a given point by a given scale.
rotateAround : Axis3d units coordinates -> Angle -> Ellipsoid3d units coordinates -> Ellipsoid3d units coordinates
Rotate an ellipsoid around a given axis by a given angle.
translateBy : Vector3d units coordinates -> Ellipsoid3d units coordinates -> Ellipsoid3d units coordinates
Translate an ellipsoid by a given displacement.
translateIn : Direction3d coordinates -> Quantity Basics.Float units -> Ellipsoid3d units coordinates -> Ellipsoid3d units coordinates
Translate an ellipsoid in a given direction by a given distance.
mirrorAcross : Plane3d units coordinates -> Ellipsoid3d units coordinates -> Ellipsoid3d units coordinates
Mirror an ellipsoid across a given plane. Note that this will flip the handedness of the ellipsoid's axes.
at : Quantity Basics.Float (Quantity.Rate units2 units1) -> Ellipsoid3d units1 coordinates -> Ellipsoid3d units2 coordinates
Convert an ellipsoid 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.
at_ : Quantity Basics.Float (Quantity.Rate units1 units2) -> Ellipsoid3d units1 coordinates -> Ellipsoid3d units2 coordinates
Convert an ellipsoid 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.
relativeTo : Frame3d units globalCoordinates { defines : localCoordinates } -> Ellipsoid3d units globalCoordinates -> Ellipsoid3d units localCoordinates
Take an ellipsoid defined in global coordinates, and return it expressed in local coordinates relative to a given reference frame.
placeIn : Frame3d units globalCoordinates { defines : localCoordinates } -> Ellipsoid3d units localCoordinates -> Ellipsoid3d units globalCoordinates
Take an ellipsoid considered to be defined in local coordinates relative to a given reference frame, and return that ellipsoid expressed in global coordinates.