ianmackenzie/elm-geometry/3.11.0

NOTE: the latest version is 4.0.0

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

  • Constructing ellipsoids
  • Scaling, rotating and translating ellipsoids
  • Converting ellipsoids between different coordinate systems
type alias Ellipsoid3d units coordinates =
Ellipsoid3d units coordinates

Constructors

{ axes : Frame3d units coordinates defines
, xRadius : Quantity Float units
, yRadius : Quantity Float units
, zRadius : Quantity 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.

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 Float units

Get the radius of an ellipsoid along its X axis.

Ellipsoid3d.xRadius exampleEllipsoid
--> Length.meters 5
yRadius : Ellipsoid3d units coordinates -> Quantity Float units

Get the radius of an ellipsoid along its Y axis.

Ellipsoid3d.yRadius exampleEllipsoid
--> Length.meters 3
zRadius : Ellipsoid3d units coordinates -> Quantity Float units

Get the radius of an ellipsoid along its Z axis.

Ellipsoid3d.zRadius exampleEllipsoid
--> Length.meters 4
volume : Ellipsoid3d units coordinates -> Quantity Float (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 -> Bool

Check if an ellipsoid contains a given point.

Measurement

Axis3d units coordinates
-> Ellipsoid3d units coordinates
-> Interval Float units

Project an ellipsoid onto an axis, returning the range of projected distances along that axis.

Transformations

Point3d units coordinates
-> Float
-> Ellipsoid3d units coordinates
-> Ellipsoid3d units coordinates

Scale an ellipsoid about a given point by a given scale.

Axis3d units coordinates
-> Angle
-> Ellipsoid3d units coordinates
-> Ellipsoid3d units coordinates

Rotate an ellipsoid around a given axis by a given angle.

Vector3d units coordinates
-> Ellipsoid3d units coordinates
-> Ellipsoid3d units coordinates

Translate an ellipsoid by a given displacement.

Direction3d coordinates
-> Quantity Float units
-> Ellipsoid3d units coordinates
-> Ellipsoid3d units coordinates

Translate an ellipsoid in a given direction by a given distance.

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 Float (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 Float (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

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.

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.