Rev 4704 | Rev 5736 | 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_author=Bernadette, Perrin-Riou
slib_require=pari
slib_example=6,[green,blue,green,blue,green,blue]\
6,[green,blue,green,blue,green,blue],,html\
5,[green,blue,green,blue,orange],vertex,html\
4,[green,blue,green,blue,green,blue],edge,html\
8,[green,blue,green,blue,green,blue,green,blue],circle,html
!exit
:proc
slib_out=
!distribute items $wims_read_parm into slib_n,slib_color,slib_option,slib_url
slib : en entrée n, liste de couleurs , sommets, arete ...
!default slib_n=5
slib_n=$[$slib_n]
!default slib_option=edge
!if $slib_option=circle
slib_option=$slib_option edge
!endif
slib_color=!declosing $slib_color
slib_vertex = !exec pari concat(vector($slib_n,i,[ cos(2*i*pi/$slib_n),sin(2*i*pi/$slib_n)]))
slib_arete= !exec pari cos(pi/$slib_n)*concat(vector($slib_n,i,[ cos(2*i*pi/$slib_n+pi/$slib_n),sin(2*i*pi/$slib_n+pi/$slib_n)]))
!if vertex iswordof $slib_option
slib_points_s = !exec pari 0.4*concat(vector($slib_n,i,[ cos(2*i*pi/$slib_n+pi/(2*$slib_n)),sin(2*i*pi/$slib_n+pi/(2*$slib_n))]))
!endif
!if edge iswordof $slib_option
slib_points_c= !exec pari 0.4*concat(vector($slib_n,i,[ cos(2*i*pi/$slib_n+3*pi/(2*$slib_n)),sin(2*i*pi/$slib_n+3*pi/(2*$slib_n))]))
!endif
!if vertex iswordof $slib_option and edge iswordof $slib_option
slib_points_cs=!exec pari 0.4*concat(vector($slib_n,i,[ cos(2*i*pi/$slib_n+pi/(2*$slib_n)),sin(2*i*pi/$slib_n+pi/(2*$slib_n)),cos(2*i*pi/$slib_n+3*pi/(2*$slib_n)),sin(2*i*pi/$slib_n+3*pi/(2*$slib_n))]))
!endif
slib_lignec=
slib_lignecs=
slib_lignes=
!for slib_i=1 to $slib_n
slib_lignec=!append line line 0,0,$(slib_vertex[2*$slib_i-1,2*$slib_i]),black to $slib_lignec
slib_lignes=!append line line 0,0,$(slib_arete[2*$slib_i-1,2*$slib_i]),black to $slib_lignes
slib_lignesc=$slib_lignesc\
line 0,0,$(slib_vertex[2*$slib_i-1,2*$slib_i]),black\
line 0,0,$(slib_arete[2*$slib_i-1,2*$slib_i]),black
!next
slib_fills=
slib_fillc=
slib_fillcs=
!for slib_i=1 to $slib_n
slib_color_=!declosing $(slib_color[$slib_i])
slib_fills=$slib_fills\
fill $(slib_points_s[2*$slib_i-1,2*$slib_i]),$slib_color_
slib_fillc=$slib_fillc\
fill $(slib_points_c[2*$slib_i-1,2*$slib_i]),$slib_color_
slib_color__=$(slib_color[2*$slib_i-1])
slib_fillcs=$slib_fillcs\
fill $(slib_points_cs[4*$slib_i-3,4*$slib_i-2]),$slib_color__\
fill $(slib_points_cs[4*$slib_i-1,4*$slib_i]),$slib_color_
!next
!if $slib_option issametext
slib_out=\
xrange -1.5,1.5\
yrange -1.5,1.5\
polygon black,$slib_vertex
!endif
!if circle iswordof $slib_option
slib_o= trange 0,2*pi\
plot black,sin(t),cos(t)
!else
slib_o=polygon black,$slib_vertex
!endif
!if vertex iswordof $slib_option and edge notwordof $slib_option
slib_out=\
xrange -1.5,1.5\
yrange -1.5,1.5\
$slib_o\
$slib_lignes\
$slib_fills
!endif
!if vertex notwordof $slib_option and edge iswordof $slib_option
slib_out=\
xrange -1.5,1.5\
yrange -1.5,1.5\
$slib_o\
$slib_lignec\
$slib_fillc
!endif
!if vertex iswordof $slib_option and edge iswordof $slib_option
slib_out=\
xrange -1.5,1.5\
yrange -1.5,1.5\
$slib_o\
$slib_lignes\
$slib_lignec\
$slib_fillcs
!endif
!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