Struct Vector4B

Namespace
Elegy.Common.Maths
Assembly
Elegy.Common.dll

4-element structure that can be used to represent 4D grid coordinates or sets of integers.

[Serializable]
public struct Vector4B : IEquatable<Vector4B>
Implements
Inherited Members

Constructors

Vector4B(byte, byte, byte, byte)

Constructs a new Vector4B with the given components.

public Vector4B(byte x, byte y, byte z, byte w)

Parameters

x byte

The vector's X component.

y byte

The vector's Y component.

z byte

The vector's Z component.

w byte

The vector's W component.

Vector4B(Vector4)

Constructs a new Vector4B from the given Vector4.

public Vector4B(Vector4 v)

Parameters

v Vector4

Fields

W

The vector's W component. Also accessible by using the index position [3].

public byte W

Field Value

byte

X

The vector's X component. Also accessible by using the index position [0].

public byte X

Field Value

byte

Y

The vector's Y component. Also accessible by using the index position [1].

public byte Y

Field Value

byte

Z

The vector's Z component. Also accessible by using the index position [2].

public byte Z

Field Value

byte

Properties

this[int]

Access vector components using their index.

public byte this[int index] { readonly get; set; }

Parameters

index int

Property Value

byte

[0] is equivalent to X, [1] is equivalent to Y, [2] is equivalent to Z. [3] is equivalent to W.

Exceptions

ArgumentOutOfRangeException

index is not 0, 1, 2 or 3.

MaxValue

Max vector, a vector with all components equal to MaxValue.

public static Vector4B MaxValue { get; }

Property Value

Vector4B

Equivalent to new Vector4B(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue).

MinValue

Min vector, a vector with all components equal to MinValue.

public static Vector4B MinValue { get; }

Property Value

Vector4B

Equivalent to new Vector4B(byte.MinValue, byte.MinValue, byte.MinValue, byte.MinValue).

One

One vector, a vector with all components set to 1.

public static Vector4B One { get; }

Property Value

Vector4B

Equivalent to new Vector4B(1, 1, 1, 1).

UnitW

W-facing unit vector. (0 0 0 1)

public static Vector4B UnitW { get; }

Property Value

Vector4B

UnitX

X-facing unit vector. (1 0 0 0)

public static Vector4B UnitX { get; }

Property Value

Vector4B

UnitY

Y-facing unit vector. (0 1 0 0)

public static Vector4B UnitY { get; }

Property Value

Vector4B

UnitZ

Z-facing unit vector. (0 0 1 0)

public static Vector4B UnitZ { get; }

Property Value

Vector4B

Zero

Zero vector, a vector with all components set to 0.

public static Vector4B Zero { get; }

Property Value

Vector4B

Equivalent to new Vector4B(0, 0, 0, 0).

Methods

Abs()

Returns a new vector with all components in absolute values (i.e. positive).

public readonly Vector4B Abs()

Returns

Vector4B

A vector with Abs(int) called on each component.

Clamp(Vector4B, Vector4B)

Returns a new vector with all components clamped between the components of min and max using Clamp(int, int, int).

public readonly Vector4B Clamp(Vector4B min, Vector4B max)

Parameters

min Vector4B

The vector with minimum allowed values.

max Vector4B

The vector with maximum allowed values.

Returns

Vector4B

The vector with all components clamped.

Deconstruct(out int, out int, out int, out int)

Helper method for deconstruction into a tuple.

public readonly void Deconstruct(out int x, out int y, out int z, out int w)

Parameters

x int
y int
z int
w int

DistanceSquaredTo(Vector4B)

Returns the squared distance between this vector and to. This method runs faster than DistanceTo(Vector4B), so prefer it if you need to compare vectors or need the squared distance for some formula.

public readonly int DistanceSquaredTo(Vector4B to)

Parameters

to Vector4B

The other vector to use.

Returns

int

The squared distance between the two vectors.

DistanceTo(Vector4B)

Returns the distance between this vector and to.

public readonly float DistanceTo(Vector4B to)

Parameters

to Vector4B

The other vector to use.

Returns

float

The distance between the two vectors.

See Also

Equals(Vector4B)

Returns true if the vectors are equal.

public readonly bool Equals(Vector4B other)

Parameters

other Vector4B

The other vector.

Returns

bool

Whether or not the vectors are equal.

Equals(object?)

Returns true if the vector is equal to the given object (obj).

public override readonly bool Equals(object? obj)

Parameters

obj object

The object to compare with.

Returns

bool

Whether or not the vector and the object are equal.

GetHashCode()

Serves as the hash function for Vector4B.

public override readonly int GetHashCode()

Returns

int

A hash code for this vector.

Length()

Returns the length (magnitude) of this vector.

public readonly float Length()

Returns

float

The length of this vector.

See Also

LengthSquared()

Returns the squared length (squared magnitude) of this vector. This method runs faster than Length(), so prefer it if you need to compare vectors or need the squared length for some formula.

public readonly int LengthSquared()

Returns

int

The squared length of this vector.

MaxAxisIndex()

Returns the axis of the vector's highest value. See Axis. If all components are equal, this method returns X.

public readonly Axis MaxAxisIndex()

Returns

Axis

The index of the highest axis.

MinAxisIndex()

Returns the axis of the vector's lowest value. See Axis. If all components are equal, this method returns W.

public readonly Axis MinAxisIndex()

Returns

Axis

The index of the lowest axis.

Sign()

Returns a vector with each component set to one or negative one, depending on the signs of this vector's components, or zero if the component is zero, by calling Sign(int) on each component.

public readonly Vector4B Sign()

Returns

Vector4B

A vector with all components as either 1, -1, or 0.

ToString()

Converts this Vector4B to a string.

public override readonly string ToString()

Returns

string

A string representation of this vector.

ToString(string?)

Converts this Vector4B to a string with the given format.

public readonly string ToString(string? format)

Parameters

format string

Returns

string

A string representation of this vector.

Operators

operator +(Vector4B, Vector4B)

Adds each component of the Vector4B with the components of the given Vector4B.

public static Vector4B operator +(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

Vector4B

The added vector.

operator /(Vector4B, Vector4B)

Divides each component of the Vector4B by the components of the given Vector4B.

public static Vector4B operator /(Vector4B vec, Vector4B divisorv)

Parameters

vec Vector4B

The dividend vector.

divisorv Vector4B

The divisor vector.

Returns

Vector4B

The divided vector.

operator /(Vector4B, int)

Divides each component of the Vector4B by the given int.

public static Vector4B operator /(Vector4B vec, int divisor)

Parameters

vec Vector4B

The dividend vector.

divisor int

The divisor value.

Returns

Vector4B

The divided vector.

operator ==(Vector4B, Vector4B)

Returns true if the vectors are equal.

public static bool operator ==(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the vectors are equal.

explicit operator Vector4B(Vector4)

Converts a Vector4 to a Vector4B by truncating components' fractional parts (rounding towards zero).

public static explicit operator Vector4B(Vector4 value)

Parameters

value Vector4

The vector to convert.

Returns

Vector4B

operator >(Vector4B, Vector4B)

Compares two Vector4B vectors by first checking if the X value of the left vector is greater than the X value of the right vector. If the X values are exactly equal, then it repeats this check with the Y, Z and finally W values of the two vectors. This operator is useful for sorting vectors.

public static bool operator >(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the left is greater than the right.

operator >=(Vector4B, Vector4B)

Compares two Vector4B vectors by first checking if the X value of the left vector is greater than or equal to the X value of the right vector. If the X values are exactly equal, then it repeats this check with the Y, Z and finally W values of the two vectors. This operator is useful for sorting vectors.

public static bool operator >=(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the left is greater than or equal to the right.

implicit operator Vector4(Vector4B)

Converts this Vector4B to a Vector4.

public static implicit operator Vector4(Vector4B value)

Parameters

value Vector4B

The vector to convert.

Returns

Vector4

operator !=(Vector4B, Vector4B)

Returns true if the vectors are not equal.

public static bool operator !=(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the vectors are not equal.

operator <(Vector4B, Vector4B)

Compares two Vector4B vectors by first checking if the X value of the left vector is less than the X value of the right vector. If the X values are exactly equal, then it repeats this check with the Y, Z and finally W values of the two vectors. This operator is useful for sorting vectors.

public static bool operator <(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the left is less than the right.

operator <=(Vector4B, Vector4B)

Compares two Vector4B vectors by first checking if the X value of the left vector is less than or equal to the X value of the right vector. If the X values are exactly equal, then it repeats this check with the Y, Z and finally W values of the two vectors. This operator is useful for sorting vectors.

public static bool operator <=(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

bool

Whether or not the left is less than or equal to the right.

operator %(Vector4B, Vector4B)

Gets the remainder of each component of the Vector4B with the components of the given Vector4B. This operation uses truncated division, which is often not desired as it does not work well with negative numbers.

public static Vector4B operator %(Vector4B vec, Vector4B divisorv)

Parameters

vec Vector4B

The dividend vector.

divisorv Vector4B

The divisor vector.

Returns

Vector4B

The remainder vector.

Examples

GD.Print(new Vector4UB(10, -20, 30, -40) % new Vector4UB(6, 7, 8, 9)); // Prints "(4, -6, 6, -4)"

operator %(Vector4B, int)

Gets the remainder of each component of the Vector4B with the components of the given int. This operation uses truncated division, which is often not desired as it does not work well with negative numbers.

public static Vector4B operator %(Vector4B vec, int divisor)

Parameters

vec Vector4B

The dividend vector.

divisor int

The divisor value.

Returns

Vector4B

The remainder vector.

Examples

GD.Print(new Vector4UB(10, -20, 30, -40) % 7); // Prints "(3, -6, 2, -5)"

operator *(Vector4B, Vector4B)

Multiplies each component of the Vector4B by the components of the given Vector4B.

public static Vector4B operator *(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

Vector4B

The multiplied vector.

operator *(Vector4B, int)

Multiplies each component of the Vector4B by the given int.

public static Vector4B operator *(Vector4B vec, int scale)

Parameters

vec Vector4B

The vector to multiply.

scale int

The scale to multiply by.

Returns

Vector4B

The multiplied vector.

operator *(int, Vector4B)

Multiplies each component of the Vector4B by the given int.

public static Vector4B operator *(int scale, Vector4B vec)

Parameters

scale int

The scale to multiply by.

vec Vector4B

The vector to multiply.

Returns

Vector4B

The multiplied vector.

operator -(Vector4B, Vector4B)

Subtracts each component of the Vector4B by the components of the given Vector4B.

public static Vector4B operator -(Vector4B left, Vector4B right)

Parameters

left Vector4B

The left vector.

right Vector4B

The right vector.

Returns

Vector4B

The subtracted vector.

operator -(Vector4B)

Returns the negative value of the Vector4B. This is the same as writing new Vector4UB(-v.X, -v.Y, -v.Z, -v.W). This operation flips the direction of the vector while keeping the same magnitude.

public static Vector4B operator -(Vector4B vec)

Parameters

vec Vector4B

The vector to negate/flip.

Returns

Vector4B

The negated/flipped vector.