Lisp »Tips 'n Tricks
»Uso di Foreach (II) »(I)
Il lisp graph modificato permette di salvare su file txt il diagramma di una generica funzione f(x).
graph2.lsp
;|
Graph2.lsp by Claudio Piccini (1/03/2004)
www.cg-cad.com
Salva su file graph.txt il diagramma
della funzione f(x)
Basato su:
Program 4.7 - "Manuale del Pascal",
K. Jensen, N.Wirth
|;
(defun dis_f (funz / xlines scale zeroy delta i
xlimit nomedir nf f1 point
x y round yposition
spazio asterisco
)
(setq xlines 16)
(setq scale 32)
(setq zeroY 34)
(setq delta (/ 1.0 xlines))
(setq i 0)
(while (< i 100)
(setq xlimit (append xlimit (list i)))
(setq i (1+ i))
)
(setq nomeDir (getvar "dwgprefix"))
(setq nf (strcat nomeDir "graph.txt"))
(setq f1 (open nf "w"))
(foreach Point Xlimit
(setq x (* Delta Point))
(setq y (eval (read funz)))
(if (>= (* Scale y) 0)
(setq Round (fix (+ (* Scale y) 0.5)))
(setq Round (fix (- (* Scale y) 0.5)))
)
(setq YPosition (+ Round ZeroY))
(setq spazio "")
(repeat YPosition
(setq spazio (strcat spazio " "))
)
(setq asterisco (strcat spazio "*"))
(write-line asterisco f1)
)
(close f1)
)
(defun c:graph2 ( / funz )
(setq funz (getstring "\nFunzione (ad es. \"(sin x)\"): "))
(dis_f funz)
)
;;;eof
|
Test del lisp
Command: graph2
Funzione (ad es. "(sin x)"): "(* (exp (* x -1))(sin (* 2 pi x)))"
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
|
Command: graph2
Funzione (ad es. "(sin x)"): "(sin(* 2 pi x))"
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
|
(setq y (eval (read funz)))
Ad esempio funz="(+ 1 x)"
(setq y (read funz)) = (+ 1 x)
(eval y) = x + 1
Lisp »Tips 'n Tricks
Ultimo Aggiornamento_Last Update: 1 Marzo 2004
|