Math.Geometry


Builders and Accessors (Units)

Builder

Accessor

Length

Metric

Length.angstroms

Length.inAngstroms

\[ 1 * 10^{-10} \, Meters \]

Length.nanometers

Length.inNanometers

\[ 1 * 10^9 \, Meters \]

Length.microns

Length.inMicrons

\[ 1 * 10^{-6} \, Meters \]

Length.millimeters

Length.inMillimeters

\[ 0.001 \, Meters \]

Length.centimeters

Length.inCentimeters

\[ 0.01 \, Meters \]

Length.kilometers

Length.inKilometers

\[ 1000 \, Meters \]

Imperial

Length.inch

Length.inInches

\[ 0.0254 \, Meters \]

Length.feet

Length.inFeet

\[ 12 \, Inches \]

Length.yards

Length.inYards

\[ 3 \, Feet \]

Length.thou

Length.inThou

\[ 0.001 \, Inches \]

Length.miles

Length.inMiles

\[ 5280 \, Feet \]

Astronomical Units

Length.astronomicalUnits

Length.inAstronomicalUnits

\[ \approx 1.50 * 10^{11} \, Meters \]

Length.lightYears

Length.inLightYears

\[ \approx 9.46 * 10^{15} \, Meters \]

Length.parsecs

Length.inParsecs

\[ 648000 \pi \, Astronomical \, Units \]

Digital

Length.cssPixels

Length.inCssPixels

\[ \frac{1}{96} \, Inches \]

Length.points

Length.inPoints

\[ \frac{1}{72} \, Inches \]

Length.picas

Length.inPicas

\[ \frac{1}{6} \, Inches \]

Operators

Operator

Lhs

Rhs

Return Type

Example

Function

-

Length

Length

-length

Length2D.neg

+

Length

Length

Length

lhs + rhs

Length2D.plus

-

Length

Length

Length

lhs - rhs

Length2D.minus

*

Length

float

Length

lhs * 0.5

Length2D.times

*

float

Length

Length

0.5 * rhs

None

*

Angle

Length

Length

angle / length

None

*

Length

Angle

Length

length / angle

None

/

Length

float

Length

lhs / 4.

Length2D.dividedBy

/

Angle

Length

Length

angle / length

None

/

Length

Angle

Length

length / angle

None

Examples

let vec1: Vector2D<Meters, Cartesian> = Vector2D.meters 10. 20.

let vec2: Vector2D<Meters, Cartesian> = Vector2D.meters 30. 40.
-vec1
No value returned by any evaluator
vec1 + vec2
No value returned by any evaluator
vec1 - vec2
No value returned by any evaluator
vec1 * 2.
// Or
2. * vec1
No value returned by any evaluator
vec1 / 2.
No value returned by any evaluator

Math

let length = Length.meters 10.

Length.squared length
No value returned by any evaluator
let lengthSquared = Length.meters 3. * Length.meters 12.

Length.sqrt lengthSquared
No value returned by any evaluator
Length.twice length = 2. * length

Length.half length = 0.5 * length
Length.half length = length / 2.

Round to the nearest 10th digit. You can read more about digit precision

Length.round (Length.meters 0.123456789123456789)
No value returned by any evaluator
Length.roundTo 3 (Length.meters 0.11111)
No value returned by any evaluator
Length.min (Length.meters 3.) (Length.meters 4.)
No value returned by any evaluator
Length.max (Length.meters 3.) (Length.meters 4.)
No value returned by any evaluator
Length.sum [ Length.meters 1.; Length.meters 2. ]
No value returned by any evaluator

Unsafe Operations

Could not find reference ''
namespace Math
namespace Math.Geometry
namespace Math.Units
Multiple items
union case Cartesian.Cartesian: Cartesian

--------------------
type Cartesian = | Cartesian
val vec1 : Vector2D<Meters,Cartesian>
Multiple items
module Vector2D from Math.Geometry

--------------------
[<Struct>] type Vector2D<'Units,'Coordinates> = { X: Quantity<'Units> Y: Quantity<'Units> } interface IComparable interface IComparable<Vector2D<'Units,'Coordinates>> interface IGeometry<'Coordinates> member Comparison : other:Vector2D<'Units,'Coordinates> -> int override Equals : obj:obj -> bool + 1 overload override GetHashCode : unit -> int member LessThan : other:Vector2D<'Units,'Coordinates> -> bool static member ( * ) : vector:Vector2D<'Units,'Coordinates> * scale:float -> Vector2D<'Units,'Coordinates> + 1 overload static member ( + ) : lhs:Vector2D<'Units,'Coordinates> * rhs:Vector2D<'Units,'Coordinates> -> Vector2D<'Units,'Coordinates> static member ( - ) : lhs:Vector2D<'Units,'Coordinates> * rhs:Vector2D<'Units,'Coordinates> -> Vector2D<'Units,'Coordinates> ...
Multiple items
union case Meters.Meters: Meters

--------------------
type Meters = | Meters
<category>Unit</category>
val meters : x:float -> y:float -> Vector2D<Meters,'Coordinates>
val vec2 : Vector2D<Meters,Cartesian>
val length : Length
Multiple items
module Length from Math.Units
<category>Module: Unit System</category>
<summary> A <c>Length</c> represents a length in meters, feet, centimeters, miles etc. It is stored as a number of meters. </summary>


--------------------
type Length = Quantity<Meters>
<category>Unit System</category>
val meters : m:float -> Length
<category index="2">Metric</category>
static member Quantity.squared : quantity:Quantity<'Units> -> Quantity<Squared<'Units>>
val lengthSquared : Quantity<Product<Meters,Meters>>
static member Quantity.sqrt : quantity:Quantity<Squared<'Units>> -> Quantity<'a>
static member Quantity.twice : quantity:Quantity<'Units> -> Quantity<'Units>
static member Quantity.half : quantity:Quantity<'Units> -> Quantity<'Units>
static member Quantity.round : quantity:Quantity<'Units> -> Quantity<'Units>
static member Quantity.roundTo : digits:int -> quantity:Quantity<'Units> -> Quantity<'Units>
static member Quantity.min : x:Quantity<'Units> -> y:Quantity<'Units> -> Quantity<'Units>
static member Quantity.max : x:Quantity<'Units> -> y:Quantity<'Units> -> Quantity<'Units>
static member Quantity.sum : quantities:Quantity<'Units> list -> Quantity<'Units>