Subversion Repositories wimsdev

Rev

Rev 17173 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17173 Rev 17946
Line 10... Line 10...
10
slib_require=pari
10
slib_require=pari
11
!exit
11
!exit
12
 
12
 
13
:proc
13
:proc
14
 
14
 
15
!distribute item $wims_read_parm into slib_n,slib_s,slib_text,slib_color1,slib_color2,slib_option
15
!distribute item $wims_read_parm into slib_n,slib_s,slib_text,slib_color1,slib_color2,\
-
 
16
  slib_option, slib_segment slib_dess
16
 
17
 
17
!default slib_s=2
18
!default slib_s=2
18
slib_color1=!declosing $slib_color1
19
slib_color1=!declosing $slib_color1
19
slib_color2=!declosing $slib_color2
20
slib_color2=!declosing $slib_color2
20
!default slib_color1=blue
21
!default slib_color1=blue
21
!default slib_color2=green
22
!default slib_color2=green
22
!!default slib_text= !values x for x=1 to $slib_n
23
!!default slib_text=!values x for x=1 to $slib_n
23
 
24
 
24
slib_text=!declosing $slib_text
25
slib_text=!declosing $slib_text
25
!if [ isin $slib_s
26
!if [ isin $slib_s
26
  slib_G=!declosing $slib_s
27
  slib_G=!declosing $slib_s
27
!else
28
!else
28
  slib_liste=
29
  slib_liste=
29
  !for slib_i = 1 to $slib_n
30
  !for slib_i=1 to $slib_n
30
    slib_liste1=!values 1 for x=1 to $slib_s
31
    slib_liste1=!values 1 for x=1 to $slib_s
31
    slib_liste0=!values 0 for x=1 to $[$slib_n-$slib_i-$slib_s]
32
    slib_liste0=!values 0 for x=1 to $[$slib_n-$slib_i-$slib_s]
32
    slib_liste2=!shuffle $slib_liste1,$slib_liste0
33
    slib_liste2=!shuffle $slib_liste1,$slib_liste0
33
    slib_liste2=1,$slib_liste2
34
    slib_liste2=1,$slib_liste2
34
    slib_liste2=!item 1 to $[$slib_n-$slib_i+1] of $slib_liste2
35
    slib_liste2=!item 1 to $[$slib_n-$slib_i+1] of $slib_liste2
35
    slib_liste=!append item $slib_liste2 to $slib_liste
36
    slib_liste=!append item $slib_liste2 to $slib_liste
36
  !next slib_i
37
  !next slib_i
37
  slib_liste=!nonempty items $slib_liste
38
  slib_liste=!nonempty items $slib_liste
38
  slib_G= !exec pari slib_n =$slib_n;slib_liste =[$slib_liste];slib_M=matrix(slib_n,slib_n,slib_i,slib_j, if(slib_i < slib_j,slib_liste[slib_n*(slib_n-1)/2-(slib_n-slib_i+1)*(slib_n-slib_i)/2 +slib_j-slib_i]));for(slib_i = 2,slib_n-1,if(slib_M[,slib_i]==0,slib_M[1,slib_i]=1);if(slib_M[slib_i,]==0,slib_M[slib_i,slib_n]=1));slib_M[1,slib_n]=0; slib_M
39
  slib_G=!exec pari slib_n=$slib_n;slib_liste=[$slib_liste];slib_M=matrix(slib_n,slib_n,slib_i,slib_j, if(slib_i < slib_j,slib_liste[slib_n*(slib_n-1)/2-(slib_n-slib_i+1)*(slib_n-slib_i)/2 +slib_j-slib_i]));for(slib_i=2,slib_n-1,if(slib_M[,slib_i]==0,slib_M[1,slib_i]=1);if(slib_M[slib_i,]==0,slib_M[slib_i,slib_n]=1));slib_M[1,slib_n]=0; slib_M
39
 
40
 
40
!endif
41
!endif
41
slib_GG=!translate internal ; to $\
42
slib_GG=!translate internal ; to $\
42
$ in $slib_G
43
$ in $slib_G
43
 
44
 
44
##########################
45
##########################
45
slib_niveau=!exec pari slib_n=$slib_n;slib_M=Mat([$slib_G]);slib_niveau=matrix(slib_n,slib_n);slib_niveau[1,1]=1;slib_degp=vector(slib_n,i,sum(x=1,slib_n,slib_M[x,i]));for(slib_k=1,slib_n-1,for(slib_i=1,slib_n,if(slib_niveau[slib_k,slib_i]!=0,for(slib_j=1,slib_n,if(slib_M[slib_i,slib_j]!=0,slib_degp[slib_j]-=1;if(slib_degp[slib_j]==0,slib_niveau[slib_k+1,slib_j]=1));););););slib_niveau
46
slib_niveau=!exec pari slib_n=$slib_n;slib_M=Mat([$slib_G]);slib_niveau=matrix(slib_n,slib_n);slib_niveau[1,1]=1;slib_degp=vector(slib_n,i,sum(x=1,slib_n,slib_M[x,i]));for(slib_k=1,slib_n-1,for(slib_i=1,slib_n,if(slib_niveau[slib_k,slib_i]!=0,for(slib_j=1,slib_n,if(slib_M[slib_i,slib_j]!=0,slib_degp[slib_j]-=1;if(slib_degp[slib_j]==0,slib_niveau[slib_k+1,slib_j]=1));););););slib_niveau
46
slib_height=!exec pari slib_n=$slib_n;slib_niveau=Mat([$slib_niveau]);slib_k=slib_n;for(slib_i=1,slib_n,if(slib_niveau[slib_i,]==0,slib_k=slib_i-1;break));print(slib_k);
47
slib_height=!exec pari slib_n=$slib_n;slib_niveau=Mat([$slib_niveau]);slib_k=slib_n;for(slib_i=1,slib_n,if(slib_niveau[slib_i,]==0,slib_k=slib_i-1;break));print(slib_k);
47
 
48
 
48
slib_width =!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j])))
49
slib_width=!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j])))
49
 
50
 
50
#hauteur des paraboles sur lesquelles sont mis les points
51
#hauteur des paraboles sur lesquelles sont mis les points
51
slib_listeb= !values ($slib_width/2+1-x)*0.98111111/$slib_width for x= 1 to $[ceil($slib_width/2)]
52
slib_listeb=!values ($slib_width/2+1-x)*0.98111111/$slib_width for x=1 to $[ceil($slib_width/2)]
52
slib_listeb =!makelist x,-x for x in $slib_listeb
53
slib_listeb=!makelist x,-x for x in $slib_listeb
53
slib_niveau =!exec pari slib_niveau=Mat([$slib_niveau]); matrix($slib_height,$slib_n,i,j,slib_niveau[i,j])
54
slib_niveau=!exec pari slib_niveau=Mat([$slib_niveau]); matrix($slib_height,$slib_n,i,j,slib_niveau[i,j])
54
slib_position= !exec pari matrix($slib_n,2)
55
slib_position=!exec pari matrix($slib_n,2)
55
slib_position=!translate internal ; to $\
56
slib_position=!translate internal ; to $\
56
$ in $slib_position
57
$ in $slib_position
57
slib_niveau1=!translate internal ; to $\
58
slib_niveau1=!translate internal ; to $\
58
$ in $slib_niveau
59
$ in $slib_niveau
59
slib_sign=1
60
slib_sign=1
60
!for slib_i=1 to $slib_height
61
!for slib_i=1 to $slib_height
61
  slib_eps1=!item $slib_i of $slib_eps
62
  slib_eps1=!item $slib_i of $slib_eps
62
  slib_ligne= !line $slib_i of $slib_niveau1
63
  slib_ligne=!line $slib_i of $slib_niveau1
63
  slib_test=0
64
  slib_test=0
64
  slib_total =!replace internal , by + in $slib_ligne
65
  slib_total=!replace internal , by + in $slib_ligne
65
  slib_total=$[$slib_total]
66
  slib_total=$[$slib_total]
66
    !if $slib_total=1
67
    !if $slib_total=1
67
      slib_sign=$[-$slib_sign]
68
      slib_sign=$[-$slib_sign]
68
    !endif
69
    !endif
69
 
70
 
70
  slib_dist= $[round($slib_width/$slib_total)]
71
  slib_dist=$[round($slib_width/$slib_total)]
71
  !for slib_j = 1 to $slib_n
72
  !for slib_j=1 to $slib_n
72
    slib_pt=!item $slib_j of $slib_ligne
73
    slib_pt=!item $slib_j of $slib_ligne
73
    !if $slib_pt <>0
74
    !if $slib_pt <>0
74
      !advance slib_test
75
      !advance slib_test
75
      slib_bb=!item $[($slib_test)*$slib_dist] of $slib_listeb
76
      slib_bb=!item $[($slib_test)*$slib_dist] of $slib_listeb
76
      slib_position=!replace internal line number $slib_j by $[$slib_i-1], $[$slib_sign*$slib_bb*$slib_i*($slib_height -$slib_i)] in $slib_position
77
      slib_position=!replace internal line number $slib_j by $[$slib_i-1], $[$slib_sign*$slib_bb*$slib_i*($slib_height -$slib_i)] in $slib_position
77
    !endif
78
    !endif
78
  !next slib_j
79
  !next slib_j
79
!next slib_i
80
!next slib_i
80
#dessin
81
#dessin
81
####################
82
####################
82
slib_yrange1= $[-$slib_height^2/8-0.5]
83
slib_yrange1=$[-$slib_height^2/8-0.5]
83
slib_yrange2=$[$slib_height^2/8+0.5]
84
slib_yrange2=$[$slib_height^2/8+0.5]
84
slib_dessin = xrange -0.5, $[$slib_height]\
-
 
85
yrange $slib_yrange1, $slib_yrange2\
-
 
86
parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow
-
 
87
####################
85
####################
88
 
86
 
89
!for slib_i = 0 to $[floor($slib_height/2+2)]
87
!for slib_i=0 to $[floor($slib_height/2+2)]
90
  slib_dessin=!append line pointfill 2*$slib_i,0,3,3,yellow to $slib_dessin
88
  slib_dess=!append line pointfill 2*$slib_i,0,3,3,yellow to $slib_dess
91
!next slib_i
89
!next slib_i
92
# laisser en premier les lignes correspondant aux sommets
90
# laisser en premier les lignes correspondant aux sommets
93
!for slib_i = 1 to $slib_n
91
!for slib_i=1 to $slib_n
94
  slib_point=!line $slib_i of $slib_position
92
  slib_point=!line $slib_i of $slib_position
95
  slib_dessin =!append line disk $slib_point, 6, $slib_color2 to $slib_dessin
93
  slib_dess=!append line disk $slib_point, 6, $slib_color2 to $slib_dess
96
  !for slib_j = $slib_i to $slib_n
94
  !for slib_j=$slib_i to $slib_n
97
    slib_ligne=!line $slib_i of $slib_GG
95
    slib_ligne=!line $slib_i of $slib_GG
98
    slib_test=!item $slib_j of $slib_ligne
96
    slib_test=!item $slib_j of $slib_ligne
99
    !if $slib_test <> 0
97
    !if $slib_test <> 0
100
      slib_point1=!line $slib_j of $slib_position
98
      slib_point1=!line $slib_j of $slib_position
101
      slib_interm= !exec pari ([$slib_point]+2*[$slib_point1])/3
99
      slib_interm=!exec pari ([$slib_point]+2*[$slib_point1])/3
102
      slib_dessin = !append line segment $slib_point, $slib_point1, $slib_color1 to $slib_dessin
100
      slib_segment=!append item $slib_point, $slib_point1 to $slib_segment
103
      slib_dessin = !append line arrow $slib_point, $slib_interm, 10, $slib_color1 to $slib_dessin
101
      slib_dess=!append line arrow $slib_point, $slib_interm, 10, $slib_color1 to $slib_dess
104
    !endif
102
    !endif
105
  !next slib_j
103
  !next slib_j
106
  !if $slib_text<>$empty
104
  !if $slib_text<>$empty
107
    slib_texti=!item $slib_i of $slib_text
105
    slib_texti=!item $slib_i of $slib_text
108
    slib_dessin=!append line text black,$slib_point, medium, $slib_texti to $slib_dessin
106
    slib_dess=!append line text black,$slib_point, medium, $slib_texti to $slib_dess
109
  !endif
107
  !endif
110
!next slib_i
108
!next slib_i
-
 
109
slib_dessin=xrange -0.5, $[$slib_height]\
-
 
110
yrange $slib_yrange1, $slib_yrange2\
-
 
111
parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow\
-
 
112
segments $slib_color1, $slib_segment\
111
 
113
$slib_dess
112
slib_out = $slib_dessin
114
slib_out=$slib_dessin
113
!if url iswordof $slib_option or html iswordof $slib_option
115
!if url iswordof $slib_option or html iswordof $slib_option
114
  insdraw_size=450,250
116
  insdraw_size=450,250
115
  !insdraw $slib_out
117
  !insdraw $slib_out
116
  slib_out=$ins_url
118
  slib_out=$ins_url
117
  !if html iswordof $slib_option
119
  !if html iswordof $slib_option