# RangeF

## Description

`struct` `Tinman.Core.Math.RangeF`

A closed interval of numbers (32-bit floating-point): `[Start..End]`

``` +----+----+----+----+----+----+----+----+--->  Number axis
-4   -3   -2   -1    0    1    2    3    4
^                   ^
Start               End
\___________________/
Length := End - Start```

## Public / Constants

### Inv

`public` `static` `readonly` `attribute` `Inv` → `(RangeF)`

The value of Max, with swapped start and end values.

This range can be used as the initial value for finding the minimum/maximum of a series of numbers (see `Grow`).

### Max

`public` `static` `readonly` `attribute` `Max` → `(RangeF)`

A range that contains all 32-bit floating-point values.

### Pos

`public` `static` `readonly` `attribute` `Pos` → `(RangeF)`

A range that contains all positive 32-bit floating-point values.

### Unit

`public` `static` `readonly` `attribute` `Unit` → `(RangeF)`

The unit interval: `[0..1]`.

### Zero

`public` `static` `readonly` `attribute` `Zero` → `(RangeF)`

A range at offset zero with zero length.

## Public / Constructors

### Closed

`[Pure]`
`public` `static` `method` `Closed` → `(2)`

in : float32

Left value of interval.

in : float32

Right value of interval.

returns → RangeF

The range value.

Returns a range that represents the closed interval `[a..b]` (i.e. both `a` and `b` are contained in the range).

### From

`[Pure]`
`public` `static` `method` `From` → `(1)`

in : float32

Ths range start value.

returns → RangeF

The range value.

Returns a range that contains all values greater than or equal to in.

### Of

`[Pure]`
`public` `static` `method` `Of1` → `(1)`

in : float32

The value to contains.

returns → RangeF

The range value.

Returns the shortest possible range that contains the given value.

`[Pure]`
`public` `static` `method` `Of2` → `(2)`

in : float32

First value to contains.

in : float32

Second value to contains.

returns → RangeF

The range value.

Returns the shortest possible range that contains the given values.

`[Pure]`
`public` `static` `method` `Of3` → `(3)`

in : float32

First value to contains.

in : float32

Second value to contains.

in : float32

Third value to contains.

returns → RangeF

The range value.

Returns the shortest possible range that contains the given values.

### To

`[Pure]`
`public` `static` `method` `To` → `(1)`

in : float32

Ths range end value.

returns → RangeF

The range value.

Returns a range that contains all values less than or equal to in.

## Public / Methods

### Clamp

`[Pure]`
`public` `method` `Clamp` → `(1)`

value in : float32

The value to clamp.

returns → float32

The clamped value.

Clamps the given value to this range.

### Contains

`[Pure]`
`public` `method` `Contains1` → `(1)`

value in : float32

The value.

returns → bool

`true` if value in is contained in this range, `false` if not.

Checks if this range contains the given value.

`[Pure]`
`public` `method` `Contains2` → `(1)`

range in : RangeF

The range.

returns → bool

`true` if range in is fully contained in this range, `false` if not.

Checks if this range fully contains the given range.

### Grow

`[Pure]`
`public` `method` `Grow1` → `(1)`

value in : float32

The value.

returns → RangeF

The resulting range.

Grows this range so that it contains the given value.

`[Pure]`
`public` `method` `Grow2` → `(1)`

range in : RangeF

The range.

returns → RangeF

The resulting range.

Grows this range so that it fully contains the given range.

### Intersection

`[Pure]`
`public` `method` `Intersection` → `(1)`

other in : RangeF

The other range.

returns → RangeF

The resulting range.

Intersects this range with the given one.

### Intersects

`[Pure]`
`public` `method` `Intersects` → `(1)`

other in : RangeF

The other range.

returns → bool

`true` if both ranges intersect, `false` if not.

Checks if this range intersects with the given one.

### Scale

`[Pure]`
`public` `method` `Scale` → `(1)`

factor in : float32

`[>0]`
The scale factor.

returns → RangeF

The scaled range.

Scales this range.

### Transform

`[Pure]`
`public` `method` `Transform` → `(2)`

value in : float32

The value to transform.

target in : RangeF

The target range.

returns → float32

The transformed value.

Transforms the given value from this range to the given range.

The method maps Start to target in. Start and End to target in. End.
No clamping is performed by this method.

## Public / Attributes

### End

`public` `readonly` `attribute` `End` → `(float32)`

End of number range (inclusive).

### IsEmpty

`public` `attribute` `IsEmpty` → `(get)`

value : bool

`true` if this range is empty, `false` if it is not.

Is this number range empty?

### Length

`public` `attribute` `Length` → `(get)`

value : float32

The range length.

Length of this number range.

### Start

`public` `readonly` `attribute` `Start` → `(float32)`

Start of number range (inclusive).

## Serialization

### Serializer

`public` `static` `readonly` `attribute` `Serializer` → `(ITypeSerializer<RangeF>)`

The serialization helper object for values of RangeF.