1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
!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 entre 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
!reset slib_lignec slib_lignes slib_lignesc
!for slib_i=1 to $slib_n
slib_lignec=!append item 0,0,$(slib_vertex[2*$slib_i-1,2*$slib_i]) to $slib_lignec
slib_lignes=!append item 0,0,$(slib_arete[2*$slib_i-1,2*$slib_i]) to $slib_lignes
slib_lignesc=!append item 0,0,$(slib_vertex[2*$slib_i-1,2*$slib_i]),0,0,$(slib_arete[2*$slib_i-1,2*$slib_i]) \
to $slib_lignesc
!next
!reset 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\
segments black,$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\
segments black,$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\
segments black,$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
|