Перейти к содержимому

Rect

Rect описывает прямоугольник через позицию (x, y) и размер (width, height). Он часто используется для размещения элементов ImGui и других двумерных областей.

Rect только хранит геометрию прямоугольной области. Он ничего не размещает и не обрезает самостоятельно. Конкретный метод, получивший Rect, решает, как трактовать координаты: например, ImGui использует его как экранную область отрисовки.

Производные поля xMin/xMax/yMin/yMax/center пересчитывают те же границы. Изменение локального прямоугольника не перемещает ранее нарисованный элемент — его нужно снова передать API отрисовки.

local area = Rect.new(20, 30, 200, 40)
print(area.center) -- (120.00, 50.00)
Rect.new(x: number, y: number, width: number, height: number): Rect
Аргумент Тип Описание
x number Позиция по оси X.
y number Позиция по оси Y.
width number Ширина.
height number Высота.

Все свойства Rect доступны на чтение и запись.

Свойство Тип Доступ Описание
x number get/set Позиция по X.
y number get/set Позиция по Y.
width number get/set Ширина.
height number get/set Высота.
xMin number get/set Минимальная координата X.
yMin number get/set Минимальная координата Y.
xMax number get/set Максимальная координата X.
yMax number get/set Максимальная координата Y.
center Vector2 get/set Центр прямоугольника.

Для Rect.new(10, 20, 30, 40) значения выглядят так:

Свойство Значение
x, y 10, 20
width, height 30, 40
xMin, yMin 10, 20
xMax, yMax 40, 60
center (25, 40)

Можно менять как позицию и размер, так и границы или центр:

local area = Rect.new(20, 20, 320, 180)
area.width = 400
area.center = Vector2.new(500, 300)

Связанные свойства описывают один и тот же прямоугольник. После изменения границы, центра, позиции или размера перечитайте остальные значения, если они нужны дальше в расчётах.

local area = Rect.new(20, 20, 320, 180)
Scheduler:OnFrame(function()
ImGui:DrawTexture(texture, area)
end)

Система координат определяется API, которому передаётся Rect. Сам тип только хранит прямоугольную область. Практические способы вывода описаны на странице ImGui.