Skip to content

Instantly share code, notes, and snippets.

Michael Ebens mebens

Block or report user

Report or block mebens

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View gist:1044222
Also installing dependencies: libsgml
==> Downloading http://www.hick.org/code/skape/libsgml/libsgml-1.1.4.tar.gz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching
@mebens
mebens / Vector.lua
Created Jun 30, 2011
Vector class for my tutorial on Lua metatables.
View Vector.lua
Vector = {}
Vector.__index = Vector
function Vector.__add(a, b)
if type(a) == "number" then
return Vector.new(b.x + a, b.y + a)
elseif type(b) == "number" then
return Vector.new(a.x + b, a.y + b)
else
return Vector.new(a.x + b.x, a.y + b.y)
@mebens
mebens / main.lua
Created Sep 6, 2011
Complete code for my tutorial on mouse dragging in Love2D.
View main.lua
function love.load()
rect = {
x = 100,
y = 100,
width = 100,
height = 100,
dragging = { active = false, diffX = 0, diffY = 0 }
}
end
@mebens
mebens / gist:3904043
Created Oct 17, 2012
Generate sine wave tones in Love2D
View gist:3904043
local samples = 100000
local data = love.sound.newSoundData(samples)
local noteChange = 10000
local note = 200
local change = 50
local minimum = 100
for i = 0, samples * 2 - 1 do
if i % noteChange == 0 then
local factor = -2 + math.random(0, 4)
@mebens
mebens / gist:3911360
Created Oct 18, 2012
Hz frequencies of the notes from eight octaves in a Lua table.
View gist:3911360
-- converted from http://www.seventhstring.com/resources/notefrequencies.html
notes = {
[0] = { ["c"] = 16.35, ["c#"] = 17.32, ["d"] = 18.35, ["d#"] = 19.45, ["e"] = 20.60, ["f"] = 21.83, ["f#"] = 23.12, ["g"] = 24.50, ["g#"] = 25.96, ["a"] = 27.50, ["a#"] = 29.14, ["b"] = 30.87, },
[1] = { ["c"] = 32.70, ["c#"] = 34.65, ["d"] = 36.71, ["d#"] = 38.89, ["e"] = 41.20, ["f"] = 43.65, ["f#"] = 46.25, ["g"] = 49.00, ["g#"] = 51.91, ["a"] = 55.00, ["a#"] = 58.27, ["b"] = 61.74, },
[2] = { ["c"] = 65.41, ["c#"] = 69.30, ["d"] = 73.42, ["d#"] = 77.78, ["e"] = 82.41, ["f"] = 87.31, ["f#"] = 92.50, ["g"] = 98.00, ["g#"] = 103.8, ["a"] = 110.0, ["a#"] = 116.5, ["b"] = 123.5, },
[3] = { ["c"] = 130.8, ["c#"] = 138.6, ["d"] = 146.8, ["d#"] = 155.6, ["e"] = 164.8, ["f"] = 174.6, ["f#"] = 185.0, ["g"] = 196.0, ["g#"] = 207.7, ["a"] = 220.0, ["a#"] = 233.1, ["b"] = 246.9, },
[4] = { ["c"] = 261.6, ["c#"] = 277.2, ["d"] = 293.7, ["d#"] = 311.1, ["e"] = 329.6, ["f"] = 349.2, ["f#"] = 370.0, ["g"] = 392.0, ["g#"] = 41
@mebens
mebens / gist:3929259
Created Oct 22, 2012
Generate a linear radial gradient in Love2D
View gist:3929259
local function scale(x, min1, max1, min2, max2)
return min2 + ((x - min1) / (max1 - min1)) * (max2 - min2)
end
local function distance(x1, y1, x2, y2)
return math.sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
end
function radialGradient(radius)
local data = love.image.newImageData(radius * 2, radius * 2)
@mebens
mebens / gist:3949839
Created Oct 25, 2012
Reverse a table in Lua
View gist:3949839
function table.reverse(t)
local len = #t + 1
for i = 1, math.floor(#t / 2) do
t[i], t[len - i] = t[len - i], t[i]
end
return t
end
@mebens
mebens / gist:3991990
Created Nov 1, 2012
Calculate 8-axis movement angle with LÖVE and ammo-input
View gist:3991990
-- returns nil if there's no movement
function getDirection()
local xAxis = input.axisDown("left", "right")
local yAxis = input.axisDown("up", "down")
local xAngle = xAxis == 1 and 0 or (xAxis == -1 and math.tau / 2 or nil)
local yAngle = yAxis == 1 and math.tau / 4 or (yAxis == -1 and math.tau * 0.75 or nil)
if xAngle and yAngle then
-- x = 1, y = -1 is a special case the doesn't fit; not sure what I can do about it other than this:
if xAxis == 1 and yAxis == -1 then return yAngle + math.tau / 8 end
@mebens
mebens / gist:4035772
Created Nov 8, 2012
Spritemap that works with Ammo
View gist:4035772
Spritemap = class("Spritemap")
Spritemap._mt = {}
function Spritemap._mt:__index(key)
return rawget(self, "_" .. key) or self.class.__instanceDict[key]
end
Spritemap:enableAccessors()
function Spritemap:initialize(img, fw, fh, complete, ...)
@mebens
mebens / example.lua
Created Nov 16, 2012
Doubly linked list in Lua
View example.lua
require("list")
local a = { 3 }
local b = { 4 }
local l = list({ 2 }, a, b, { 5 })
l:pop()
l:shift()
l:push({ 6 })
l:unshift({ 7 })
You can’t perform that action at this time.