Define lis(ft)= Func :Return {sin(5*ft),cos(7*ft)} :EndFunc
-- 今度は元の函数を nspire 側で定義しておく。 -- 前回のスクリプトがそのまま利用できるよう、もう一度 lua の中でリサジュ函数を定義する。 function on.resize() W, H = platform.window:width(), platform.window:height() X0, Y0 = math.floor(W/2), math.floor(H/2) UNIT = math.floor(H/2) end function on.paint(gc) local FROM, TO = -math.pi, math.pi local DT = math.pi/256 local x1, y1 = Lissajous(FROM) for t = (FROM + DT), TO, DT do local x2, y2 = Lissajous(t) gc:drawLine(xy2screen(x1, y1, x2, y2, X0, Y0, UNIT)) x1, y1 = x2, y2 end end ------------------ -- リサジュ函数 -- ------------------ function Lissajous(ft) var.store("ft", ft) return unpack(math.eval("lis(ft)")) end ---------------------------------------------- -- 2 組の xy 座標をスクリーン座標に変換する -- ---------------------------------------------- function xy2screen(x1, y1, x2, y2, X0, Y0, UNIT) return (X0 + x1 * UNIT), (Y0 - y1 * UNIT), (X0 + x2 * UNIT), (Y0 - y2 * UNIT) end