Lua 如何使surface.DrawTexturedRectRotated()从左侧旋转?

Lua 如何使surface.DrawTexturedRectRotated()从左侧旋转?,lua,garrys-mod,Lua,Garrys Mod,我使用surface.DrawTexturedRectRotated()生成填充圆,但它从中心旋转,我想让它从左侧旋转 如何使其从左侧旋转?如果您想要通过指定ang参数来创建类似饼图的填充圆的函数,最好的选择可能是surface.DrawPoly(表格顶点)。您应该能够这样使用它: function draw.filled圆(x,y,r,ang,color)——x,y是圆的中心,r是半径 局部顶点={{x=x,y=y}--添加中心点 对于i=0,ang do 局部xx=x+math.cos(m

我使用surface.DrawTexturedRectRotated()生成填充圆,但它从中心旋转,我想让它从左侧旋转


如何使其从左侧旋转?

如果您想要通过指定
ang
参数来创建类似饼图的填充圆的函数,最好的选择可能是
surface.DrawPoly(表格顶点)
。您应该能够这样使用它:

function draw.filled圆(x,y,r,ang,color)——x,y是圆的中心,r是半径
局部顶点={{x=x,y=y}--添加中心点
对于i=0,ang do
局部xx=x+math.cos(math.rad(i))*r
局部yy=y-math.sin(math.rad(i))*r
表.插入(顶点,{x=xx,y=yy})
结束
--结果表是一个逆时针顶点列表
--surface.DrawPoly()需要顺时针列表
verts=表格。反转(verts)--应执行此操作
表面。SetDrawColor(颜色或白色)
draw.NoTexture()
表面。拉伸多边形(顶点)
结束
我已经按照建议将
surface.SetDrawColor()
放在了
draw.NoTexture()
之前

对于i=0,ang,angleStep do,您可能希望使用
,而不是减少顶点的数量,从而减少硬件负载,但是这仅适用于小圆圈(如示例中的圆圈),因此角度步长应该是半径的某个函数,以考虑各种情况。此外,还需要进行额外的计算,以允许角度不被角度阶跃除以余数为零

——在for循环之后
如果是一步,那么
局部xx=x+math.cos(math.rad(ang))*r
局部yy=y-math.sin(math.rad(ang))*r
表.插入(顶点,{x=xx,y=yy})
结束
至于纹理,如果你的纹理不是纯色,这将与矩形有很大的不同,但是快速查看一下矩形并没有发现更好的方法来实现这一点

function draw.FilledCircle( x, y, w, h, ang, color )
    for i=1,ang do
        draw.NoTexture()
        surface.SetDrawColor( color or color_white )
        surface.DrawTexturedRectRotated( x,y, w, h, i )
    end
end