|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/ExprDxDy1.lua.html
-- http://anggtwu.net/LUA/ExprDxDy1.lua
-- (find-angg "LUA/ExprDxDy1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- Support for expressions like Dx^2-Dy^2, where:
-- Dx = x-x0
-- Dy = x-y0
-- each of these expressions generates a function, like this,
-- x0,y0 = 3,2
-- f = Expr.from("Dx^2-Dy^2").f
--
-- (defun e () (interactive) (find-angg "LUA/ExprDxDy1.lua"))
-- «.ExprDxDy» (to "ExprDxDy")
-- «.ExprDxDy-tests-2D» (to "ExprDxDy-tests-2D")
-- «.ExprDxDy-tests-3D» (to "ExprDxDy-tests-3D")
-- «.ExprDxDy-tests-2D3D» (to "ExprDxDy-tests-2D3D")
-- «.ExprDxDy-tests-abc» (to "ExprDxDy-tests-abc")
require "Numerozinhos1" -- (find-angg "LUA/Numerozinhos1.lua")
require "Surface1" -- (find-angg "LUA/Surface1.lua")
-- _____ ____ ____
-- | ____|_ ___ __ _ __| _ \__ _| _ \ _ _
-- | _| \ \/ / '_ \| '__| | | \ \/ / | | | | | |
-- | |___ > <| |_) | | | |_| |> <| |_| | |_| |
-- |_____/_/\_\ .__/|_| |____//_/\_\____/ \__, |
-- |_| |___/
--
-- «ExprDxDy» (to ".ExprDxDy")
-- (find-angg "LUA/Code.lua" "Code")
-- (find-angg "LUA/Code2.lua" "Code-tests")
ExprDxDy = Class {
type = "ExprDxDy",
from = function (expr)
local fmt = "local x,y=...; local Dx,Dy=x-x0,y-y0; return %s"
-- local f = Code {src=expr, code=format(fmt, expr)}
local f = Code {src=expr, body=format(fmt, expr)}
return ExprDxDy {expr=expr, f=f}
end,
__tostring = function (edd) return mytostringv(edd) end,
__index = {
numerozinhos = function (edd, radius)
radius = radius or 1
local xy_sw = v(x0-radius, y0-radius)
local xy_ne = v(x0+radius, y0+radius)
return Numerozinhos.fromf(xy_sw, xy_ne, edd.f)
end,
--
surface0 = function (edd) return Surface.new(edd.f) end,
squareanddiagonals = function (edd, n)
return edd:surface0():squareanddiagonals(n or 8)
end,
pgat3 = function (edd, n)
return edd:squareanddiagonals(n):pgat3()
end,
--
topict2D = function (edd, opts) return edd:numerozinhos():topict(opts) end,
topict3D = function (edd, n) return edd:pgat3(n) end,
--
topict2D_433 = function (edd, opts)
Pgat3.set433_2D()
return edd:topict2D(opts)
end,
topict3D_433 = function (edd, n)
Pgat3.set433()
return edd:topict3D(n)
end,
--
a0 = function (edd) return (edd.expr:gsub("D", "\\Delta "):gsub("%*", "\\cdot ")) end,
b0 = function (edd) return edd:topict2D_433({u="11pt"}) end,
c0 = function (edd) return edd:topict3D_433(edd.n or 16):preunitlength("6pt") end,
a = function (edd) return Pict { edd:a0() } :sa(edd.expr.." 1D") end,
b = function (edd) return edd:b0() :sa(edd.expr.." 2D") end,
c = function (edd) return edd:c0() :sa(edd.expr.." 3D") end,
abc = function (edd) return Pict { edd:a(), edd:b(b), edd:c() } end,
},
}
-- «ExprDxDy-tests-2D» (to ".ExprDxDy-tests-2D")
--[[
* (show2-use "$SHOW2LATEXDIR/")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "ExprDxDy1.lua"
x0,y0 = 3,2
edd = ExprDxDy.from("Dx")
= edd
= edd.f
= edd.f(4,3)
PictBounds.setbounds(v(0,0), v(5,4))
ns = edd:numerozinhos(2)
ns = edd:numerozinhos()
= ns
= ns:xyf(2, 3)
= ns:show {u="14pt"}
* (etv)
sg = StrGrid.from([=[
. . A B C
. . D E F
. . G H I
. . . . .
]=])
= sg:labels()
= sg:subst("A--C--I--G--A B--H")
spec = sg:subst("A--C--I--G--A B--H")
= ns:setspec(spec)
= ns:show {u="14pt"}
* (etv)
--]]
-- «ExprDxDy-tests-3D» (to ".ExprDxDy-tests-3D")
--[[
* (show2-use "$SHOW2LATEXDIR/")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "ExprDxDy1.lua"
Pgat3.set433()
V3.threeD = "2D"
x0,y0 = 3,2
edd = ExprDxDy.from("2+Dx^2-Dy^2")
= edd:surface0()
= edd:squareanddiagonals(8)
= edd:squareanddiagonals(8):pgat3()
= edd:pgat3()
= edd:pgat3():show("", {scale=0.9})
* (etv)
--]]
-- «ExprDxDy-tests-2D3D» (to ".ExprDxDy-tests-2D3D")
--[[
* (show2-use "$SHOW2LATEXDIR/")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "ExprDxDy1.lua"
V3.threeD = "2D"
x0,y0 = 3,2
edd = ExprDxDy.from("2+Dx^2-Dy^2")
p2D = edd:topict2D_433({u="11pt"})
p3D = edd:topict3D_433(16)
p3D = edd:topict3D_433(8)
p3D = edd:topict3D_433(2)
pboth = Pict { p2D, "\\quad", p3D }
= pboth:show("")
* (etv)
= p2D:pgat("", {def="foo"})
= p3D:pgat("", {sa="bar"})
--]]
-- «ExprDxDy-tests-abc» (to ".ExprDxDy-tests-abc")
--[==[
* (show2-use "$SHOW2LATEXDIR/")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "ExprDxDy1.lua"
V3.threeD = "2D"
x0,y0 = 3,2
edd = ExprDxDy.from("2+Dx^2-Dy^2")
edd.n = 2
= edd:abc()
foo = [=[
\def\exprdxdyabc#1{\ensuremath{
\ga{#1 1D} \quad
\ga{#1 2D} \quad
\ga{#1 3D}
}}
\exprdxdyabc{2+Dx^2-Dy^2}
]=]
p = Pict { edd:abc(), foo }
= p
= p:show("")
* (etv)
--]==]
-- Local Variables:
-- coding: utf-8-unix
-- End: