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