Principe
Les objets
Les transformations
Principe
Le langage
Le langage interne d´ANYFLO est une
extension simplifiée du langage C, outre les fonctionnalités de ce
langage, il possède plusieurs centaines de commandes pouvant rentrer
dans une expression syntaxiquement correcte et être interprétées.
Noms des commandes
La taille des noms des commandes a été réduite autant qu´il était possible afin
d´en faciliter l´écriture dans les fonctions:
Deux caractères:
CG: centre de gravité.
GO: commande de debug.
if: condition.
NF: nombre de facettes.
NL: retour à la ligne (new line).
no: non.
NP: nombre de points.
PI: nombre pi.
Trois caractères:
aba: abandon.
abs: valeur absolue.
acc: accélération.
aim: axe de visée.
add: ajouter.
anc: ancrage.
ang: angle.
arc: arc de cercle.
ang: angle.
box: boite.
coe: coefficient.
col: couleur (color).
cos: cosinus.
cut: couper.
dec: décéléré.
tran: déplacement.
dim: dimension.
dist: distance.
dup: dupliquer.
end: fin.
ent: entier.
exp: exponentielle.
ext: extension.
eye: oeil.
fac: facette.
foc: focale.
fog: brouillard.
for: boucle.
hom: homothétie.
hsv: teinte saturation valeur (hue saturation valeur).
ini: initialisation.
int: partie entière.
inv: inverse.
law: loi.
log: logarithme népérien.
lut: look up table.
pan: panoramique.
poi: point.
put: poser.
rem: supprimer (remove).
rev: surface de révolution.
see: voir.
sin: sinus.
spe: spécial.
sum: somme (sum).
tan: tangente.
var: variable.
vol: volume.
win: fenêtre (window).
yes: oui.
Quatre caractères:
acos: arc cosinus.
alea: déformation aléatoire reproductible.
alex: déformation aléatoire en x reproductible.
aley: déformation aléatoire en y reproductible.
alez: déformation aléatoire en z reproductible.
asin: arc sinus.
atan: arc tangente.
auto: variable automatique.
axis: axe.
back: fond.
ball: boule.
case: étiquette d´un switch.
char: type caractère.
clip: coupe.
cosh: cosinus hyperbolique.
cube: cube.
cutx: couper en x.
cuty: couper en y.
cutz: couper en z.
demo: démo.
dila: dilatation.
dilx: dilatation en x.
dily: dilatation en y.
dilz: dilatation en z.
disk: disque.
dist: distance.
draw: dessiner.
edit: édition.
else: sinon.
exec: exécution.
exit: quitter.
font: fonte de caractères.
frac: fractal.
geod: surface géodésique.
goto: branchement inconditionnel.
grep: rechercher.
grid: grille.
help: aide.
hole: trou.
lead: leader.
left: gauche.
line: ligne.
link: é:diteur de liens.
list: liste chainée.
LIST: commande debug.
mass: masse.
menu: menu
meta: méta commande.
move: position.
name: nom.
near: voisin.
pend: pendulaire.
pers: perspective.
pipe: tuyau.
play: jouer.
pull: tirer.
puls: pulsation.
quat: quaternion.
rand: aléroire entier non reproductible.
read: lire.
ring: sonne.
roll: roulis.
rota: rotation.
rotx: rotation en x.
roty: rotation en y.
rotz: rotation en z.
secx: section en x.
secy: section en y.
secz: section en z.
sinh: sinus hyperbolique.
sort: trier.
sqrt: racine carrée.
STOP: commande debug.
tanh: tangente hyperbolique.
syma: symétrie.
symx: symétrie en x.
symy: symétrie en y.
symz: symétrie en z.
text: texte.
time: temps.
traj: trajectoire.
type: type.
unit: unitaire.
wait: attente.
zbuf: zbuffer.
zoom: zoom.
Cinq caractères:
above: dessus.
acos: arc cosinus hyperbolique.
alias: alias.
asinh: arc sinus hyperbolique.
atanh: arc tangente hyperbolique.
atof: chaine -> float.
atoi: chaine -> integer.
audio: audio.
break: sort d´un bloc.
brush: pinceau.
clean: nettoyer.
close: fermer.
coord: coordonnées.
debug: debug.
depth: profondeur.
displ: afficher (displ).
error: erreur.
field: champ.
float: tytpe flottant.
fopen: ouverture d´un fichier.
force: force.
frame: cadre.
fread: lecture d´un fichier.
front: devant.
illum: éclairement (illumination).
image: image.
inclu: contenu.
input: entrée au clavier.
limit: limite.
light: lumière.
motif: motif.
mouse: souris.
pixel: pixel.
print: imprimer.
prism: prisme.
rand2: aléroire entier non reproductible dans un intervalle.
randf: aléroire flottant non reproductible.
right: droite.
reanc: réancrage.
scale: échelle.
scene: scène.
speed: vitesse.
split: fendre.
stock: stocker.
validate: valider.
video: vidéo.
while: boucle.
write: écrire.
Plus de cinq caractères:
adhere: adhérer.
adjust: ajuster.
alphabet: alphabet.
ambiance: ambiance.
animate: animer.
attach: attacher.
average: moyenne.
behind: derrière.
;bellow: dessous.
bitmap: bitmappe.
calloc: réservation mémoire.
camera: caméra.
center: centre.
collision: collision.
compile: compilation.
concat: concaténer.
contour: contour.
default: étiquette d´un switch.
device: périphérique, capteur.
directory: dossier.
deformation: déformer.
dynamic: dynamique.
envelope: enveloppe.
extern: variable externe.
fclose: cloture d´un fichier.
follow: suiveur.
format: format.
fwrite: écriture d´un fichier.
generate: générer.
genetic: génétique.
getline: lecture d´une ligne.
getword: lecture d´un mot.
global: variable global.
graphic: graphique.
heritage: héritage.
history: historique des lignes de commandes.
inside: intérieur.
interaction.: interaction.
interpol: interpoler.
intersection: intersection.
lattice: treilles.
local: variable local.
luminance: luminance.
malloc: réservation mémoire.
matrix: matrice.
memory: mémoire.
message: message.
morphing: morphing.
motionblur: flou de mouvement.
neuron: neurone.
network: réseau neuronal.
normal: normale.
number: numéro.
particule: particule
period: période.
precision: precision.
number: objet.
palette: palette.
product: produit.
radius: rayon.
rand2f: aléroire flottant non reproductible dans un intervalle.
rectangle: rectangle.
return: retour d´une fonction.
scalar: produit scalaire.
screen: écran.
segment: segment.
shadow: ombre.
simple: simple.
smooth: lisser.
sphere: sphère.
spring: ressort.
static: variable statique.
status: oui/non d´une commande.
stereo: stéréoscopie.
string: chaine de caractères.
stringf: float -> chaine de caractères.
switch: branchement multiple.
system: système.
vertex: sommet.
vector: produit vectoriel.
Multiplicité d´une commande
Commandes simples:
Une commandes simple est un nom de commande éventuellement suivie de paramètres.
Exemple:
screen;
Efface l´écran avec la couleur courante du fond.
screen(r,v,b);
Efface l´écran avec la couleur (r,v,b)
Commandes multiples:
Une commande multiple est une suite de noms de commandes suivies éventuellement
de paramètres:
Exemple:
alea(20,30,40) vol(1);
Bruite aléatoirement de 20 (en x), de 30 (en y) et de 40 (en z)
les sommets du volume numéro 1.
Évaluations
Une commande ´com1(p1) com2(p2) .... comn(pn)´ est évaluée, c´est à dire
qu´elle retourne une valeur et/ou exécute une action.
Exemples:
poi(3) vol(1);
Retourne les coordonnées du point 3 du volume 1
$poi(3) vol(1);
Imprime les coordonnées du point 3 du volume 1
Affectations
Une commande ´com1 com .... objet(id)=val´ affecte à la propriété
´com1 com2 ...´
de l´objet id la valeur val.
Exemples:
poi(3) vol(1)=100,50,0; Affecte la valeur (100,50,0) au point 3 du volume 1
col vertex(3) vol(1)=0,1,0;
Affecte la couleur verte au sommet 3 du volume 1
Première commande
La première commande d´une commande multiple détermine le type de traitement:
Si c´est un objet celui-ci est construit, exemples:
1) cube(1);
construit le cube par défaut de numéro 1.
2) cube(1)col(0,1,0);
construit le même cube de couleur verte.
Si c´est une transformation celle-ci s´applique nécessairement à un objet, exemples:
1) tran(0,100,0)vol(1);
déplace de (0,100,0) le volume numéro 1 (en modifiant ses cooedonnées).
2) tran(0,100,0)matrix vol(1);
déplace de (0,100,0) la matrice du
volume numéro 1 (sans modifier ses coordonnées).
Si c´est une propriété celle-ci s´applique nécessairement à un objet, exemples:
1) col vol(1)=1,0,0;
donne la couleur rouge au volume numéro 1.
2) illum vol(1);
retourne les coefficients
d´éclairement du volume numéro 1.
Les objets
Les objets du langage
Chaînes de caractères, exemple "AB"
Tableaux de chaînes, exemple: "MOT1 MOT2 MOT3"
Nombres flottants, exemple: 1.0
Tableaux de nombres, exemple (1,2.5,-1.0,.3)
Tableaux hybrides, exemple: [1,3],"AB",0
Variables, exemple x=[1,5], elles peuvent être
automatiques,
externes,
globales ou
statiques.
Fonctions mathématiques, exemple cos, sin, log.
Fonctions spéciales, exemple distance, scalar.
Fonctions écrites par l´utilisateur.
Les objets d´anyflo
Ils sont caractérisés par un
type
Ils sont connus à leurs création par leur
identificateur.
Exemples:
cube(7)dim(200);
Crée le volume de type cube, de côté 200, et de
numéro 7.
ball("BB")dim(100)secy(12);
Crée la boule de nom BB, de centre (0,0,0),
de rayon 100, et de 12 sections en y.
Propriétés d´objets
Les objets peuvent être munis d´un nombre quelconque de propriétés arbitraires.
À leur création certaines propriétés peuvent être définies automatiquement.
Par exemple cube(7)dim(200);
crée un objet de type cube comportant:
une propriété ´poi´ constituée de 8 points.
une propriété ´fac´ constituée de 6 facettes.
Après création d´un objet des propriétés peuvent lui être ajoutées, exemples:
illum vol(7)=1;
Affecte la couleur rouge au volume 7.
poi(0) vol(7)=0,0,0;
Ajoute le point (0,0,0) au volume 7.
Accès aux propriétés d´objets
Évaluation:
poi(3) vol(1);
Retourne les coordonnées du point 3 du volume 1.
illum vertex(3) vol(1);
Retourne la couleur (r,v,b) du sommet 3 du volume 1.
Affectation:
poi(3) vol(1)=100,50,0;
Affecte (100,50,0) au point 3 du volume 1.
illum vertex(3) vol(1)=0,0,1;
Affecte le bleu comme couleur du sommet 3 du
volume 1.
Création:
illum screen vol(1)=1,0,1;
Crée la propriété ´illum screen´ du volume 1 et lui
affecte la valeur (1,0,1)
func vol(1)="toto";
Affecte la fonction toto() au volume 1.
local(0) vol(1)=func "toto";
Ajoute la fonction local toto() au
volume 1.
Les transformations
Transformations d´objets
Toute commande multiple commençant par une commande de transformation et
comportant un type d´objet, transforme cet objet
Exemples:
tran(100,0,0)vol(1);
Déplace le volume 1 de (100,0,0)
alea(20,30,50)vertex[1,100] vol(1);
Bruite respectivement de 20(en x), de 30 (en y)
et de 50 en z) les sommets (1,2,...,100) du volume 1.
Les commandes de transformations
see manuel des transformations.
Liste des commandes