ianmackenzie / elm-geometry / Ellipsoid3d

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


type alias Ellipsoid3d units coordinates =
Geometry.Types.Ellipsoid3d units coordinates

Constructors

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
        }

Properties

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)

Queries

contains : Point3d units coordinates -> Ellipsoid3d units coordinates -> Basics.Bool

Check if an ellipsoid contains a given point.

Measurement

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.

Transformations

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.

Unit conversions

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.

Coordinate conversions

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.