Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- bbox.lua: bounding boxes (experimental). -- This file: -- http://angg.twu.net/LATEX/dednat6/preamble6.lua -- http://angg.twu.net/LATEX/dednat6/preamble6.lua.html -- (find-angg "LATEX/dednat6/preamble6.lua") -- -- See: (find-dn6 "preamble.lua") -- Bounding boxes bbmin = function (a, b) return (a and b) and min(a, b) or (a or b) end bbmax = function (a, b) return (a and b) and max(a, b) or (a or b) end BBox = Class { type = "BBox", new = function (T) return BBox(T or {}):addx1y1() end, __tostring = function (bb) return bb:tostring() end, __index = { tostring = function (bb) local ntos = function (n) return n and format("%.3f", n) or "nil" end local str = format("BBox: [%s,%s]x[%s,%s]", ntos(bb.x0), ntos(bb.x2), ntos(bb.y0), ntos(bb.y2)) if bb.x1 or bb.y1 then str = str..format(", center (%s,%s)", ntos(bb.x1), ntos(bb.y1)) end return str end, x0x2y0y2 = function (bb) return bb.x0, bb.x2, bb.y0, bb.y2 end, addxy = function (bb, x, y) return bb:addx(x):addy(y) end, addx1y1 = function (bb) return bb:addxy(bb.x1, bb.y1) end, addx = function (bb, x) bb.x0 = bbmin(bb.x0, x) bb.x2 = bbmax(bb.x2, x) return bb end, addy = function (bb, y) bb.y0 = bbmin(bb.y0, y) bb.y2 = bbmax(bb.y2, y) return bb end, enlarge = function (bb, d) return BBox.new { x0=(bb.x0 and bb.x0 - d), x2=(bb.x2 and bb.x2 + d), y0=(bb.y0 and bb.y0 - d), y2=(bb.y2 and bb.y2 + d), x1=bb.x1, y1=bb.y1, } end, }, } -- TODO: center, v, toward, intinnerbox, has --[[ • (eepitch-lua51) • (eepitch-kill) • (eepitch-lua51) dofile "bbox.lua" bb = BBox.new {x1=2, y1=3} = bb --]] --[[ • (eepitch-lua51) • (eepitch-kill) • (eepitch-lua51) dofile "bbox.lua" --]] -- Local Variables: -- coding: utf-8-unix -- End: