# Vec2F

## Description

`struct` `Tinman.Core.Math.Vectors.Vec2F`

A two-dimensional vector with 32-bit floating-point precision.

```/     \
|  X  |
|  Y  |
\     /```

## Public / Constants

### Undefined

`public` `static` `readonly` `attribute` `Undefined` → `(Vec2F)`

A vector with undefined value.

### Zero

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

The zero vector.

## Public / Constructors

### Vec2​F

`public` `constructor` `Vec2F` → `(2)`

in : float32

X-coordinate of vector.

in : float32

Y-coordinate of vector.

Creates a new instance of Vec2F.

## Public / Methods

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

in : Vec2F

The vector.

returns → Vec2F

The resulting vector.

Adds this vector and the given one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → Vec2F

The resulting vector.

Adds this vector and the given one.

### Barycentric

`[Pure]`
`public` `method` `Barycentric` → `(3)`

in : Vec2F

First vertex of triangle.

in : Vec2F

Second vertex of triangle.

in : Vec2F

Third vertex of triangle.

returns → Vec3F

The barycentric coordinates of this vector, where Vec3F.X, Vec3F.Y and Vec3F.Z represent the weights for the triangle vertices in, in and in (in this order). This vector lies inside of the given triangle iff Vec3F.X, Vec3F.Y and Vec3F.Z are non-negative.

Computes the barycentric coordinates of this vector in the given triangle.

### Ceiling

`[Pure]`
`public` `method` `Ceiling` → `()`

returns → Vec2F

The resulting vector.

Computes the component-wise ceiling of this vector.

### Choose

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

idx in : int32

The zero-based component index.

opt : float32 = 0

The value to return if idx in is out of range.

returns → float32

The resulting vector.

Chooses a component of this vector.

### Cross

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

in : float32

Z-component of vector (X- and Y-components are zero).

returns → Vec2F

The cross product vector.

Computes the cross product between this vector and the given one: `this x other`.

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

in : Vec2F

The other vector.

returns → float32

The Z-component of the cross product vector (X- and Y-components are zero).

Computes the cross product between this vector and the given one: `this x other`.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → float32

The Z-component of the cross product vector (X- and Y-components are zero).

Computes the cross product between this vector and the given one: `this x other`.

### Div

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

in : float32

The scalar value.

returns → Vec2F

The resulting vector.

Divides this vector by the given scalar value.

### Dot

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

in : Vec2F

The vector.

returns → float32

The resulting vector.

Computes the dot product between this vector and the given one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → float32

The resulting vector.

Computes the dot product between this vector and the given one.

### Equals

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → bool

`true` if both vectors are equal, `false` if they are not.

Checks if this vector and the given one are equal.

### Equals​Almost

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

in : Vec2F

The vector.

returns → bool

`true` if both vectors are similar, `false` if they are not.

Checks if this vector and the given one are similar but necessarily equal.

Maths.Similar1

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → bool

`true` if both vectors are similar, `false` if they are not.

Checks if this vector and the given one are similar but necessarily equal.

Maths.Similar1

### Floor

`[Pure]`
`public` `method` `Floor` → `()`

returns → Vec2F

The resulting vector.

Computes the component-wise floor of this vector.

### Max

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

in : Vec2F

The vector.

returns → Vec2F

The resulting vector.

Computes the component-wise maximum of this vector and the given one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → Vec2F

The resulting vector.

Computes the component-wise maximum of this vector and the given one.

### Min

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

in : Vec2F

The vector.

returns → Vec2F

The resulting vector.

Computes the component-wise minimum of this vector and the given one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → Vec2F

The resulting vector.

Computes the component-wise minimum of this vector and the given one.

### Mul

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

in : Vec2F

The vector.

returns → Vec2F

The resulting vector.

Multiplies this vector with the given one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → Vec2F

The resulting vector.

Multiplies this vector with the given one.

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

in : float32

The scalar value.

returns → Vec2F

The resulting vector.

Multiplies this vector with the given scalar value.

### Neg

`[Pure]`
`public` `method` `Neg` → `()`

returns → Vec2F

The resulting vector.

Negates this vector.

### Norm

`[Pure]`
`public` `method` `Norm` → `()`

returns → Vec2F

The resulting vector.

Normalizes this vector to unit length.

### Sub

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

in : Vec2F

The vector.

returns → Vec2F

The resulting vector.

Subtracts the given vector from this one.

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

in : float32

X-component of vector.

in : float32

Y-component of vector.

returns → Vec2F

The resulting vector.

Subtracts the given vector from this one.

### To​String

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

flags in : FormatFlags

The format flags to use.

returns → string

The string representation.

Returns the string representation of this vector.

Format.ThisNum

## Public / Attributes

### Is​Undefined

`public` `attribute` `IsUndefined` → `(get)`

value : bool

`true` if this vector has an undefined value, `false` if not.

Checks if this vector has an undefined value.

A vector is undefined if at least one component is NaN (not-a-number).

### Length

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

value : float64

`[>=0]`
The vector length.

Returns the length of this vector.

### Length​Sqr

`public` `attribute` `LengthSqr` → `(get)`

value : float64

`[>=0]`
The squared vector length.

Returns the squared length of this vector.

### X

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

X-coordinate of vector.

### Y

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

Y-coordinate of vector.

## Serialization

### Serializer

`public` `static` `readonly` `attribute` `Serializer` → `(ITypeSerializerEx<Vec2F>)`

The serialization helper object for values of Vec2F.