LUA Отрисовка шестиугольника

Tomiks

Участник
Сообщения
419
Реакции
288
Привет всем, хочу отрисовать шестиугольник как на скриншоте, наклацал вот такой код(взял пример с документации и просто менял параметры, но он немного не то делает). Этот код рисует шестиугольник из треугольников, но ещё и не под тем углом, я же хочу нарисовать его одним объектом, т.к. хочу потом к нему присвоить картинку, а так вопрос. Есть ли те, кто знает как можно отрисовать шестиугольник как на картинке? Заранее спасибо за ответы
C++:
hook.Add("HUDPaint", "DrawCircleExample", function()

    -- Left Bottom Hud
    surface.SetDrawColor( 0, 0, 0, 200)
    draw.NoTexture()
    draw.Circle( 100, 100, 50, math.sin( 1 ) * 8 )

end)

function draw.Circle( x, y, radius, seg )
    local cir = {}

    table.insert( cir, { x = x, y = y} )
    for i = 0, seg do
        local a = math.rad( ( i / 6 ) * -360 )
        table.insert( cir, { x = x + math.sin( a ) * radius, y = y + math.cos( a ) * radius} )
    end

    surface.DrawPoly( cir )
end
1587997652038.png
 

Tomiks

Участник
Сообщения
419
Реакции
288
где то я уже эту функцию глобальной тоже видел, делай локальную чтоб потом конфликтов не было.
Да это с офф документации пример, просто он там что-то вроде анимации делал из многоугольника в круг и обратно, а я сделал что он просто многоугольник генерирует, но не так, как мне надо и не под тем наклоном
Сообщения автоматически склеены:

Проблему решил ниже код
C++:
local function GeneratePoly(x,y,radius,quality) -- x,y - расположение; radius - радиус от центра до стороны; quality - кол-во сторон
    local circle = {};
    local tmp = 0;
    local s,c;
    for i=1,quality do
        tmp = math.rad(i*360)/quality;
        s = math.sin(tmp);
        c = math.cos(tmp);
        circle[i] = {x = x + c*radius,y = y + s*radius,u = (c+1)/2,v = (s+1)/2};
    end
    return circle;
end

hook.Add("HUDPaint", "HUDDarkRPTomiks", function()

    -- Left Bottom Hud
    surface.SetDrawColor( 0, 0, 0, 200)
    draw.NoTexture()

    surface.DrawPoly(GeneratePoly(100, 100, 100, 6))

end)
1588005878762.png
 
Последнее редактирование:
Сверху Снизу