Show / Hide Table of Contents

Struct Box2d

Defines an axis-aligned 2d box (rectangle).

Implements
IEquatable<Box2d>
IFormattable
Inherited Members
object.Equals(object, object)
object.GetType()
object.ReferenceEquals(object, object)
Namespace: OpenTK.Mathematics
Assembly: OpenTK.Mathematics.dll
Syntax
[Serializable]
public struct Box2d : IEquatable<Box2d>, IFormattable

Constructors

Box2d(Vector2d, Vector2d)

Initializes a new instance of the Box2d struct.

Declaration
public Box2d(Vector2d min, Vector2d max)
Parameters
Type Name Description
Vector2d min

The minimum point this box encloses.

Vector2d max

The maximum point this box encloses.

Box2d(double, double, double, double)

Initializes a new instance of the Box2d struct.

Declaration
public Box2d(double minX, double minY, double maxX, double maxY)
Parameters
Type Name Description
double minX

The minimum X value to be enclosed.

double minY

The minimum Y value to be enclosed.

double maxX

The maximum X value to be enclosed.

double maxY

The maximum Y value to be enclosed.

Fields

Empty

An empty box with Min = Vector2d.PositiveInfinity and Max = Vector2d.NegativeInfinity. This box can be used with Extend(Vector2d) to create a bounding box without a special case for the first point.

Declaration
public static readonly Box2d Empty
Field Value
Type Description
Box2d
Examples

For example:

Vector2d[] points = GetPoints();
Box2d aabb = Box2d.Empty;
for (int i = 0; i < points.Length; i++)
{
    aabb.Extend(points[i]):
}

Will calculate the bounding box of all the points in the array without needing a special case for the first point.

Max

The maximum boundary of the box. This field is not guaranteed to be greater than Max.

Declaration
public Vector2d Max
Field Value
Type Description
Vector2d
Remarks

A box with a minimum point greater than the maximum is not considered valid except for a single configuration where Min = Vector2d.PositiveInfinity and Max = Vector2d.NegativeInfinity as is the case with Empty.

Min

The minimum boundary of the box. This field is not guaranteed to be less than Max.

Declaration
public Vector2d Min
Field Value
Type Description
Vector2d
Remarks

A box with a minimum point greater than the maximum is not considered valid except for a single configuration where Min = Vector2d.PositiveInfinity and Max = Vector2d.NegativeInfinity as is the case with Empty.

See Also
Empty
IsEmpty

UnitSquare

A box with a Min = (0, 0) and Max = (1, 1).

Declaration
public static readonly Box2d UnitSquare
Field Value
Type Description
Box2d

Zero

A box with Min = Vector2d.Zero and Min = Vector2d.Zero.

Declaration
public static readonly Box2d Zero
Field Value
Type Description
Box2d
Remarks

If you want an empty box, consider using Empty.

Properties

Area

The area of the box.

Declaration
public readonly double Area { get; }
Property Value
Type Description
double

Center

Gets or sets a vector describing the center of the box.

Declaration
public Vector2d Center { readonly get; set; }
Property Value
Type Description
Vector2d

HalfSize

Gets half the size of the box. The distance from the center of the box to the edge of the box in X and Y.

Declaration
public readonly Vector2d HalfSize { get; }
Property Value
Type Description
Vector2d
Remarks

This function never returns negative values, so Empty will have a size of (0, 0).

HasZeroArea

If this box has zero area.

Declaration
public readonly bool HasZeroArea { get; }
Property Value
Type Description
bool

Height

The height of the box.

Declaration
public readonly double Height { get; }
Property Value
Type Description
double

IsEmpty

If this box is equal to Empty.

Declaration
public readonly bool IsEmpty { get; }
Property Value
Type Description
bool

IsPoint

If this box is a point, i.e. its minimum point is equal to its maximum point.

Declaration
public readonly bool IsPoint { get; }
Property Value
Type Description
bool

Location

Gets the location of the box from a Location + Size perspective. Basically an alias for Min.

Declaration
public readonly Vector2d Location { get; }
Property Value
Type Description
Vector2d

Size

Gets the size of the box.

Declaration
public readonly Vector2d Size { get; }
Property Value
Type Description
Vector2d
Remarks

This function never returns negative values, so Empty will have a size of (0, 0).

Width

The width of the box.

Declaration
public readonly double Width { get; }
Property Value
Type Description
double

Methods

Ceiling(Box2d)

Returns a box that contains rounded up integers.

Declaration
public static Box2d Ceiling(Box2d box)
Parameters
Type Name Description
Box2d box

The box to round.

Returns
Type Description
Box2d

The box that contains rounded up integers.

Contains(Box2d)

Returns whether the box other is entirely contained within this box. A box is considered to be able to contain itself.

Declaration
public readonly bool Contains(Box2d other)
Parameters
Type Name Description
Box2d other

The box to check.

Returns
Type Description
bool

true if the box other is entirely contained within the this box; otherwise, false.

ContainsExclusive(Vector2d)

Returns whether the box contains the specified point (borders exclusive).

Declaration
public readonly bool ContainsExclusive(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to query.

Returns
Type Description
bool

Whether this box contains the point.

See Also
ContainsInclusive(Vector2d)

ContainsInclusive(Vector2d)

Returns whether the box contains the specified point (borders inclusive).

Declaration
public readonly bool ContainsInclusive(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to query.

Returns
Type Description
bool

Whether this box contains the point.

See Also
ContainsExclusive(Vector2d)

DistanceToNearestEdge(Vector2d)

Returns the distance between the nearest edge and the specified point.

Declaration
public readonly double DistanceToNearestEdge(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to find distance for.

Returns
Type Description
double

The distance between the specified point and the nearest edge.

DistanceToNearestPointInBox(Vector2d)

Returns the distance between the nearest point inside the box and the specified point.

Declaration
public readonly double DistanceToNearestPointInBox(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to find distance for.

Returns
Type Description
double

The distance between the specified point and the nearest edge.

Remarks

The distance to points inside the box is zero.

Equals(Box2d)

Indicates whether the current object is equal to another object of the same type.

Declaration
public readonly bool Equals(Box2d other)
Parameters
Type Name Description
Box2d other

An object to compare with this object.

Returns
Type Description
bool

true if the current object is equal to the other parameter; otherwise, false.

Equals(object)

Indicates whether this instance and a specified object are equal.

Declaration
public override readonly bool Equals(object obj)
Parameters
Type Name Description
object obj

The object to compare with the current instance.

Returns
Type Description
bool

true if obj and this instance are the same type and represent the same value; otherwise, false.

Overrides
ValueType.Equals(object)

Extend(Vector2d)

Extends this box to encapsulate a given point.

Declaration
public void Extend(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to contain.

Remarks

This can be used in combination with Empty to make an efficient bounding box calculation.

Examples

For example:

Vector2d[] points = GetPoints();
Box2d aabb = Box2d.Empty;
for (int i = 0; i < points.Length; i++)
{
    aabb.Extend(points[i]):
}

Will calculate the bounding box of all the points in the array without needing a special case for the first point.

ExtendNative(Vector2d)

Extends this box to encapsulate a given point. With NaN propagation and -0 behaviour being platform dependent.

Declaration
public void ExtendNative(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to contain.

Remarks

This can be used in combination with Empty to make an efficient bounding box calculation.

Examples

For example:

Vector2d[] points = GetPoints();
Box2d aabb = Box2d.Empty;
for (int i = 0; i < points.Length; i++)
{
    aabb.Extend(points[i]):
}

Will calculate the bounding box of all the points in the array without needing a special case for the first point.

Extended(Vector2d)

Returns a box that is extended to encapsulate a given point.

Declaration
public readonly Box2d Extended(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to contain.

Returns
Type Description
Box2d

The extended box.

Remarks

This can be used in combination with Empty to make an efficient bounding box calculation.

Examples

For example:

Vector2d[] points = GetPoints();
Box2d aabb = Box2d.Empty;
for (int i = 0; i < points.Length; i++)
{
    aabb = aabb.Extended(points[i]):
}

Will calculate the bounding box of all the points in the array without needing a special case for the first point.

ExtendedNative(Vector2d)

Returns a box that is extended to encapsulate a given point. With NaN propagation and -0 behaviour being platform dependent.

Declaration
public readonly Box2d ExtendedNative(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to contain.

Returns
Type Description
Box2d

The extended box.

Remarks

This can be used in combination with Empty to make an efficient bounding box calculation.

Examples

For example:

Vector2d[] points = GetPoints();
Box2d aabb = Box2d.Empty;
for (int i = 0; i < points.Length; i++)
{
    aabb = aabb.Extended(points[i]):
}

Will calculate the bounding box of all the points in the array without needing a special case for the first point.

Floor(Box2d)

Returns a box that contains rounded down integers.

Declaration
public static Box2d Floor(Box2d box)
Parameters
Type Name Description
Box2d box

The box to round.

Returns
Type Description
Box2d

The box that contains rounded down integers.

FloorCeiling(Box2d)

Returns a box where Min has been rounded down and Max has been rounded up.

Declaration
public static Box2d FloorCeiling(Box2d box)
Parameters
Type Name Description
Box2d box

The box to round.

Returns
Type Description
Box2d

The box that contains rounded down integers.

FromCenterAndHalfSize(Vector2d, Vector2d)

Creates a box from a center point and a half size.

Declaration
public static Box2d FromCenterAndHalfSize(Vector2d center, Vector2d halfSize)
Parameters
Type Name Description
Vector2d center

The center of the box.

Vector2d halfSize

The half size of the box.

Returns
Type Description
Box2d

The created box.

FromMinMax(Vector2d, Vector2d)

Creates a box from a minimum and maximum point.

Declaration
public static Box2d FromMinMax(Vector2d min, Vector2d max)
Parameters
Type Name Description
Vector2d min

The minimum point on the XY plane this box encloses.

Vector2d max

The maximum point on the XY plane this box encloses.

Returns
Type Description
Box2d

The created box.

FromSize(Vector2d, Vector2d)

Creates a box from a point and size.

Declaration
public static Box2d FromSize(Vector2d point, Vector2d size)
Parameters
Type Name Description
Vector2d point

The minimum point of the box.

Vector2d size

The size of the box.

Returns
Type Description
Box2d

The created box.

FromTwoPoints(Vector2d, Vector2d)

Create a box from two unordered points, i.e. creates a box that contains two points.

Declaration
public static Box2d FromTwoPoints(Vector2d p1, Vector2d p2)
Parameters
Type Name Description
Vector2d p1

The first point to contain.

Vector2d p2

The second point to contain.

Returns
Type Description
Box2d

The created box.

GetHashCode()

Returns the hash code for this instance.

Declaration
public override readonly int GetHashCode()
Returns
Type Description
int

A 32-bit signed integer that is the hash code for this instance.

Overrides
ValueType.GetHashCode()

Inflate(Vector2d)

Inflates this box by the given size in all directions. A negative size will shrink the box to a maximum of -HalfSize.

Declaration
public void Inflate(Vector2d size)
Parameters
Type Name Description
Vector2d size

The size to inflate by.

Inflated(Vector2d)

Returns a box inflated by the given size in all directions. A negative size will shrink the box to a maximum of -HalfSize.

Declaration
public readonly Box2d Inflated(Vector2d size)
Parameters
Type Name Description
Vector2d size

The size to inflate by.

Returns
Type Description
Box2d

The inflated box.

Intersect(Box2d)

Replaces this box with the intersection of itself and the specified box.

Declaration
public void Intersect(Box2d other)
Parameters
Type Name Description
Box2d other

The Box with which to intersect.

Intersect(Box2d, Box2d)

Returns the intersection of two boxes, or Empty if there is no intersection.

Declaration
public static Box2d Intersect(Box2d a, Box2d b)
Parameters
Type Name Description
Box2d a

The first box.

Box2d b

The second box.

Returns
Type Description
Box2d

The intersection of the two boxes.

IntersectNative(Box2d, Box2d)

Returns the intersection of two boxes, or Empty if there is no intersection. With NaN propagation and -0 behaviour being platform depedent.

Declaration
public static Box2d IntersectNative(Box2d a, Box2d b)
Parameters
Type Name Description
Box2d a

The first box.

Box2d b

The second box.

Returns
Type Description
Box2d

The intersection of the two boxes.

Intersected(Box2d)

Returns the intersection of itself and the specified box.

Declaration
public readonly Box2d Intersected(Box2d other)
Parameters
Type Name Description
Box2d other

The Box with which to intersect.

Returns
Type Description
Box2d

The intersection of itself and the specified box.

IntersectsWith(Box2d)

Determines if this box intersects with another box.

Declaration
public readonly bool IntersectsWith(Box2d other)
Parameters
Type Name Description
Box2d other

The box to test.

Returns
Type Description
bool

This method returns true if there is any intersection, otherwise false.

Remarks

Two boxes next to each other do not intersect, for detecting that case use Touches(Box2d).

NearestPointInBox(Vector2d)

Returns the nearest point in or on the edge of the box to the given point, point.

Declaration
public readonly Vector2d NearestPointInBox(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point for which the nearest point in the box should be found.

Returns
Type Description
Vector2d

The nearest point on or on the edge of the box to the point, point.

NearestPointOnEdge(Vector2d)

Returns the nearest point that is on the edge of the box.

Declaration
public readonly Vector2d NearestPointOnEdge(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point for which the nearest point on the edge of the box should be found.

Returns
Type Description
Vector2d

The nearest point on the edge of the box to the point, point.

Round(Box2d)

Returns a box that contains rounded integers.

Declaration
public static Box2d Round(Box2d box)
Parameters
Type Name Description
Box2d box

The box to round.

Returns
Type Description
Box2d

The box that contains rounded integers.

Scale(Vector2d, Vector2d)

Scales this box by the given scale, scale, and from the given anchor point, anchor.

Declaration
public void Scale(Vector2d scale, Vector2d anchor)
Parameters
Type Name Description
Vector2d scale

The scale to scale the box.

Vector2d anchor

The anchor to scale the box from.

Scaled(Vector2d, Vector2d)

Returns a box scaled by the given scale, scale, and from the given anchor point, anchor.

Declaration
public readonly Box2d Scaled(Vector2d scale, Vector2d anchor)
Parameters
Type Name Description
Vector2d scale

The scale to scale the box.

Vector2d anchor

The anchor to scale the box from.

Returns
Type Description
Box2d

The scaled box.

SignedDistanceToNearestEdge(Vector2d)

Returns the signed distance between the nearest edge and the specified point.

Declaration
public readonly double SignedDistanceToNearestEdge(Vector2d point)
Parameters
Type Name Description
Vector2d point

The point to find distance for.

Returns
Type Description
double

The distance between the specified point and the nearest edge.

ToString()

Returns the fully qualified type name of this instance.

Declaration
public override readonly string ToString()
Returns
Type Description
string

The fully qualified type name.

Overrides
ValueType.ToString()

ToString(IFormatProvider)

Formats the value of the current instance using the specified format.

Declaration
public readonly string ToString(IFormatProvider formatProvider)
Parameters
Type Name Description
IFormatProvider formatProvider

The provider to use to format the value.

-or-

A null reference (Nothing in Visual Basic) to obtain the numeric format information from the current locale setting of the operating system.

Returns
Type Description
string

The value of the current instance in the specified format.

ToString(string)

Formats the value of the current instance using the specified format.

Declaration
public readonly string ToString(string format)
Parameters
Type Name Description
string format

The format to use.

-or-

A null reference (Nothing in Visual Basic) to use the default format defined for the type of the IFormattable implementation.

Returns
Type Description
string

The value of the current instance in the specified format.

ToString(string, IFormatProvider)

Formats the value of the current instance using the specified format.

Declaration
public readonly string ToString(string format, IFormatProvider formatProvider)
Parameters
Type Name Description
string format

The format to use.

-or-

A null reference (Nothing in Visual Basic) to use the default format defined for the type of the IFormattable implementation.

IFormatProvider formatProvider

The provider to use to format the value.

-or-

A null reference (Nothing in Visual Basic) to obtain the numeric format information from the current locale setting of the operating system.

Returns
Type Description
string

The value of the current instance in the specified format.

Touches(Box2d)

Determines if this box intersects or touches with another box.

Declaration
public readonly bool Touches(Box2d other)
Parameters
Type Name Description
Box2d other

The box to test.

Returns
Type Description
bool

This method returns true if there is any intersection or touches, otherwise false.

Translate(Vector2d)

Translates this box by the given distance.

Declaration
public void Translate(Vector2d distance)
Parameters
Type Name Description
Vector2d distance

The distance to translate the box.

Translated(Vector2d)

Returns a box translated by the given distance.

Declaration
public readonly Box2d Translated(Vector2d distance)
Parameters
Type Name Description
Vector2d distance

The distance to translate the box.

Returns
Type Description
Box2d

The translated box.

Operators

operator ==(Box2d, Box2d)

Equality comparator. Two boxes are considered equal if both the Min and Max fields are equal.

Declaration
public static bool operator ==(Box2d left, Box2d right)
Parameters
Type Name Description
Box2d left

The left operand.

Box2d right

The right operand.

Returns
Type Description
bool

explicit operator Box2(Box2d)

Converts this Box2d to a Box2.

Declaration
public static explicit operator Box2(Box2d box)
Parameters
Type Name Description
Box2d box

The box to cast.

Returns
Type Description
Box2

explicit operator Box2i(Box2d)

Converts this Box2d to a Box2i using truncation.

Declaration
public static explicit operator Box2i(Box2d box)
Parameters
Type Name Description
Box2d box

The box to cast.

Returns
Type Description
Box2i

operator !=(Box2d, Box2d)

Inequality comparator.

Declaration
public static bool operator !=(Box2d left, Box2d right)
Parameters
Type Name Description
Box2d left

The left operand.

Box2d right

The right operand.

Returns
Type Description
bool

Implements

IEquatable<T>
IFormattable
In this article
Back to top Generated by DocFX