Pas encore membre?


DrawStat et optimisation
index des tutoriaux >> Basic Casio >> DrawStat et optimisation posté le 07/10/2007 à 10:55

Pylaterreur

MP / Email
Informations:

DrawStat et optimisation
posté le 07/10/2007 à 10:55
par Pylaterreur

permalien:

Pour ceux qui ne connaissent pas le DrawStat, allez ici : Tuto DrawStat sur Planete-Casio
Dans ce tuto, vous allez utiliser le DrawStat pour pouvoir dessiner des symboles dont vous aurez souvent besoin dans vos programmes de mathématiques. Imaginez-vous en train de créer un programme sur les vecteurs en mode graphique. Tout votre texte est tracé avec la fonction Text. Mais les flèches au-dessus des vecteurs, on les fait comment ? En traçant à chaque fois une F-Line et deux PlotOn ? Si l’on fait comme ça, on n’est pas sorti de l’auberge, et ça risque de prendre beaucoup de place !

Une fois que vous avez lu et bien compris le tuto sur Planete Casio, on peut passer à la suite. Créez tout d'abord un programme avec une ViewWindow 1,127,0,1,63,0 ; une S-WindMan, un Graph en mode xyLine et Dot, avec List 1 en abscisse et List 2 en ordonnée, mettez les deux autres en DrawOff :
Code: ViewWindow 1,127,0,1,63,0
AxesOff
LabelOff
BG-None
FuncOff
S-WindMan
S-Gph1 DrawOn,xyLine,List1,List2,1,Dot
S-Gph2 DrawOff
S-Gph3 DrawOff

Le motif que l’on veut obtenir dans cet exemple est une flèche de vecteurs, mais vous pouvez faire ce que vous voulez.
Tapez le code suivant :
Code:
{1,6,5,5}-->List 3
{2,2,3,1}-->List 4
List 3-->List 1
List 4-->List 2
DrawStat


Vous verrez alors une flèche tout en bas à gauche :

Ca y est, vous avez déjà votre motif. Pour avoir une flèche placée autrement, vous devrez faire List 3+X-->List 1 :List 4+Y-->List 2


Le seul problème avec cette méthode, ça va être la place occupée, donc si la première méthode vous intéresse, cherchez comment faire pour tout tracer avec un seul DrawStat (petit indice : utilisez la fonction Augment).
La seconde méthode est celle-ci : on enregistre dans deux listes le motif (qui dit : « ceci est une flèche ») puis dans une autre on va stocker les différentes coordonnées (qui dit « tracer le motif ici », avec {X1,Y1,X2,Y2,…,Xn,Yn}).
Code: {1,6,5,5}-->List 3
{2,2,3,1}-->List 4
{12,10,15,30}-->List 5
For 1-->A To Dim List 5 Step 2
List 3+List 5[A]-->List 1
List 4+List 5[A+1]-->List 2
DrawStat
Next

Si vous avez beaucoup de fleches à tracer, cela peut être très léger pour une vitesse relativement bonne.
Si vous avez une graph 85, et si vous n’en avez rien à faire de la place occupée, mais que la vitesse importe beaucoup, tapez ceci :
Code: 128-->D
{1,6,5,5,D}-->List 3
{2,2,3,1,D}-->List 4
{12,10,15,30}-->List 5
List 3+List 5[1]-->List 1
List 4+List 5[2]-->List 2
For 1-->A To (Dim List 5)/2 Step 2
Augment(List 1,List 3+List 5[A])-->List 1
Augment(List 2,List 4+List 5[A+1])-->List 2
Next
DrawStat

La variable D va jouer le rôle de "séparateur" entre chaque dessin. Sur graph 35/65, on peut utiliser 0 ("zéro") comme séparateur, mais sur la 85, il faut un nombre supérieur strictement à 127, c'est pourquoi il vaut mieux utiliser une variable, car vous pourrez plus facilement adapter votre programme en fonction de la calculatrice


Dans les deux cas, cela va donner ceci :
<hr class="contenu">
Des pointillés !
Le DrawStat peut aussi être utilisé en mode Scatter à la place de XYLine, ce qui vous permettra de tracer des pixels à la place de lignes : très pratique pour faire des pointillés à l'aide de la fonction Seq(.

Voilà un petit code :
Code:
'Pensez bien à mettre Scatter à la place de xyLine
Seq(X,X,1,127,2)-->List 1
Dim List 1-->Dim List 2
Fill(32,List 2)
DrawStat

Ce qui donne ceci :


Explications
Seq( prend 5 paramètres. Pour les deux premiers, laissez X ou mettez une autre variable, je ne sais pas pourquoi . Le 3ème paramètre est la valeur initiale, le 4ème la valeur finale et le 5ème le pas. C'est comme si vous faisiez une boucle for :
Code:
'Il faut d'abord que la List 1 ait une Dim suffisante pour que le code fonctionne, sinon il y aura une "Dim Error"
0-->X
For 1-->A To 127 Step 2
X+1-->X
A-->List 1[X]
Next
Dim List 1-->Dim List 2
Fill(32,List 2)
DrawStat

Cette dernière méthode est plus lente et prend plus de place dans le programme que la méthode avec Seq(, mais vous savez maintenant comment elle fonctionne
<hr class="contenu">
En conclusion, je vous donne le squelette d'un programme de cours, ce qui vous sera très utile, surtout si vous le couplez avec le générateur de cours de Planete Casio (le code suivant n'est pas encore complet, je le terminerai plus tard) :

Code:
ViewWindow 1,127,0,1,63,0
S-WindMan
FuncOff
S-Gph1 DrawOn,xyLine,List1,List2,1,Dot
S-Gph2 DrawOff
S-Gph3 DrawOff

0-->A~Z
2-->B
While G!=47 Or A!=0
Cls
{1,1,2,126,127,127,126,2}-->List 1
{2,62,63,63,62,2,1,1}-->List 2
DrawStat
{0}
If A=0
Then Text 1,1,"Menu"
Text 10,1,"F1 Page 1"
Text 17,1,"F2 Page 2"
Else If A=1
Then Text 1,1,"Page 1"
Else If A=2
Then Text 1,1,"Page 2"
IfEnd
IfEnd
IfEnd
If List Ans[1]
Then For 1-->X To Dim List Ans Step 3
Next
IfEnd
Do
Getkey-->G
LpWhile G!=47 And ((A!=0 And (G!=27 Or A>=B) And (G!=38 Or A<=1)) Or (A=0 And G!=79 And G!=69))
If A=0
Then G=47=>0-->A
G=27=>A+1-->A
G=38=>A+1-->A
Else G=79=>1-->A
G=69=>2-->A
IfEnd
WhileEnd
Cls
Text 1,1,"Programme par Mr Bean"


DrawStat et optimisation posté le 07/10/2007 à 10:55 par Pylaterreur




http://top-progcasio.com V5.0 © par Bebe Vador 2005 - 2008 | il y a 5 personnes connectées | sitemap(txt) | sitemap(html) | sitemap(xml)