Rev 17963 | 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_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