Subversion Repositories wimsdev

Rev

Rev 7692 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

!if $wims_read_parm!=slib_header
  !goto proc
!endif

slib_parms=8\
,[f1x,f1y] $wims_name_or [f1z]\
,[f21,f22,...]\
-2,xmin\
2, xmax\
-2, ymin\
2, ymax\
red,color\
html,option: html, url\

slib_author=Bernadette, Perrin-Riou

slib_example=[x,y], [y - 0.5, -y + 1],-2,2,-2,2,green,html\
[x,y], [x^2+y^2 -1,-x^2-y^2 + 2,-x*y+0.5],-2,2,-2,2,green,html\
[x-y,x+y], [x^2+y^2 -1,-x^2-y^2 + 2,-x*y+0.5],-2,2,-2,2,green,html\
[x-y, x+y], [x^2-y, x^2+y],-2,2,-2,2,green,html\
 [x,y], [x^2-y, x^2+y,x],-2,2,-2,2,green,html\
 [x-y, x+y], [x^2-y^2,x],-2,2,-2,2,blue,html\
 [x,y], [x^2-y^2,sin(x/10)+y],-5,5,-5,5,green,html\
 [-0.5 * i *z + 1.5],[-(x - 1)^2 - (y + 1)^2 + 0.5^2],-3.2,3.2,-3.2,3.2,,url\
 [-0.5 * i *z + 1.5],[-(x - 1)^2 - (y + 1)^2 + 0.5^2],-3.2,3.2,-3.2,3.2,,html

!exit

:proc
slib_out=

!distribute items $wims_read_parm into slib_f,slib_g,slib_xmin,slib_xmax,slib_ymin,slib_ymax,slib_color,slib_option

!default slib_color=red
!default slib_colorw=grey
!default slib_url=html
!default slib_xmin=-2
!default slib_xmax=2
!default slib_ymin=-2
!default slib_ymax=2

slib_url=$slib_option
!!default slib_url=html
slib_f=!declosing $slib_f
slib_fcnt=!itemcnt $slib_f
!if $slib_fcnt=1
  slib_f=!mathsubst z= (x + i*y) in $slib_f
  slib_f = !exec pari [real($slib_f),imag($slib_f)]
!endif

slib_g=!declosing $slib_g
slib_gcnt=!itemcnt $slib_g

!reset slib_out

!reset slib_FG
!for slib_i=1 to $slib_gcnt
  slib_fg= !mathsubst x=XX in $(slib_g[$slib_i])
  slib_fg= !mathsubst y=YY in $slib_fg
  slib_fg= !mathsubst XX=($(slib_f[1])) in $slib_fg
  slib_fg= !mathsubst YY=($(slib_f[2])) in $slib_fg
  slib_FG=!append item $slib_fg to $slib_FG
  slib_out=!append line levelcurve $slib_colorw,$slib_fg to $slib_out
!next
slib_test=1
!reset slib_Test
slib_N=30
slib_inc=0.01
!for slib_grx=0 to $slib_N
  !for slib_gry=0 to $slib_N
    slib_test=1
    slib_point=$[$slib_inc + $slib_xmin + $ + $slib_grx*($slib_xmax - ($slib_xmin))/$slib_N], $[$slib_inc + $slib_ymin + ($slib_gry)*($slib_ymax - ($slib_ymin))/$slib_N]
    !for slib_i=1 to $slib_gcnt
     !reset slib_value
      slib_value=!mathsubst x=($(slib_point[1])) in $(slib_FG[$slib_i])
      slib_value=!evalsubst y= ($(slib_point[2])) in $slib_value
      !!should be better to test in pixels ??
      !ifval $slib_value <= 0.01
        slib_test=0
        !break
      !endif
    !next
    !if $slib_test=1
      !!slib_out=!append line point $slib_point,$slib_color to $slib_out
      slib_out=!append line fill $slib_point,$slib_color to $slib_out
    !endif
  !next
!next
slib_out=$slib_out

slib_out= xrange $slib_xmin,$slib_xmax\
yrange $slib_ymin,$slib_ymax\
$slib_out\
parallel $slib_xmin,0,$slib_xmax,0,0,-1,10,grey\
parallel $slib_xmin,0,$slib_xmax,0,0,1,10,grey\
parallel 0,$slib_ymin,0,$slib_ymax,1,0,10,grey\
parallel 0,$slib_ymin,0,$slib_ymax,-1,0,10,grey\
hline black,0,0\
vline black,0,0
slib_out1=$slib_out
!if url iswordof $slib_url or html iswordof $slib_url
  insdraw_size=200,200
  !insdraw $slib_out
  slib_out=$ins_url
  !if html iswordof $slib_url
    slib_out=<img src="$ins_url" alt="" />
  !else
    slib_out=$slib_out,$insdraw_size
  !endif
!endif