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 131
|
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_author=Bernadette, Perrin-Riou
slib_example=[0,0,0;0,0,1;0,1,0],[blue,red],[A,B,C],2,html\
[0,0,0;0,0,1;0,1,0],[red,blue],[A,B,C],2,html\
[1,1,0,0,0,0;1,0,0,0,0,0;0,0,0,1,1,0;0,0,1,0,1,0;0,0,1,1,0,0;0,0,0,0,0,1],,[A,B,C],[1,6],html\
[0,0,0;0,0,1;0,1,0],[blue,red],[A,B,C],2,raw
slib_require=pari
!exit
:proc
!reset slib_names slib_point slib_matrix slib_list \
slib_color1 slib_color2 slib_color3 slib_color4 slib_color5 slib_color6 slib_color7
!reset slib_option
slib_parm=!item 1 to 3 of $wims_read_parm
!distribute item $slib_parm into slib_H, slib_color,slib_names
slib_point=!item 4 to -1 of $wims_read_parm
!if $(slib_point[-1]) iswordof url html raw
slib_option=$(slib_point[-1])
slib_point=$(slib_point[1..-2])
slib_point=!declosing $slib_point
!endif
slib_H=!declosing $slib_H
slib_H=!translate internal ; to $\
$ in $slib_H
slib_HH=!translate internal $\
$ to ; in $slib_H
slib_point=!declosing $slib_point
slib_color=!declosing $slib_color
!distribute items $slib_color into slib_color1, slib_color2, slib_color3, slib_color4, slib_color5, slib_color6,slib_color7
slib_colordef=blue,red,green, magenta, brown, purple,gold
!for slib_i=1 to 7
!default slib_color$slib_i=$(slib_colordef[$slib_i])
!reset slib_segments$slib_i slib_ellipses$slib_i
!next
slib_or=!exec pari Mat([$slib_HH])==Mat([$slib_HH])~
slib_names=!declosing $slib_names
slib_n=!line 1 of $slib_H
slib_n=!itemcnt $slib_n
!default slib_names=!values slib_i for slib_i=1 to $slib_n
slib_vertex=!values x for x=1 to $slib_n
!default slib_point=$slib_vertex
!reset slib_liste slib_matrix slib_out
slib_cnt=0
!for slib_i in $slib_point
!if $slib_i notin $slib_liste
!read slib/graph/connexcomponent [$slib_HH], $slib_i
slib_liste=!append item $slib_out to $slib_liste
slib_matrix=!append line $slib_out to $slib_matrix
!advance slib_cnt
slib_out=
!endif
!next slib_i
slib_point2=!listcomplement of $slib_liste in $slib_vertex
!for slib_i in $slib_point2
!if $slib_i notin $slib_liste
!read slib/graph/connexcomponent [$slib_HH], $slib_i
slib_liste=!append item $slib_out to $slib_liste
slib_matrix=!append line $slib_out to $slib_matrix
!advance slib_cnt
!endif
!next slib_i
slib_dessin=xrange -1.5,1.5\
yrange -1.5,1.5
!for slib_i=1 to $slib_cnt
slib_color$slib_i=!declosing $(slib_color$slib_i)
slib_h=!line $slib_i of $slib_matrix
!for slib_k in $slib_h
slib_name=!item $slib_k of $slib_names
slib_dessin=$slib_dessin\
disk cos(2*pi*$slib_k/$slib_n),sin(2*pi*$slib_k/$slib_n ),6,$(slib_color$slib_i)\
text black, 1.3*cos(2*pi*$slib_k/$slib_n ),1.3*sin(2*pi*$slib_k/$slib_n ), medium ,$slib_name
slib_r=!line $slib_k of $slib_H
!if $slib_or=1
!for slib_j in $slib_h
slib_u=!item $slib_j of $slib_r
!if $slib_u=1
!if $slib_k<>$slib_j
slib_segments$slib_i=!append item cos(2*pi*$slib_k/$slib_n),sin(2*pi*$slib_k/$slib_n), cos(2*pi*$slib_j/$slib_n ),sin(2*pi*$slib_j/$slib_n) to $(slib_segments$slib_i)
!else
slib_ellipses$slib_i=!append item cos(2*pi*$slib_j/$slib_n )*1.25,sin(2*pi*$slib_j/$slib_n)*1.25, 0.5,0.5 \
to $(slib_ellipses$slib_i)
!endif
!endif
!next slib_j
!else
!for slib_j=1 to $slib_n
slib_u=!item $slib_j of $slib_r
!if $slib_u=1
!if $slib_k<>$slib_j
slib_dessin=$slib_dessin\
arrow $[cos(2*pi*$slib_k/$slib_n )],$[sin(2*pi*$slib_k/$slib_n)], $[(cos(2*pi*$slib_k/$slib_n )-cos(2*pi*$slib_j/$slib_n ))/2+cos(2*pi*$slib_j/$slib_n )],$[(sin(2*pi*$slib_k/$slib_n )-sin(2*pi*$slib_j/$slib_n ))/2+sin(2*pi*$slib_j/$slib_n )],10,$(slib_color$slib_i)
slib_segments$slib_i=!append item cos(2*pi*$slib_k/$slib_n ),sin(2*pi*$slib_k/$slib_n ),cos(2*pi*$slib_j/$slib_n ),sin(2*pi*$slib_j/$slib_n ) to $(slib_segments$slib_i)
!else
!if $(slib_r[$slib_j])!=0
slib_ellipses$slib_i=!append item cos(2*pi*$slib_k/$slib_n)*1.25,sin(2*pi*$slib_k/$slib_n)*1.25, 0.5,0.5 \
to $(slib_ellipses$slib_i))
!endif
!endif
!endif
!next slib_j
!endif
!next slib_k
!if $(slib_segments$slib_i)!=
slib_dessin=$slib_dessin\
segments $(slib_color$slib_i), $(slib_segments$slib_i)
!endif
!if $(slib_ellipses$slib_i)!=
slib_dessin=$slib_dessin\
ellipses $(slib_color$slib_i), $(slib_ellipses$slib_i)
!endif
!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
|