Rect2

A 2D вісь вирівнюється з'єднувальна коробка з використанням плавучих координат.

Опис

Вбудований тип Variant Rect2 представляє прямокутник, вирівняний по осях, у двовимірному просторі. Він визначається його position та size, які є Vector2. Він часто використовується для швидких перевірок перекриття (див. intercepts()). Хоча сам Rect2 вирівняний по осях, його можна поєднати з Transform2D для представлення повернутого або скошеного прямокутника.

Для цілочисельних координат використовуйте Rect2i. 3D-еквівалент Rect2 - AABB.

Примітка: Від'ємні значення для розміру елемента не підтримуються. З від'ємним розміром більшість методів Rect2 працюють неправильно. Використовуйте abs(), щоб отримати еквівалентний Rect2 з невід'ємним розміром.

Примітка: У булевому контексті значення Rect2 повертає значення false, якщо обидва значення position та size дорівнюють нулю (дорівнюють Vector2.ZERO). В іншому випадку значення завжди повертає значення true.

Примітка

Існують значні відмінності при використанні цього API із С#. Більше інформації: ref:doc_c_sharp_differences.

Посібники

Властивості

Vector2

end

Vector2(0, 0)

Vector2

position

Vector2(0, 0)

Vector2

size

Vector2(0, 0)

Конструктори

Rect2

Rect2()

Rect2

Rect2(from: Rect2)

Rect2

Rect2(from: Rect2i)

Rect2

Rect2(position: Vector2, size: Vector2)

Rect2

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

Методи

Rect2

abs() const

bool

encloses(b: Rect2) const

Rect2

expand(to: Vector2) const

float

get_area() const

Vector2

get_center() const

Vector2

get_support(direction: Vector2) const

Rect2

grow(amount: float) const

Rect2

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

Rect2

grow_side(side: int, amount: float) const

bool

has_area() const

bool

has_point(point: Vector2) const

Rect2

intersection(b: Rect2) const

bool

intersects(b: Rect2, include_borders: bool = false) const

bool

is_equal_approx(rect: Rect2) const

bool

is_finite() const

Rect2

merge(b: Rect2) const

Оператори

bool

operator !=(right: Rect2)

Rect2

operator *(right: Transform2D)

bool

operator ==(right: Rect2)


Описи властивостей

Vector2 end = Vector2(0, 0) 🔗

Точка закінчення. Це, як правило, нижній кут прямокутника, і еквівалентно позиція + розмір. Налаштування цієї точки впливає на 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 Rect2(from: Rect2)

Rect2 як копія даної Rect2.


Rect2 Rect2(from: Rect2i)

Створює Rect2 з Rect2i.


Rect2 Rect2(position: Vector2, size: Vector2)

Constructs a Rect2 by position і size.


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

Створює Rect2, встановлюючи його position до (x, y), та його size до (width, height).


Описи методів

Rect2 abs() const 🔗

Повертає Rect2, еквівалентний цьому прямокутнику, з його шириною та висотою, зміненими на невід’ємні значення, а position — верхнім лівим кутом прямокутника.

var rect = Rect2(25, 25, -100, -50)
var absolute = rect.abs() # absolute це Rect2(-75, -25, 100, 50)

Примітка: Рекомендується використовувати цей метод, коли size має від’ємне значення, оскільки більшість інших методів у Godot припускають, що position — це верхній лівий кут, а end — нижній правий кут.


bool encloses(b: Rect2) const 🔗

Повертає true, якщо цей прямокутник повнено закриває b прямокутник.


Rect2 expand(to: Vector2) const 🔗

Повертає копію цього прямокутника, розгорнуту для вирівнювання країв із заданою точкою to, якщо необхідно.

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

rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)
rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 15, 5)

float get_area() const 🔗

Повертає область прямокутника. size.x * розмір.y. Дивитися також has_area().


Vector2 get_center() const 🔗

Повертає центральну точку прямокутника. Це так само, як позиція + (розмір / 2.0).


Vector2 get_support(direction: Vector2) const 🔗

Повертає позицію вершини цієї обмежувальної рамки, яка знаходиться найдальше в заданому напрямку. Ця точка широко відома як опорна точка в алгоритмах виявлення зіткнень.


Rect2 grow(amount: float) const 🔗

Повертає копію цього прямокутника, розширену з усіх боків на задане значення amount. Від'ємне значення amount натомість зменшує прямокутник. Див. також grow_individual() та grow_side().

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

Rect2 grow_individual(left: float, top: float, right: float, bottom: float) const 🔗

Повертає копію цього прямокутника з його сторонами left, top, right та bottom, подовженими на задані значення. Від'ємні значення натомість зменшують сторони. Див. також grow() та grow_side().


Rect2 grow_side(side: int, amount: float) const 🔗

Повертає копію цього прямокутника з його side, розширеною на задане значення amount (див. константи Side). Від'ємне значення amount натомість зменшує прямокутник. Див. також grow() та grow_individual().


bool has_area() const 🔗

Повертає true, якщо цей прямокутник має позитивну ширину і висоту. Дивись також get_area().


bool has_point(point: Vector2) const 🔗

Повертає true, якщо прямокутник містить задану точку point. За домовленістю, точки на правому та нижньому краях не враховуються.

Примітка: Цей метод ненадійний для Rect2 з від’ємним size. Спочатку використовуйте abs(), щоб отримати коректний прямокутник.


Rect2 intersection(b: Rect2) const 🔗

Повертає перетин між цим прямокутником і b. Якщо прямокутники не перетинаються, повертає порожній Rect2.

змінна rect1 = Rect2(0, 0, 5, 10)
змінна rect2 = Rect2(2, 0, 8, 4)

var a = rect1.intersection(rect2) # a is Rect2(2, 0, 3, 4)

Примітка: Якщо вам потрібно лише знати, чи накладаються два прямокутники, натомість використовуйте intersects().


bool intersects(b: Rect2, include_borders: bool = false) const 🔗

Повертає значення true, якщо цей прямокутник перетинається з прямокутником b. Краї обох прямокутників виключаються, якщо тільки значення include_borders не дорівнює true.


bool is_equal_approx(rect: Rect2) const 🔗

Повертає true, якщо цей прямокутник та rect приблизно рівні, викликаючи Vector2.is_equal_approx() для position та size.


bool is_finite() const 🔗

Повертає true, якщо значення цього прямокутника скінченні, викликаючи Vector2.is_finite() для position та size.


Rect2 merge(b: Rect2) const 🔗

Повертає Rect2, який оточує як цей прямокутник, так і b по краях. Див. також enclosures().


Описи операторів

bool operator !=(right: Rect2) 🔗

Повертаємо true, якщо position або size обох прямокутників не дорівнює.

Примітка: У зв'язку з похибками з плаваючою точкою, розглянемо використання is_equal_approx() замість того, яка є більш надійним.


Rect2 operator *(right: Transform2D) 🔗

Неперевершено трансформується (мультати) Rect2 заданим Transform2D матрицею перетворення, під припущенням, що трансформаційна основа є ортонормальним (тобто обертання / рефлекція є дрібним, масштабування / шавлія не).

rect * трансформатор еквівалент transform.inverse() * ct. Transform2D.inverse().

Для перетворення інверсом афінової трансформації (наприклад, з масштабуванням) transform.affine_inverse() * ct може використовуватися замість. Transform2D.affine_inverse().


bool operator ==(right: Rect2) 🔗

Повертає true, якщо обидва значення прямокутників, position та size, абсолютно рівні відповідно.

Примітка: Через помилки точності чисел з плаваючою комою, розгляньте можливість використання is_equal_approx(), що є надійнішим.