Rect2i¶
使用整数坐标的2D轴对齐边界框。
描述¶
Rect2i内置Variant类型使用整数坐标表示2D空间中轴对齐的矩形。它由其position和size定义,即Vector2i。因为它不旋转,所以经常用于快速重叠测试(参见intersects())。
有关浮点坐标,请参阅Rect2。
注意:不支持size的负值。对于负大小,大多数Rect2i方法无法正常工作。使用abs()获取具有非负大小的等效Rect2i。
注意:在布尔上下文中,如果position和size都为零(等于Vector2i.ZERO),则Rect2i的计算结果为false。否则,它总是计算为true。
属性¶
构造函数¶
方法¶
abs() const |
|
get_area() const |
|
get_center() const |
|
grow_individual(left: int, top: int, right: int, bottom: int) const |
|
has_area() const |
|
intersection(b: Rect2i) const |
|
intersects(b: Rect2i) const |
|
运算符¶
operator !=(right: Rect2i) |
|
operator ==(right: Rect2i) |
属性说明¶
Vector2i end = Vector2i(0, 0) 🔗
终点。这通常是矩形的右下角,相当于位置+大小。设置此点会影响size。
Vector2i position = Vector2i(0, 0) 🔗
原点。这通常是矩形的左上角。
Vector2i size = Vector2i(0, 0) 🔗
矩形的宽度和高度,从position开始。设置此值也会影响end点。
注意:建议将宽度和高度设置为非负值,因为i3D中的大多数方法都假设position是左上角,end是右下角。要获得具有非负大小的等效矩形,请使用abs()。
构造函数说明¶
构造一个Rect2i,其position和size设置为Vector2i.ZERO。
构造一个Rect2i作为给定Rect2i的副本。
从Rect2构造一个Rect2i。浮点坐标被截断。
Rect2i Rect2i(position: Vector2i, size: Vector2i)
通过position和size构造Rect2i。
方法说明¶
返回一个与此矩形等效的 Rect2i,其宽度和高度被修改为非负值,并且其 position 为矩形的左上角。
var rect = Rect2i(25, 25, -100, -50)
var absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)
var rect = new 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)
var rect = new Rect2I(0, 0, 5, 2);
rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)
rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 15, 5)
返回矩形的面积。这相当于size. x*size.y。另请参见has_area()。
返回矩形的中心点。这与位置+(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)
var a = new Rect2I(4, 4, 8, 8).Grow(4); // a is Rect2I(0, 0, 16, 16)
var b = new 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 🔗
返回此矩形的副本,其left、top、right和bottom的边扩展给定的量。相反,负值缩小边。另请参阅grow()和grow_side()。
Rect2i grow_side(side: int, amount: int) const 🔗
返回此矩形的副本,其side扩展了给定的amount(参见Side常量)。相反,负amount缩小矩形。另请参见grow()和grow_individual()。
如果此矩形的宽度和高度为正,则返回true。另请参见get_area()。
bool has_point(point: Vector2i) const 🔗
如果矩形包含给定的point,则返回true。按照惯例,右边缘和下边缘的点不包括**。
注意:此方法对于负size的Rect2i不可靠。首先使用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)
var a = new Rect2I(0, 0, 5, 10);
var b = new Rect2I(2, 0, 8, 4);
var c = rect1.Intersection(rect2); // 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) 🔗
如果两个矩形的position或size不相等,则返回true。