Re: Il disegno programmato nell’Arte di scrivere con LaTeX

#72810
OldClaudio
Partecipante
    Up
    0
    Down
    ::

    ansys” post=73127Su invito di @OldClaudio, riporto un codice per LuaLaTeX. Attenzione: non è farina del mio sacco perché mi sono basato su un codice di @azoun su TeX StackExchange: LuaLaTeX:PGFplots can’t read data passed by Lua.

    `% !TEX program = LuaLaTeX

    \documentclass{standalone}

    \usepackage{pgfplots}
    \usepackage{luacode}

    \begin{luacode*}

    function Liss(val,t)
    return math.sin(val*t)
    end

    function stampa_pgf(a,b)

    tex.sprint(“\\addplot[mark=, red, smooth] coordinates{“)

    — 2pi_greco/500=0.0125663
    for i=0,2*math.pi,0.0125663 do
    x=Liss(a,i)
    y=Liss(b,i)
    tex.sprint(“(“..x..”,”..y..”)”)
    end

    tex.sprint(“};”)
    end

    \end{luacode*}

    \newcommand\myaddplot[2]{\directlua{stampa_pgf(#1,#2)}}

    \begin{document}
    \begin{tikzpicture}
    \begin{axis}
    \myaddplot{7}{2}
    \end{axis}
    \end{tikzpicture}
    \end{document}

    %%% Local Variables:
    %%% mode: latex
    %%% TeX-engine: luatex
    %%% TeX-master: t
    %%% End:`
    Ciao
    Orlando

    Ho provato il cidce. A parte il fatto che il mio TeXShop non interpreta correttamente la riga magica relativa al program (la riga giusta dovrebbe essere % !TEX TS-program = LuaLaTeX); il disegno di Lissajous è calcolato per 500 punti di interpolazione; il disegno viene benissimo e la memoria di Lua non ne viene minimamante intasata, ma di fatto il codice lua genera la tabella che pgfplot interpreta come al solito; dagli ultimi messaggi di Lorenzo, sembrerebbe che se il numero di campioni arriva 10001 (non 11000) calcolati da Mathematica, ma se sono calcolati da mathlab o da Lua e lo stesso, si supera la capacità di memoria di pgfplots anche avendo allargato la memoria di pdftex some ci ha spiegato in un altro post; Certo con 200 samples il disegno viene bene anche con pgfplots; con i 500 samples calcolati da Lua le cose vanno ancora meglio; ma il problema della saturazione della memoria non ne viene toccato.

    Io ho trovato molto istruttivo l’esempio, perché mostra quanto sia semplice il codice Lua da usare. Non sono ancora convinto che non si possa fare meglio con le cubiche di Bézier (di Bernstein/) scegliendo adeguatamente i nodi di interpolazione. Certo, scegliere adeguatamante vuol dire disporre di un programma molto intelligente, oppure di fare le cose a mano.

    Go to top