Rev 16641 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 16641 | Rev 16649 | ||
|---|---|---|---|
| Line 16... | Line 16... | ||
| 16 | 16 | ||
| 17 | slib_comment=[zone de dessin xmin et xmax,zone de dessin ymin et ymax],\ |
17 | slib_comment=[zone de dessin xmin et xmax,zone de dessin ymin et ymax],\ |
| 18 | coordonnées xb et yb du point D,coordonnées xe et ye du point F,\ |
18 | coordonnées xb et yb du point D,coordonnées xe et ye du point F,\ |
| 19 | (optionnel) sens de la parabole up dessus et down dessous |
19 | (optionnel) sens de la parabole up dessus et down dessous |
| 20 | 20 | ||
| 21 | slib_example=[-10,10,- |
21 | slib_example=[-10,10,-10,10],8,8,-7,0,down\ |
| - | 22 | [-10,10,-10,10],8,8,-7,0,up\ |
|
| - | 23 | [-10,10,-10,10],8,0,-7,8,down\ |
|
| - | 24 | [-10,10,-10,10],8,0,-7,8,up\ |
|
| - | 25 | [-10,10,-10,10],8,0,-7,0,down\ |
|
| - | 26 | [-10,10,-10,10],8,0,-7,0,up\ |
|
| - | 27 | [-10,10,-10,10],-7,0,8,8,down\ |
|
| - | 28 | [-10,10,-10,10],-7,0,8,8,up\ |
|
| - | 29 | [-10,10,-10,10],-7,8,8,0,down\ |
|
| - | 30 | [-10,10,-10,10],-7,8,8,0,up\ |
|
| - | 31 | [-10,10,-10,10],-7,0,8,0,down\ |
|
| - | 32 | [-10,10,-10,10],-7,0,8,0,up\ |
|
| - | 33 | [-10,10,-10,10],8,0,8,8,down\ |
|
| - | 34 | [-10,10,-10,10],8,0,8,8,up\ |
|
| - | 35 | [-10,10,-10,10],8,8,8,0,down\ |
|
| - | 36 | [-10,10,-10,10],8,8,8,0,up\ |
|
| 22 | 37 | ||
| 23 | !exit |
38 | !exit |
| 24 | 39 | ||
| 25 | :proc |
40 | :proc |
| 26 | 41 | ||
| Line 31... | Line 46... | ||
| 31 | !set slib_xmin=$($slib_zone[1]) |
46 | !set slib_xmin=$($slib_zone[1]) |
| 32 | !set slib_xmax=$($slib_zone[2]) |
47 | !set slib_xmax=$($slib_zone[2]) |
| 33 | !set slib_ymin=$($slib_zone[3]) |
48 | !set slib_ymin=$($slib_zone[3]) |
| 34 | !set slib_ymax=$($slib_zone[4]) |
49 | !set slib_ymax=$($slib_zone[4]) |
| 35 | slib_xy=$slib_xb,$slib_yb,$slib_xe,$slib_ye |
50 | slib_xy=$slib_xb,$slib_yb,$slib_xe,$slib_ye |
| - | 51 | !!slib_xyinitial=$slib_xy |
|
| 36 |
|
52 | !!distribute items $slib_xy into slib_xb,slib_yb,slib_xe,slib_ye |
| 37 | !!--- calculs pour trouver down ou up |
53 | !!--- calculs pour trouver down ou up |
| 38 | !if $slib_pos= |
54 | !if $slib_pos= |
| 39 | !set slib_L=$[sqrt((($slib_xe-$slib_xb)^2)+(($slib_ye-$slib_yb)^2))] |
55 | !set slib_L=$[sqrt((($slib_xe-$slib_xb)^2)+(($slib_ye-$slib_yb)^2))] |
| 40 | !set slib_xm=$[($slib_xe+$slib_xb)/2] |
56 | !set slib_xm=$[($slib_xe+$slib_xb)/2] |
| 41 | !set slib_ym=$[($slib_ye+$slib_yb)/2] |
57 | !set slib_ym=$[($slib_ye+$slib_yb)/2] |
| Line 52... | Line 68... | ||
| 52 | !!on change un peu les extrémités |
68 | !!on change un peu les extrémités |
| 53 | !distribute item 0,0,0,0, into slib_signxb,slib_signyb,slib_signxe,slib_signye |
69 | !distribute item 0,0,0,0, into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 54 | !set slib_ss=1 |
70 | !set slib_ss=1 |
| 55 | !if $slib_pos=up |
71 | !if $slib_pos=up |
| 56 | !set slib_ss=1 |
72 | !set slib_ss=1 |
| 57 | !endif |
73 | !endif |
| 58 | !if $slib_pos=down |
74 | !if $slib_pos=down |
| 59 | !set slib_ss=-1 |
75 | !set slib_ss=-1 |
| 60 | !endif |
76 | !endif |
| 61 | !if $slib_xb < $slib_xe and $slib_yb < $slib_ye |
77 | !if $slib_xb < $slib_xe and $slib_yb < $slib_ye |
| 62 | !distribute item |
78 | !distribute item 0,$slib_ss,0,($slib_ss) into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 63 | !endif |
79 | !endif |
| 64 | !if $slib_xb < $slib_xe and $slib_yb > $slib_ye |
80 | !if $slib_xb < $slib_xe and $slib_yb > $slib_ye |
| 65 | !distribute item |
81 | !distribute item 0,($slib_ss),0,($slib_ss) into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 66 | !endif |
82 | !endif |
| 67 | !if $slib_xb < $slib_xe and $slib_yb = $slib_ye |
83 | !if $slib_xb < $slib_xe and $slib_yb = $slib_ye |
| 68 | !distribute item |
84 | !distribute item 0,$slib_ss,0,$slib_ss into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 69 | !endif |
85 | !endif |
| 70 | !if $slib_xb > $slib_xe and $slib_yb < $slib_ye |
86 | !if $slib_xb > $slib_xe and $slib_yb < $slib_ye |
| 71 | !distribute item |
87 | !distribute item 0,$slib_ss,0,$slib_ss into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 72 | !endif |
88 | !endif |
| 73 | !if $slib_xb > $slib_xe and $slib_yb > $slib_ye |
89 | !if $slib_xb > $slib_xe and $slib_yb > $slib_ye |
| 74 | !distribute item |
90 | !distribute item 0,$slib_ss,0,$slib_ss into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 75 | !endif |
91 | !endif |
| 76 | !if $slib_xb > $slib_xe and $slib_yb = $slib_ye |
92 | !if $slib_xb > $slib_xe and $slib_yb = $slib_ye |
| 77 | !distribute item |
93 | !distribute item 0,$slib_ss,0,$slib_ss into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 78 | !endif |
94 | !endif |
| 79 | !if $slib_xb = $slib_xe and $slib_yb > $slib_ye |
95 | !if $slib_xb = $slib_xe and $slib_yb > $slib_ye |
| 80 | !distribute item $slib_ss,0,$slib_ss,0 into slib_signxb,slib_signyb,slib_signxe,slib_signye |
96 | !distribute item $slib_ss,0,$slib_ss,0 into slib_signxb,slib_signyb,slib_signxe,slib_signye |
| 81 | !endif |
97 | !endif |
| 82 | !if $slib_xb = $slib_xe and $slib_yb < $slib_ye |
98 | !if $slib_xb = $slib_xe and $slib_yb < $slib_ye |
| Line 110... | Line 126... | ||
| 110 | !set slib_h=$[min($slib_s,$slib_b)] |
126 | !set slib_h=$[min($slib_s,$slib_b)] |
| 111 | !else |
127 | !else |
| 112 | !if $slib_pos issametext down |
128 | !if $slib_pos issametext down |
| 113 | !set slib_h=$[-min($slib_s,$slib_d)] |
129 | !set slib_h=$[-min($slib_s,$slib_d)] |
| 114 | !endif |
130 | !endif |
| 115 | !endif |
131 | !endif |
| 116 | 132 | ||
| 117 | !!--- determination XC,YC |
133 | !!--- determination XC,YC |
| 118 | 134 | ||
| 119 | !if $[abs(($slib_xb-$slib_xe))] < 1.E-6 |
135 | !if $[abs(($slib_xb-$slib_xe))] < 1.E-6 |
| 120 | !set slib_xc=$[$slib_xb+$slib_h] |
136 | !set slib_xc=$[$slib_xb+$slib_h] |
| 121 | !set slib_yc=$slib_ym |
137 | !set slib_yc=$slib_ym |
| 122 | !else |
138 | !else |
| 123 | !set slib_r=$[($slib_ye-($slib_yb))/($slib_xe-($slib_xb))] |
139 | !set slib_r=$[($slib_ye-($slib_yb))/($slib_xe-($slib_xb))] |
| 124 | !set slib_xc=$[-($slib_h*$slib_r/(1+($slib_r)^2)^0.5) + (($slib_xb+$slib_xe)/2)] |
140 | !set slib_xc=$[-($slib_h*$slib_r/(1+($slib_r)^2)^0.5) + (($slib_xb+$slib_xe)/2)] |
| 125 | !set slib_yc=$[($slib_h/((1+($slib_r)^2)^0.5)) + (($slib_yb+$slib_ye)/2)] |
141 | !set slib_yc=$[($slib_h/((1+($slib_r)^2)^0.5)) + (($slib_yb+$slib_ye)/2)] |
| 126 | !endif |
142 | !endif |
| 127 | 143 | ||
| 128 | slib_out=$slib_xc,$slib_yc,$slib_xy |
144 | slib_out=$slib_xc,$slib_yc,$slib_xy |
| - | 145 | ||
| - | 146 | ||
| - | 147 | !!for debug |
|
| - | 148 | !!!slib_out=!exec canvasdraw\ |
|
| - | 149 | !!!size 400,400\ |
|
| - | 150 | !!!xrange $(slib_zone[1,2])\ |
|
| - | 151 | !!!yrange $(slib_zone[3,4])\ |
|
| - | 152 | !!!grid 1,1,grey\ |
|
| - | 153 | !!!linewidth 4\ |
|
| - | 154 | !!!points red, $slib_xyinitial\ |
|
| - | 155 | !!!linewidth 1\ |
|
| - | 156 | !!!curvedarrows blue,$(slib_out[3,4,1,2,5,6]) |
|
| - | 157 | ||