DÉMOS

Principe
Démos interpréteur
Démos anyflo
Applications
Sensibles
Lancement
Protocoles

















































Principe

demox_ddd.func est un fichier de fonctions (écrites en langage anyflo) donnant un exemple d´utilisation de la commande ddd:
       x=0: de l´interpréteur.
       x=1: d´anyflo.
       x>1: de l´application de niveau x.
Toutes les démos ont été développées à partir de l´une des fonctions génériques de base:
modele_menu_simple.func
modele_multi_menu.func
modele_sous_menu.func
Il est conseillé de commencer à développer toute nouvelle application de cette façon.

Afin de pouvoir être traduites automatiquement, il faut écrire ces démos en anglais, en utilisant les phrases types du fichier Voc_eng qui seront traduites en phrases du fichier Voc_fra.
ATTENTION: ne pas utiliser les mots de Voc_eng comme noms de variables ou de fonctions (car ils seraient alors traduits ...).

Ces fonctions ont un but purement didactique et ne servent qu´à illustrer certains aspects d´une commande en offrant la possibilité de faire varier les paramètre sur des échelles et d´en visualiser les effets (il est indispensable d´avoir lu le help correspondant).
Pour produire des effets plus évolués il est nécessaire d´écrire des programmes beaucoup plus complexes.

Elles ont été écrites de façon standard et il est conseillé de développer toute application interactive de nom xxx en suivant les conventions suivantes:
1) La 1ère fonction est:
xxx()
{
       init();
       interaction func(0,"F0")func(1,"F1")func(2,"F2")func(3,"F3")func(4,"F4")func(5,"F5");
{

2) Les autres sont:
externes()
init()
generate_menu()

Les fonctions Fi()
D´autres fonctions
Voir des exemples dans les démos.

Remarque:
Seules les fonctions figurant dans les démos sont supposées sans erreur, et si toutes les démos fonctionnent on peut considérer que le système est (partiellement) opérationnel.

Applications

L´utilisateur peut écrire ses propres démos demon_ddd.func pour une application de niveau n.

Démos sensibles

Étant donné le grand nombre de démos (plus que de commandes), il est impossible de toutes les tester à chaque modification du programme, voici la liste des démos permettant de validate les principales fonctionnalités:

Pour les affichages:
       demo1_displ.func

pour les attaches:
       demo1_attach.func

pour la dynamique:
       demo1_field.func
       demo1_collision.func
       demo1_dynamic.func
       exemple_6.func

Pour les échelles:
       demo1_scale.func

Pour la récursivité:
       demo1_factorielle.func: factorielle
       vonkoch.func et vonkoch.func: courbe de Von Koch
       demo1_frac.func fractals

Pour les images:
       demo1_image.func

Pour les algorithmes génétiques:
       demo1_genetic.func

Pour les périphériques (capteurs):
       demo1_device.func

Pour les réseaux neuronaux:
       demo1_network.func

Pour les trajectoires:
       demo1_traj.func

Tests généraux:
       test.func

Lancement

Sous Window

Les fichiers demo*.func (situés dans le dossier env et dont la première fonction a le même nom) sont lancées par les fichiers de même nom (situés dans la racine), mais d´extension .js.

Cependant certaines démos lancent la même fonction avec des paramètres différents:
       demo1_aleax.js demo1_aleay.js demo1_aleaz.js
              lancent aleaxyz.func.
       demo1_cutx.js demo1_cuty.js demo1_cutz.js
              lancent cutxyz.func.
       demo1_dilx.js demo1_dily.js demo1_dilz.js
              lancent dilaxyz.func.
       demo1_cube.js demo1_geod.js demo1_grid.js demo1_prismr.js
              lancent demo1_vol.
       demo1_dynamic.js demo1_mass.js
              lancent dynamic.func.
       demo1_rota.js demo1_rotx.js demo1_roty.js demo1_rotz.js
              lancent rotaxyz.func.
       demo1_frame.js demo1_pixel.js demo1_rectangle.js demo1_segment.js
              lancent primitive.func.

Cliquer sur demo0*.js: démos du langage.
Cliquer sur demo1*.js: démos d´anyflo.

Sous anyflo

demo com lance la démo pour la commande com d´abord pour l´interpréteur et éventuellement pour anyflo, préférer:
demo0_com() ou demo1_com()
Remarques:
1) Pour une commande de l´interpréteur on peut aussi faire: demo0_com().
2) Pour une commande d´anyflo on peut aussi faire: demo1_com().
Dans ce cas si la commande est commune au langage et à anyflo les 2 démos sont lancées à la suite. Par exemple pour message, il y aura d´abord émissin des messages par demo0_message.func (y compris des messages d´erreur qui feront ring le terminal...), puis exécution graphic de demo1_message.func pour les messages d´anyflo.
3) Pour les démos telles que rota rotx roty rotz ou dila dilx dily dilz hom il faut appeler rotaxyz() ou dilaxyz().

Protocoles:

Pour simplifier l´écriture et le debogage des fonctions il est conseillé de suivre les protocoles suivants:

Noms des fonctions

La fonction du menu principal est MEN, le help asscié est HEL.
Les noms des fonctions dans les menus sont les mêmes que ceux affichés dans les cases.
Les fonctions d´un sous menu SM seront de la forme SM_FFF, par exemple le help associé sera SM_HEL.
Les noms des fonctions appelées par ces fonctions seront de la forme SM_FFF_GGG.
Une sous fonctions validable SM_FFF sera déclenchée par:
if(evaluer menu("SM")menu("SM_FFF")>0)func_SM_FFF();

Helps

Un help sera déclenché par:
if(evaluer menu("SM")menu("SM_HEL")>0)text(Help_SM)poi(X_HEL,Y_HEL)rectangle(0,0,0);

Interaction

Elle est assurée par le callback interaction func(5,"F5").
La fonction F5() contiendra les menus, les entrées et les sorties graphiques:
menu
scale
mouse
displ