Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Arcs... AND MORE!

edited October 2012 in Code Sharing Posts: 371

Hi guys! I just learnt about basic trigonometry, and couldn't resist playing around with it, and viola! Here is an experiment with arcs, trigonometry, and creating a "clean" function. (I have a circle feature in here, but it is incomplete, so I removed it)

-- Upgrade Codea



local mt = {}

function mt:__call(...)
    self:call(...)
end

function mt:__newindex()
    return
end

arc = {}

arc.mesh = mesh()

arc.points = {}

function arc:call(x, y, r, s, e)
    self.mesh:clear()
    self.points = {}
    self.points[1] = vec2(0, 0)
    for i = s, e, 3  do
        i = i / 180 * math.pi
        table.insert(self.points, 1, vec2(math.cos(i), math.sin(i)))
    end
    self.mesh.vertices = triangulate(self.points)
    pushMatrix()
        translate(x, y)
        scale(r)
        self.mesh:draw()
    popMatrix()
end


setmetatable(arc, mt)

-- Use this function to perform your initial setup
function setup()
    watch("dt")
end

-- This function gets called once every frame
function draw()
    dt = 1/DeltaTime
    background(255, 255, 255, 255)
    fill(255, 0, 0, 255)
    arc(WIDTH / 2, HEIGHT / 2, 200, 0, 60)
    fill(6, 255, 0, 255)
    arc(WIDTH / 2, HEIGHT / 2, 200, 60, 180)
    fill(0, 0, 255, 255)
    arc(WIDTH / 2, HEIGHT / 2, 200, 180, 360)
end



P.S.
The frame rate drops to 15 or so when using arc with about 270 to 360 degrees, as it creates the mesh every frame (my circle function is MUCH faster, as it just reuses the same mesh, but scales it, I guess I could cache the meshes, but that sounds like a big deal, so maybe later)

Comments

Sign In or Register to comment.