Автоучастие - https://yougame.biz/threads/253897/
-
Автор темы
- #1
Вдруг кому-то нужен способ нарисовать округлённый прямоугольник, то сливаю сюда код чата гпт и мой.
Если у вас есть способ лучше то поделитесь пж)
Если у вас есть способ лучше то поделитесь пж)
Скорее всего это больше ромб чем прямоугольник:
local function draw_rounded_rectangle2(x, y, width, height, r, g, b, a)
for i=1, height/2 do
renderer.line(x + height - i, y+i, x+width - height + i, y+i, r,g,b,a)
renderer.line(x + height - i, y+height-i, x+width - height + i, y+height-i, r,g,b,a)
end
end
code: chat gpt:
local function draw_rounded_rectangle(x, y, width, height, radius, r, g, b, a)
local function draw_arc(cx, cy, radius, start_angle, end_angle)
local step = (end_angle - start_angle) / 1
local prev_x, prev_y = cx + math.cos(start_angle) * radius, cy + math.sin(start_angle) * radius
for angle = start_angle + step, end_angle, step do
local new_x = cx + math.cos(angle) * radius
local new_y = cy + math.sin(angle) * radius
renderer.line(prev_x, prev_y, new_x, new_y, r, g, b, a)
prev_x, prev_y = new_x, new_y
end
end
for fill_y = y, y + height do
if fill_y < y + radius then
local offset = math.sqrt(radius^2 - (radius - (fill_y - y))^2)
renderer.line(x + radius - offset, fill_y, x + width - radius + offset, fill_y, r, g, b, a)
elseif fill_y > y + height - radius then
local offset = math.sqrt(radius^2 - (radius - (y + height - fill_y))^2)
renderer.line(x + radius - offset, fill_y, x + width - radius + offset, fill_y, r, g, b, a)
else
renderer.line(x, fill_y, x + width, fill_y, r, g, b, a)
end
end
renderer.line(x + radius, y, x + width - radius, y, r, g, b, a)
renderer.line(x + radius, y + height, x + width - radius, y + height, r, g, b, a)
renderer.line(x, y + radius, x, y + height - radius, r, g, b, a)
renderer.line(x + width, y + radius, x + width, y + height - radius, r, g, b, a)
draw_arc(x + radius, y + radius, radius, math.pi, math.pi * 1.5)
draw_arc(x + width - radius, y + radius, radius, math.pi * 1.5, math.pi * 2)
draw_arc(x + radius, y + height - radius, radius, math.pi * 0.5, math.pi)
draw_arc(x + width - radius, y + height - radius, radius, 0, math.pi * 0.5)
end