git.s-ol.nu watch-cad / master library / create_star.lua
master

Tree @master (Download .tar.gz)

create_star.lua @masterraw · history · blame

local vec2 = (require 'cpml').vec2

function draw_star(S)
  input.circle(S.inner)
  input.circle(S.outer, { center = S.inner().center })

  local inner, outer = S.inner(), S.outer()

  input.slider(S.cnt, 2, 20)
  
  local cnt = math.floor(S.cnt()) * 2
  local step = 2*math.pi/cnt
  local lag  = inner.center + vec2(inner.radius, 0)
  for i = 0, cnt do
    local r = (i % 2 == 0) and inner.radius or outer.radius
    local pos = inner.center + vec2.from_cartesian(r, step * i)

    op.add(pos, vec2(20, 20))
    draw.line(pos, lag)
    
    lag = pos
  end
end

return draw_star