Subversion Repositories wimsdev

Rev

Rev 12676 | Rev 14860 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!if  $wims_read_parm!=slib_header
13587 bpr 2
  !goto proc
20 reyssat 3
!endif
4158 bpr 4
 
4351 bpr 5
slib_author=Bernadette, Perrin-Riou
4158 bpr 6
 
4172 bpr 7
slib_example= [0,0,0;0,0,1;0,1,0],[blue,yellow], [A,B,C],2\
8
 [0,0,0;0,0,1;0,1,0],[blue,yellow], [A,B,C],2,html\
9
 [0,0,0;0,0,1;0,1,0],[blue,yellow], [A,B,C],1,2,html
3265 bpr 10
slib_require=pari
20 reyssat 11
!exit
12
 
13
:proc
14
 
15
!reset slib_color, slib_names, slib_point
16
 
17
slib_parm=!item 1 to 3 of $wims_read_parm
18
!distribute item $slib_parm into slib_H, slib_color,slib_names
19
slib_point=!item 4 to -1 of $wims_read_parm
4172 bpr 20
!if $(slib_point[-1]) iswordof url html raw
21
  slib_option=$(slib_point[-1])
22
  slib_point=$(slib_point[1..-2])
7692 bpr 23
!endif
20 reyssat 24
slib_H=!declosing $slib_H
8560 bpr 25
slib_H=!translate internal  ;  to $\
26
$ in $slib_H
27
slib_HH=!translate internal $\
28
$ to ; in $slib_H
20 reyssat 29
 
30
slib_point=!declosing $slib_point
31
slib_color=!declosing $slib_color
32
!default slib_color=blue,red,green, magenta, brown, purple,gold
8560 bpr 33
!distribute items $slib_color into slib_color1, slib_color2, slib_color3, slib_color4, slib_color5, slib_color6,slib_color7
20 reyssat 34
 
7692 bpr 35
slib_or=!exec pari Mat([$slib_HH])==Mat([$slib_HH])~
20 reyssat 36
slib_names=!declosing $slib_names
37
slib_n=!line 1 of $slib_H
38
slib_n=!itemcnt $slib_n
8560 bpr 39
!default slib_names=!values slib_i for slib_i=1 to $slib_n
20 reyssat 40
slib_vertex= !values x for x=1 to $slib_n
41
!default slib_point= $slib_vertex
7692 bpr 42
slib_liste =
20 reyssat 43
slib_cnt = 0
44
slib_matrix=
45
slib_out=
8560 bpr 46
!for slib_i in $slib_point
12676 bpr 47
  !if $slib_i notin $slib_liste
48
    !read slib/graph/connexcomponent [$slib_HH], $slib_i
49
    slib_liste = !append item $slib_out to $slib_liste
50
    slib_matrix = !append line $slib_out to $slib_matrix
51
    !advance slib_cnt
52
    slib_out=
53
  !endif
20 reyssat 54
!next slib_i
55
slib_point2 = !listcomplement of $slib_liste in $slib_vertex
56
 
8560 bpr 57
!for slib_i in $slib_point2
12676 bpr 58
  !if $slib_i notin $slib_liste
59
    !read slib/graph/connexcomponent [$slib_HH], $slib_i
60
    slib_liste = !append item $slib_out to $slib_liste
61
    slib_matrix = !append line $slib_out to $slib_matrix
62
    !advance slib_cnt
63
  !endif
20 reyssat 64
!next slib_i
65
 
66
 
67
slib_dessin = xrange -1.5,1.5\
68
yrange -1.5,1.5
69
!for slib_i=1 to $slib_cnt
12676 bpr 70
  slib_color$slib_i= !declosing $(slib_color$slib_i)
71
  slib_h=!line $slib_i of $slib_matrix
72
  !for slib_k in $slib_h
73
    slib_name =!item $slib_k of $slib_names
74
    slib_dessin=$slib_dessin\
75
      disk cos(2*pi*$slib_k/$slib_n ),sin(2*pi*$slib_k/$slib_n ), 6,$(slib_color$slib_i)\
76
      text black, 1.3*cos(2*pi*$slib_k/$slib_n ),1.3*sin(2*pi*$slib_k/$slib_n ), medium ,$slib_name
8321 bpr 77
    slib_r=!line $slib_k of $slib_H
12676 bpr 78
    !if $slib_or=1
79
      !for slib_j   in $slib_h
80
        slib_u=!item $slib_j of $slib_r
81
        !if $slib_u=1
82
          !if $slib_k<>$slib_j
83
            slib_dessin=$slib_dessin\
8560 bpr 84
segment 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 ),$(slib_color$slib_i)
12676 bpr 85
          !else
86
            slib_dessin=$slib_dessin\
20 reyssat 87
ellipse cos(2*pi*$slib_i/$slib_n )*1.25,sin(2*pi*$slib_i/$slib_n )*1.25, 0.5,0.5,$(slib_color$slib_i)
12676 bpr 88
          !endif
89
        !endif
90
      !next slib_j
91
    !else
92
      !for slib_j=1 to $slib_n
93
        slib_r=!line $slib_k of $slib_H
94
        slib_u=!item $slib_j of $slib_r
95
        !if $slib_u=1
96
          !if $slib_k<>$slib_j
97
            slib_dessin=$slib_dessin\
20 reyssat 98
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)\
8560 bpr 99
segment 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 ),$(slib_color$slib_i)
12676 bpr 100
          !else
101
            slib_dessin=$slib_dessin\
20 reyssat 102
ellipse cos(2*pi*$slib_k/$slib_n )*1.25,sin(2*pi*$slib_k/$slib_n )*1.25, 0.5,0.5,$(slib_color$slib_i)
12676 bpr 103
          !endif
8321 bpr 104
        !endif
12676 bpr 105
      !next slib_j
106
    !endif
107
  !next slib_k
7692 bpr 108
!next slib_i
20 reyssat 109
 
7692 bpr 110
 
20 reyssat 111
slib_out= $slib_dessin
4172 bpr 112
 
113
!if url iswordof $slib_option or html iswordof $slib_option
114
  insdraw_size=250,250
115
  !insdraw $slib_out
116
  slib_out=$ins_url
12676 bpr 117
  !if html iswordof $slib_option
5736 bpr 118
    slib_out=<img src="$ins_url" alt=""/>
12676 bpr 119
  !else
4908 bpr 120
    slib_out=$slib_out,$insdraw_size
12676 bpr 121
  !endif
4172 bpr 122
!endif