Rect2
使用浮点数坐标的 2D 轴对齐边界框。
描述
Rect2 内置 Variant 类型表示 2D 空间中的轴对齐矩形。它由其 position 和 size 定义,皆为 Vector2 类型。它经常被用于快速重叠测试(参见 intersects)。虽然 Rect2 本身是轴对齐的,但它可以与 Transform2D 组合来表示旋转或倾斜的矩形。
对于整数坐标,请使用 Rect2i。Rect2 的 3D 等效体是 AABB。
注意:不支持负的 size。对于负大小,大多数 Rect2 方法都无法正常工作。使用 abs 获取具有非负大小的等效 Rect2。
注意:在布尔上下文中,如果 position 和 size 均为零(等于 Vector2.ZERO),则 Rect2 的计算结果为 false
。否则,它的计算结果始终为 true
。
备注
通过 C# 使用这个 API 时有显著的不同。详见 C# API 与 GDScript 的差异。
教程
属性
| ||
| ||
|
构造函数
Rect2 ( ) | |
方法
abs ( ) const | |
get_area ( ) const | |
get_center ( ) const | |
grow_individual ( float left, float top, float right, float bottom ) const | |
has_area ( ) const | |
intersection ( Rect2 b ) const | |
intersects ( Rect2 b, bool include_borders=false ) const | |
is_equal_approx ( Rect2 rect ) const | |
is_finite ( ) const | |
操作符
operator != ( Rect2 right ) | |
operator * ( Transform2D right ) | |
operator == ( Rect2 right ) |
属性说明
Vector2 end = Vector2(0, 0)
终点。通常为矩形的右下角,等价于 position + size
。设置该点会影响 size。
Vector2 position = Vector2(0, 0)
原点。通常为矩形的左上角。
Vector2 size = Vector2(0, 0)
矩形的宽和高,相对于 position。设置该值会影响终点 end。
注意:建议将宽和高设置为非负数,因为 Godot 中的大多数方法假设 position 为左上角、end 为右下角。要获取等价且大小非负的矩形,请使用 abs。
构造函数说明
Rect2 Rect2 ( )
构造 Rect2,将 position 和 size 设置为 Vector2.ZERO。
构造给定 Rect2 的副本。
从 Rect2i 构造 Rect2。
Rect2 Rect2 ( Vector2 position, Vector2 size )
使用指定的 position
和 size
构造 Rect2。
Rect2 Rect2 ( float x, float y, float width, float height )
构造 Rect2,将 position 设置为 (x
, y
),将 size 设置为 (width
, height
)。
方法说明
Rect2 abs ( ) const
返回一个与该矩形等效的 Rect2,其宽度和高度被修改为非负值,其 position 为矩形的左上角。
GDScriptC#
var rect = Rect2(25, 25, -100, -50)
var absolute = rect.abs() # 绝对值为 Rect2(-75, -25, 100, 50)
var rect = new Rect2(25, 25, -100, -50);
var absolute = rect.Abs(); // 绝对值为 Rect2(-75, -25, 100, 50)
注意:当 size 为负时,建议使用该方法,因为 Godot 中的大多数其他方法都假设 position 是左上角,end 是右下角。
bool encloses ( Rect2 b ) const
如果该矩形完全包含 b
矩形,则返回 true
。
Rect2 expand ( Vector2 to ) const
返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 to
点对齐。
GDScriptC#
var rect = Rect2(0, 0, 5, 2)
rect = rect.expand(Vector2(10, 0)) # rect 为 Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect 为 Rect2(-5, 0, 10, 5)
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // rect 为 Rect2(0, 0, 10, 2)
rect = rect.Expand(new Vector2(-5, 5)); // rect 为 Rect2(-5, 0, 10, 5)
float get_area ( ) const
返回该矩形的面积。这相当于 size.x * size.y
。另请参阅 has_area。
Vector2 get_center ( ) const
返回该矩形的中心点。这与 position + (size / 2.0)
相同。
Rect2 grow ( float amount ) const
返回该矩形的副本,该矩形在所有边上扩展给定的 amount
。负的 amount
会缩小该矩形。另见 grow_individual and grow_side。
GDScriptC#
var a = Rect2(4, 4, 8, 8).grow(4) # a 为 Rect2(0, 0, 16, 16)
var b = Rect2(0, 0, 8, 4).grow(2) # b 为 Rect2(-2, -2, 12, 8)
var a = new Rect2(4, 4, 8, 8).Grow(4); // a 为 Rect2(0, 0, 16, 16)
var b = new Rect2(0, 0, 8, 4).Grow(2); // b 为 Rect2(-2, -2, 12, 8)
Rect2 grow_individual ( float left, float top, float right, float bottom ) const
返回该矩形的副本,其 left
、top
、right
、和 bottom
边扩展了给定的量。相反,负值会缩小边。另见 grow and grow_side。
Rect2 grow_side ( int side, float amount ) const
返回该矩形的副本,其 side
按给定的 amount
扩展(请参阅 Side 常量)。相反,负的 amount
会缩小该矩形。另见 grow 和 grow_individual。
bool has_area ( ) const
如果该矩形具有正的宽度和高度,则返回 true
。另见 get_area。
bool has_point ( Vector2 point ) const
如果该矩形包含给定的 point
,则返回 true
。依照惯例,不包括右侧和底部边缘上的点。
注意:对于大小为负的 Rect2,该方法并不可靠。请首先使用 abs 获取一个有效的矩形。
Rect2 intersection ( Rect2 b ) const
返回该矩形与 b
之间的交集。如果该矩形不相交,则返回空的 Rect2。
GDScriptC#
var rect1 = Rect2(0, 0, 5, 10)
var rect2 = Rect2(2, 0, 8, 4)
var a = rect1.intersection(rect2) # a 为 Rect2(2, 0, 3, 4)
var rect1 = new Rect2(0, 0, 5, 10);
var rect2 = new Rect2(2, 0, 8, 4);
var a = rect1.Intersection(rect2); // a 为 Rect2(2, 0, 3, 4)
注意:如果你只需要知道两个矩形是否重叠,请改用 intersects。
bool intersects ( Rect2 b, bool include_borders=false ) const
如果该矩形与 b
矩形重叠,则返回 true
。除非 include_borders
为 true
,否则两个矩形的边缘均被排除。
bool is_equal_approx ( Rect2 rect ) const
如果该矩形和 rect
近似相等,判断方法是通过在 position 和 size 上调用 Vector2.is_equal_approx,则返回 true
。
bool is_finite ( ) const
如果该矩形是有限的,则返回 true
,判断方法是对 position 和 size 调用 Vector2.is_finite。
返回边界包围该矩形和 b
的 Rect2。另见 encloses。
操作符说明
bool operator != ( Rect2 right )
如果两个矩形的 position 不相等或 size 不相等,则返回 true
。
注意:由于浮点数精度误差,请考虑改用 is_equal_approx,会更可靠。
Rect2 operator * ( Transform2D right )
假设该变换的基是正交的(即旋转/反射可以,缩放/倾斜则不然),将 Rect2 逆向变换(乘以)给定的 Transform2D 变换矩阵。
rect * transform
相当于 transform.inverse() * rect
。请参阅 Transform2D.inverse。
对于通过仿射变换的逆变换(例如,通过缩放)进行变换,可以使用 transform.affine_inverse() * rect
来代替。请参阅 Transform2D.affine_inverse。
bool operator == ( Rect2 right )
如果两个矩形的 position 完全相等且 size 完全相等,则返回 true
。
注意:由于浮点数精度误差,请考虑改用 is_equal_approx,会更可靠。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.