Subversion Repositories wimsdev

Rev

Rev 7692 | Rev 8560 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7692 Rev 8321
Line 26... Line 26...
26
 slib_G=!declosing $slib_s
26
 slib_G=!declosing $slib_s
27
!else
27
!else
28
 
28
 
29
slib_liste=
29
slib_liste=
30
!for slib_i = 1 to $slib_n
30
!for slib_i = 1 to $slib_n
31
	slib_liste1 =!values 1 for x=1 to $slib_s
31
    slib_liste1 =!values 1 for x=1 to $slib_s
32
	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]
33
	slib_liste2 =!shuffle $slib_liste1,$slib_liste0
33
    slib_liste2 =!shuffle $slib_liste1,$slib_liste0
34
	slib_liste2=1,$slib_liste2
34
    slib_liste2=1,$slib_liste2
35
	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
36
	slib_liste=!append item $slib_liste2 to $slib_liste
36
    slib_liste=!append item $slib_liste2 to $slib_liste
37
!next slib_i
37
!next slib_i
38
slib_liste=!nonempty items $slib_liste
38
slib_liste=!nonempty items $slib_liste
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
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
40
 
40
 
41
!endif
41
!endif
42
slib_GG=!translate internal ; to $\
42
slib_GG=!translate internal ; to $\
43
$ in $slib_G
43
$ in $slib_G
44
 
44
 
45
 
45
 
46
##########################
46
##########################
47
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
47
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
48
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);
48
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);
49
 
49
 
50
slib_width =!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j])))
50
slib_width =!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j])))
51
 
51
 
52
#hauteur des paraboles sur lesquelles sont mis les points
52
#hauteur des paraboles sur lesquelles sont mis les points
Line 58... Line 58...
58
$ in $slib_position
58
$ in $slib_position
59
slib_niveau1=!translate internal ; to $\
59
slib_niveau1=!translate internal ; to $\
60
$ in $slib_niveau
60
$ in $slib_niveau
61
slib_sign=1
61
slib_sign=1
62
!for slib_i=1 to $slib_height
62
!for slib_i=1 to $slib_height
63
	slib_eps1=!item $slib_i of $slib_eps
63
    slib_eps1=!item $slib_i of $slib_eps
64
	slib_ligne= !line $slib_i of $slib_niveau1
64
    slib_ligne= !line $slib_i of $slib_niveau1
65
	slib_test=0
65
    slib_test=0
66
	slib_total =!replace internal , by + in $slib_ligne
66
    slib_total =!replace internal , by + in $slib_ligne
67
	slib_total=$[$slib_total]
67
    slib_total=$[$slib_total]
68
		!if $slib_total=1
68
        !if $slib_total=1
69
					slib_sign=$[-$slib_sign]
69
                    slib_sign=$[-$slib_sign]
70
		!endif
70
        !endif
71
 
71
 
72
	slib_dist= $[round($slib_width/$slib_total)]
72
    slib_dist= $[round($slib_width/$slib_total)]
73
	!for slib_j = 1 to $slib_n
73
    !for slib_j = 1 to $slib_n
74
		slib_pt=!item $slib_j of $slib_ligne
74
        slib_pt=!item $slib_j of $slib_ligne
75
		!if $slib_pt <>0
75
        !if $slib_pt <>0
76
			!advance slib_test
76
            !advance slib_test
77
			slib_bb=!item $[($slib_test)*$slib_dist] of $slib_listeb
77
            slib_bb=!item $[($slib_test)*$slib_dist] of $slib_listeb
78
			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
78
            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
79
		!endif
79
        !endif
80
	!next slib_j
80
    !next slib_j
81
!next slib_i
81
!next slib_i
82
#dessin
82
#dessin
83
####################
83
####################
84
slib_yrange1= $[-$slib_height^2/8-0.5]
84
slib_yrange1= $[-$slib_height^2/8-0.5]
85
slib_yrange2=$[$slib_height^2/8+0.5]
85
slib_yrange2=$[$slib_height^2/8+0.5]
Line 87... Line 87...
87
yrange $slib_yrange1, $slib_yrange2\
87
yrange $slib_yrange1, $slib_yrange2\
88
parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow
88
parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow
89
####################
89
####################
90
 
90
 
91
!for slib_i = 0 to $[floor($slib_height/2+2)]
91
!for slib_i = 0 to $[floor($slib_height/2+2)]
92
	slib_dessin=!append line pointfill 2*$slib_i,0,3,3,yellow to $slib_dessin
92
    slib_dessin=!append line pointfill 2*$slib_i,0,3,3,yellow to $slib_dessin
93
!next slib_i
93
!next slib_i
94
# laisser en premier les lignes correspondant aux sommets
94
# laisser en premier les lignes correspondant aux sommets
95
!for slib_i = 1 to $slib_n
95
!for slib_i = 1 to $slib_n
96
	slib_point=!line $slib_i of $slib_position
96
    slib_point=!line $slib_i of $slib_position
97
	slib_dessin =!append line disk $slib_point, 6, $slib_color2 to $slib_dessin
97
    slib_dessin =!append line disk $slib_point, 6, $slib_color2 to $slib_dessin
98
	!for slib_j = $slib_i to $slib_n
98
    !for slib_j = $slib_i to $slib_n
99
		slib_ligne=!line $slib_i of $slib_GG
99
        slib_ligne=!line $slib_i of $slib_GG
100
		slib_test=!item $slib_j of $slib_ligne
100
        slib_test=!item $slib_j of $slib_ligne
101
		!if $slib_test <> 0
101
        !if $slib_test <> 0
102
			slib_point1=!line $slib_j of $slib_position
102
            slib_point1=!line $slib_j of $slib_position
103
			slib_interm= !exec pari ([$slib_point]+2*[$slib_point1])/3
103
            slib_interm= !exec pari ([$slib_point]+2*[$slib_point1])/3
104
			slib_dessin = !append line line $slib_point, $slib_point1, $slib_color1 to $slib_dessin
104
            slib_dessin = !append line line $slib_point, $slib_point1, $slib_color1 to $slib_dessin
105
			slib_dessin = !append line arrow $slib_point, $slib_interm, 10, $slib_color1 to $slib_dessin
105
            slib_dessin = !append line arrow $slib_point, $slib_interm, 10, $slib_color1 to $slib_dessin
106
		!endif
106
        !endif
107
	!next slib_j
107
    !next slib_j
108
	!if $slib_text<>$empty
108
    !if $slib_text<>$empty
109
		slib_texti=!item $slib_i of $slib_text
109
        slib_texti=!item $slib_i of $slib_text
110
		slib_dessin=!append line text black,$slib_point, medium, $slib_texti to $slib_dessin
110
        slib_dessin=!append line text black,$slib_point, medium, $slib_texti to $slib_dessin
111
	!endif
111
    !endif
112
!next slib_i
112
!next slib_i
113
 
-
 
114
 
-
 
115
 
113
 
116
slib_out = $slib_dessin
114
slib_out = $slib_dessin
117
!if url iswordof $slib_option or html iswordof $slib_option
115
!if url iswordof $slib_option or html iswordof $slib_option
118
  insdraw_size=450,250
116
  insdraw_size=450,250
119
  !insdraw $slib_out
117
  !insdraw $slib_out