Rect2

2D 轴对齐边界框。

描述

Rect2 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.

It uses floating-point coordinates.

The 3D counterpart to Rect2 is AABB.

Negative values for size are not supported and will not work for most methods. Use abs to get a Rect2 with a positive size.

教程

属性

Vector2

end

Vector2( 0, 0 )

Vector2

position

Vector2( 0, 0 )

Vector2

size

Vector2( 0, 0 )

方法

Rect2

Rect2 ( Vector2 position, Vector2 size )

Rect2

Rect2 ( float x, float y, float width, float height )

Rect2

abs ( )

Rect2

clip ( Rect2 b )

bool

encloses ( Rect2 b )

Rect2

expand ( Vector2 to )

float

get_area ( )

Vector2

get_center ( )

Rect2

grow ( float by )

Rect2

grow_individual ( float left, float top, float right, float bottom )

Rect2

grow_margin ( int margin, float by )

bool

has_no_area ( )

bool

has_point ( Vector2 point )

bool

intersects ( Rect2 b, bool include_borders=false )

bool

is_equal_approx ( Rect2 rect )

Rect2

merge ( Rect2 b )

属性说明

Default

Vector2( 0, 0 )

终点角。通过 position + size 计算而来。设置该值会修改大小。


Default

Vector2( 0, 0 )

起点角。通常比 end 小。


Default

Vector2( 0, 0 )

positionend 的大小。通常所有分量都是正数。

如果大小为负,可以用 abs 修正。

方法说明

按位置和大小构造一个Rect2


通过x、y、宽度和高度构造一个Rect2


返回具有相同位置和面积的 Rect2,经过修改,使左上角为原点,widthheight 为正数。


返回此 Rect2 和 b 的交集。


如果此 Rect2 完全包含另一个,则返回 true


返回该 Rect2 的副本,该副本扩展至包含给出的点。

例子:

  1. # position (-3, 2), size (1, 1)
  2. var rect = Rect2(Vector2(-3, 2), Vector2(1, 1))
  3. # position (-3, -1), size (3, 4), 包含原来的 Rect 和 Vector2(0, -1)
  4. var rect2 = rect.expand(Vector2(0, -1))

返回 Rect2 面积。


Returns the center of the Rect2, which is equal to position + (size / 2).


返回 Rect2 的副本,该副本向所有边增长了给定数量的单位。


返回 Rect2 的副本,该副本分别向各边增长了给定数量的单位。


返回Rect2Margin方向增长给定数量单位的副本。


  • bool has_no_area ( )

如果Rect2为flat或空,则返回true


返回 true 时,该 Rect2 包含此点。依照惯例,Rect2 的右边缘和下边缘是被排除在外的,因此包含位于这两条边上的点。

注意: 对于大小为负Rect2,该方法并不可靠。请使用 abs 获取等价的正数大小矩形再检查是否包含某个点。


如果 Rect2b 重叠(即它们至少有一个共同点),则返回 true

如果 include_borderstrue,如果它们的边界接触,即使没有交叉,它们也会被视为重叠。


通过在每个组件上调用 is_equal_approx,如果此 Rect2rect 大致相等,则返回 true


返回一个更大的 Rect2,其中包含这个 Rect2b