-- qt.lua,15 (one edge vector) -- Julia sets via interval cell-mapping (quadtree version) --require"julia" local f=f local io=io local root,exterior local cx,cy local Rxmin,Rxmax,Rymin,Rymax=-2.0,2.0,-2.0,2.0 local white=1.0 local black=0.0 local gray=0.5 local N=0 local nE=0 local E={} local write=io.write local function output(a1,a2,a3,a4,a5,a6) write( a1 or ""," ", a2 or ""," ", a3 or ""," ", a4 or ""," ", a5 or ""," ", a6 or ""," \n") end local function imul(xmin,xmax,ymin,ymax) local mm=xmin*ymin local mM=xmin*ymax local Mm=xmax*ymin local MM=xmax*ymax local m,M=mm,mm if m>mM then m=mM elseif MMm then m=Mm elseif MMM then m=MM elseif M4.0 end local function inside(xmin,xmax,ymin,ymax) return xmin^2+ymin^2<=4.0 and xmin^2+ymax^2<=4.0 and xmax^2+ymin^2<=4.0 and xmax^2+ymax^2<=4.0 end local function newcell() return {nil,nil,nil,nil,color=gray} end local function addedge(a,b) nE=nE+1 E[nE]=b end local function refine(q) if q.color==gray then if q[1]==nil then q[1]=newcell() q[2]=newcell() q[3]=newcell() q[4]=newcell() else refine(q[1]) refine(q[2]) refine(q[3]) refine(q[4]) end end end local function clip(q,xmin,xmax,ymin,ymax,o,oxmin,oxmax,oymin,oymax) local ixmin,ixmax,iymin,iymax if xmin>oxmin then ixmin=xmin else ixmin=oxmin end if xmax=ixmax then return end if ymin>oymin then iymin=ymin else iymin=oymin end if ymax