Rect2i

使用整数坐标的2D轴对齐边界框。

描述

Rect2i内置Variant类型使用整数坐标表示2D空间中轴对齐的矩形。它由其positionsize定义,即Vector2i。因为它不旋转,所以经常用于快速重叠测试(参见intersects())。

有关浮点坐标,请参阅Rect2

注意:不支持size的负值。对于负大小,大多数Rect2i方法无法正常工作。使用abs()获取具有非负大小的等效Rect2i

注意:在布尔上下文中,如果positionsize都为零(等于Vector2i.ZERO),则Rect2i的计算结果为false。否则,它总是计算为true

属性

Vector2i

end

Vector2i(0, 0)

Vector2i

position

Vector2i(0, 0)

Vector2i

size

Vector2i(0, 0)

构造函数

Rect2i

Rect2i()

Rect2i

Rect2i(from: Rect2i)

Rect2i

Rect2i(from: Rect2)

Rect2i

Rect2i(position: Vector2i, size: Vector2i)

Rect2i

Rect2i(x: int, y: int, width: int, height: int)

方法

Rect2i

abs() const

bool

encloses(b: Rect2i) const

Rect2i

expand(to: Vector2i) const

int

get_area() const

Vector2i

get_center() const

Rect2i

grow(amount: int) const

Rect2i

grow_individual(left: int, top: int, right: int, bottom: int) const

Rect2i

grow_side(side: int, amount: int) const

bool

has_area() const

bool

has_point(point: Vector2i) const

Rect2i

intersection(b: Rect2i) const

bool

intersects(b: Rect2i) const

Rect2i

merge(b: Rect2i) const

运算符


属性说明

Vector2i end = Vector2i(0, 0) 🔗

终点。这通常是矩形的右下角,相当于位置+大小。设置此点会影响size


Vector2i position = Vector2i(0, 0) 🔗

原点。这通常是矩形的左上角。


Vector2i size = Vector2i(0, 0) 🔗

矩形的宽度和高度,从position开始。设置此值也会影响end点。

注意:建议将宽度和高度设置为非负值,因为i3D中的大多数方法都假设position是左上角,end是右下角。要获得具有非负大小的等效矩形,请使用abs()


构造函数说明

Rect2i Rect2i() 🔗

构造一个Rect2i,其positionsize设置为Vector2i.ZERO


Rect2i Rect2i(from: Rect2i)

构造一个Rect2i作为给定Rect2i的副本。


Rect2i Rect2i(from: Rect2)

Rect2构造一个Rect2i。浮点坐标被截断。


Rect2i Rect2i(position: Vector2i, size: Vector2i)

通过positionsize构造Rect2i


Rect2i Rect2i(x: int, y: int, width: int, height: int)

通过将其position设置为(xy)并将其size设置为(widthheight)来构造Rect2i


方法说明

Rect2i abs() const 🔗

返回一个与此矩形等效的 Rect2i,其宽度和高度被修改为非负值,并且其 position 为矩形的左上角。

var rect = Rect2i(25, 25, -100, -50)
var absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)

注意:size 为负数时,建议使用此方法,因为 i3D 中的大多数其他方法都假定 position 是左上角,而 end 是右下角


bool encloses(b: Rect2i) const 🔗

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


Rect2i expand(to: Vector2i) const 🔗

如有必要,返回此矩形的一个副本,该副本经过扩展,使其边缘与给定的 to 点对齐。

var rect = Rect2i(0, 0, 5, 2)

rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)
rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 15, 5)

int get_area() const 🔗

返回矩形的面积。这相当于size. x*size.y。另请参见has_area()


Vector2i get_center() const 🔗

返回矩形的中心点。这与位置+(size/2)相同。

注意:如果size为奇数,则结果将向position四舍五入。


Rect2i grow(amount: int) const 🔗

返回此矩形在所有边上按给定的 amount 扩展后的副本。如果 amount 为负,则会缩小矩形。另请参阅 grow_individual()grow_side()

var a = Rect2i(4, 4, 8, 8).grow(4) # a is Rect2i(0, 0, 16, 16)
var b = Rect2i(0, 0, 8, 4).grow(2) # b is Rect2i(-2, -2, 12, 8)

Rect2i grow_individual(left: int, top: int, right: int, bottom: int) const 🔗

返回此矩形的副本,其lefttoprightbottom的边扩展给定的量。相反,负值缩小边。另请参阅grow()grow_side()


Rect2i grow_side(side: int, amount: int) const 🔗

返回此矩形的副本,其side扩展了给定的amount(参见Side常量)。相反,负amount缩小矩形。另请参见grow()grow_individual()


bool has_area() const 🔗

如果此矩形的宽度和高度为正,则返回true。另请参见get_area()


bool has_point(point: Vector2i) const 🔗

如果矩形包含给定的point,则返回true。按照惯例,右边缘和下边缘的点不包括**。

注意:此方法对于sizeRect2i不可靠。首先使用abs()获取有效矩形。


Rect2i intersection(b: Rect2i) const 🔗

返回此矩形与 b 之间的交集。如果矩形不相交,则返回一个空的 Rect2i

var a = Rect2i(0, 0, 5, 10)
var b = Rect2i(2, 0, 8, 4)

var c = a.intersection(b) # c is Rect2i(2, 0, 3, 4)

注意:如果您只需要知道两个矩形是否重叠,请改用intersects()


bool intersects(b: Rect2i) const 🔗

如果此矩形与b矩形重叠,则返回true。两个矩形的边缘都被排除在外。


Rect2i merge(b: Rect2i) const 🔗

返回一个Rect2i,它将此矩形和b包围在边缘周围。另请参阅encloses()


运算符说明

bool operator !=(right: Rect2i) 🔗

如果两个矩形的positionsize不相等,则返回true


bool operator ==(right: Rect2i) 🔗

如果矩形的positionsize分别相等,则返回true