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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_author=Bernadette, Perrin-Riou
slib_example=[0,0,1;0,0,1;1,1,0],red,blue, [A,B,C],[1,3,green;3,2,purple],html\
[0,0,1,1;0,0,1,1;1,1,0,1;1,1,1,0],red,blue,,[1,3,2,green]\
[0,0,1,1;0,0,1,1;1,1,0,1;1,1,1,0],red,blue,,[1,3,2,green],html\
[0,0,4,4;0,0,1,1;4,1,0,1;4,1,1,0],red,blue,,[1,3,2,green],html weight
slib_require=pari
!exit
:proc
!reset slib_color1 slib_color2 slib_names slib_couleur
!distribute item $wims_read_parm into slib_G,slib_color1,slib_color2,slib_names,slib_path,slib_option
slib_path=!declosing $slib_path
slib_path=!translate internal ; to $\
$ in $slib_path
slib_cnt_path=!linecnt $slib_path
!for slib_i=1 to $slib_cnt_path
slib_path_prov= !line $slib_i of $slib_path
slib_path_color$slib_i= !item -1 of $slib_path_prov
slib_path_color$slib_i= !declosing $(slib_path_color$slib_i)
slib_path$slib_i=!item 1 to -2 of $slib_path_prov
slib_path$slib_i=!nospace $(slib_path$slib_i)
!next slib_i
slib_G=!declosing $slib_G
slib_G=!translate internal ; to $\
$ in $slib_G
slib_GG=!translate internal $\
$ to ; in $slib_G
slib_or=!exec pari Mat([$slib_GG])==Mat([$slib_GG])~
slib_names=!declosing $slib_names
slib_color1=!declosing $slib_color1
slib_color2=!declosing $slib_color2
slib_n=!line 1 of $slib_G
slib_n=!itemcnt $slib_n
!default slib_color1=blue
!default slib_color2=blue
!default slib_names=!values slib_i for slib_i=1 to $slib_n
!for slib_i =1 to $slib_n
slib_COS$slib_i=$[cos(2*pi*$slib_i/$slib_n)]
slib_SIN$slib_i=$[sin(2*pi*$slib_i/$slib_n)]
!next slib_i
slib_dessin = xrange -1.5,1.5\
yrange -1.5,1.5
!for slib_i=1 to $slib_n
slib_name =!item $slib_i of $slib_names
!default slib_couleur=$slib_color1
slib_dessin=$slib_dessin\
disk $(slib_COS$slib_i),$(slib_SIN$slib_i), 6,$slib_couleur\
text black, $[1.3*$(slib_COS$slib_i)],$[1.3*$(slib_SIN$slib_i)], medium, $slib_name
!reset slib_couleur
!for slib_k=1 to $slib_cnt_path
!!! vertex
!if $slib_i isitemof $(slib_path$slib_k) and $($(slib_path$slib_k)[3])=$empty
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next
!if $slib_or=1
!for slib_j=1 to $slib_i
slib_r=!line $slib_i of $slib_G
slib_u=!item $slib_j of $slib_r
!if $slib_u>0
slib_couleur=$slib_color2
!for slib_k=1 to $slib_cnt_path
!if $slib_i,$slib_j isin $(slib_path$slib_k) or $slib_j,$slib_i isin $(slib_path$slib_k)
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next slib_k
!if $slib_i<>$slib_j
slib_dessin=$slib_dessin\
segment $(slib_COS$slib_i),$(slib_SIN$slib_i),$(slib_COS$slib_j),$(slib_SIN$slib_j),$slib_couleur
!if weight iswordof $slib_option
slib_dessin=$slib_dessin\
text black, $[(2*$(slib_COS$slib_i)+$(slib_COS$slib_j))/3],$[(2*$(slib_SIN$slib_i)+$(slib_SIN$slib_j))/3],medium,$(slib_GG[$slib_i;$slib_j])
!endif
!else
slib_dessin=$slib_dessin\
ellipse $[$(slib_COS$slib_i)*1.25],$[$(slib_SIN$slib_i)*1.25], 0.5,0.5,$slib_couleur
!endif
!endif
!next slib_j
!else
!for slib_j=1 to $slib_n
slib_r=!line $slib_i of $slib_G
slib_u=!item $slib_j of $slib_r
!if $slib_u>0
slib_couleur=$slib_color2
!for slib_k=1 to $slib_cnt_path
!if $slib_i,$slib_j isin $(slib_path$slib_k) or $slib_j,$slib_i isin $(slib_path$slib_k)
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next slib_k
!if $slib_i<>$slib_j
slib_dessin=$slib_dessin\
arrow $(slib_COS$slib_i),$(slib_SIN$slib_i), $[($(slib_COS$slib_i)-$(slib_COS$slib_j))/2+$(slib_COS$slib_j)],$[($(slib_SIN$slib_i)-$(slib_SIN$slib_j))/2+$(slib_SIN$slib_j)],10,$slib_color2\
segment $(slib_COS$slib_i),$(slib_SIN$slib_i),$[$(slib_COS$slib_j)],$(slib_SIN$slib_j),$slib_couleur
!else
slib_dessin=$slib_dessin\
ellipse $[$(slib_COS$slib_i)*1.25],$[$(slib_SIN$slib_i)*1.25], 0.5,0.5,$slib_couleur
!endif
!endif
!next slib_j
!endif
!reset slib_couleur
!next slib_i
slib_out= $slib_dessin
!if url iswordof $slib_option or html iswordof $slib_option
insdraw_size=250,250
!insdraw $slib_out
slib_out=$ins_url
!if html iswordof $slib_option
slib_out=<img src="$ins_url" alt="">
!else
slib_out=$slib_out,$insdraw_size
!endif
!endif
|