Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/LATEX/2014-1-GA-P2-gab.lua -- http://angg.twu.net/LATEX/2014-1-GA-P2-gab.lua.html -- (find-angg "LATEX/2014-1-GA-P2-gab.lua") -- See: (find-angg "LATEX/2014-1-GA-P2-gab.tex") -- loadstring = loadstring or load debug.setmetatable (print, { __mul = function (f, g) return function (...) return f(g(...)) end end, }) comma = function (a, b) return a..","..b end pcomma = function (a, b) return "("..a..","..b..")" end seq = function (a, b, step) local T = {} for i=a,b,(step or 1) do table.insert(T, i) end return T end map = function (f, A) local B = {} for i=1,#A do table.insert(B, f(A[i])) end return B end seqpath = function(a, b, step, xyfromt) local values = seq(a, b, step) local pcoords = map(pcomma*xyfromt, values) print(table.concat(pcoords, " -- ")) return table.concat(pcoords, " -- ") end -- (find-angg "LUA/lua50init.lua" "eval-and-L") eval = function (str) return assert(loadstring(str))() end expr = function (str) return eval("return "..str) end L00 = function (args, body) return string.format("function (%s) return %s end", args, body) end L0 = function (str) str = str:gsub("^%s*(%S+)%s+->", "%1 ") local args, body = str:match("^%s*(%S+)%s+(.*)$") return L00(args, body) end L = function (str) return expr(L0(str)) end xyfromuv = L"u,v 2*u-2*v, 2+u+v" -- (0,2) + u*(2,1) + v*(-2,1) uvfromxy = L"x,y x/4+y/2-1, -x/4+y/2-1" cos = math.cos sin = math.sin xyfromh = function (t) return xyfromuv(t, 1/t) end xyfromp = function (t) return xyfromuv(t, t*t) end xyfrome = function (t) return xyfromuv(cos(t), sin(t)) end --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "2014-1-GA-P2-gab.lua" = uvfromxy(0, 2) = uvfromxy(2, 3) = uvfromxy(-2, 3) = xyfromuv(uvfromxy(0, 2)) = xyfromuv(uvfromxy(2, 3)) = xyfromuv(uvfromxy(-2, 3)) xyfromt = L"u,v u+v,u-v" * L"t t,1/t" = xyfromt(10) = seqpath(1, 2, 0.125, xyfromt) --]] -- Local Variables: -- coding: raw-text-unix -- End: