63 lines
1.9 KiB
Lua
Executable File
63 lines
1.9 KiB
Lua
Executable File
#!/usr/bin/env lua
|
|
|
|
--
|
|
-- lualogo.lua (c) 2006 Alexandre Erwin Ittner <aittner@netuno.com.br>
|
|
--
|
|
-- Drawns the Lua Logo. This script requires fontconfig and the "Helvetica"
|
|
-- font installed in your system.
|
|
--
|
|
-- $Id: lualogo.lua,v 1.3 2006/03/25 23:56:06 dermeister Exp $
|
|
--
|
|
|
|
|
|
require "gd"
|
|
|
|
gd.useFontConfig(true)
|
|
|
|
function makelogo(size)
|
|
local nsize = 3 * size
|
|
local im = gd.createTrueColor(nsize, nsize)
|
|
local white = im:colorAllocate(255, 255, 255)
|
|
local blue = im:colorAllocate(0, 0, 128)
|
|
local gray = im:colorAllocate(170, 170, 170)
|
|
|
|
local ediam = nsize * 0.68 -- Earth diameter
|
|
local mdiam = ediam * (1 - math.sqrt(2) / 2) -- Moon diameter
|
|
local odiam = ediam * 1.3 -- Orbit diameter
|
|
local emdist = odiam/2 * 1.05 -- Earth - Moon distance
|
|
local esdist = odiam/2 * 0.4 -- Earth - Moon shadow distance
|
|
local mang = 45 -- Moon angle (degrees)
|
|
local mangr = math.rad(mang)
|
|
local cxy = nsize/2.0
|
|
|
|
im:fill(0, 0, white)
|
|
im:filledArc(cxy, cxy, ediam, ediam, 0, 360, blue, gd.ARC)
|
|
|
|
im:setThickness(math.max(0.02 * ediam, 1))
|
|
local i
|
|
for i = 0, 360, 10 do
|
|
im:arc(cxy, cxy, odiam, odiam, i, i+5, gray)
|
|
end
|
|
im:setThickness(1)
|
|
|
|
-- Moon
|
|
local mcx = cxy + math.sin(math.rad(mang)) * emdist
|
|
local mcy = cxy - math.cos(math.rad(mang)) * emdist
|
|
im:filledArc(mcx, mcy, mdiam, mdiam, 0, 360, blue, gd.ARC)
|
|
|
|
-- Moon shadow
|
|
local mscx = cxy + math.sin(math.rad(mang)) * esdist
|
|
local mscy = cxy - math.cos(math.rad(mang)) * esdist
|
|
im:filledArc(mscx, mscy, mdiam, mdiam, 0, 360, white, gd.ARC)
|
|
|
|
im:stringFT(white, "Helvetica", 0.23*nsize, 0, 0.25*nsize, 0.7*nsize, "Lua")
|
|
|
|
-- Implementation of the "Desperate anti-aliasing algorithm" ;)
|
|
local im2 = gd.createTrueColor(size, size)
|
|
im2:copyResampled(im, 0, 0, 0, 0, size, size, nsize, nsize)
|
|
return im2
|
|
end
|
|
|
|
makelogo(140):png("lualogo.png")
|
|
os.execute("lualogo.png")
|