3.7.3 Les bases du langage

3.7.3.1 Les numériques

Les expressions flottantes
FLOAT:
NUMERIC_TERM [SIGN NUMERIC_TERM]
SIGN:
+ | -
NUMERIC_TERM:
NUMERIC_FACTOR [MULT NUMERIC_FACTOR]
MULT:
* | /
NUMERIC_EXPRESSION:
FLOAT_LITERAL | FLOAT_IDENTIFIER | SIGN NUMERIC_EXPRESSION | FLOAT_FUNCTION | FLOAT_BUILT_IN_IDENT | ( FULL_EXPRESSION ) | ! NUMERIC_EXPRESSION | VECTOR.DOT_ITEM | FLOAT_FUNCTION_INVOCATION
FLOAT_LITERAL:
[DIGIT...][.]DIGIT...[EXP[SIGN]DIGIT...]
DIGIT:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
EXP:
e | E
FLOAT_FUNCTION:
abs (FLOAT) | acos (FLOAT) | acosh (FLOAT) | asc (STRING) | asin (FLOAT) | asinh (FLOAT) | atan (FLOAT) | atanh (FLOAT) | atan2 (FLOAT,FLOAT) | ceil (FLOAT) | cos (FLOAT) | cosh (FLOAT) | defined (IDENTIFIER) | degrees (FLOAT) | dimensions (ARRAY_IDENTIFIER) | dimension_size (ARRAY_IDENTIFIER,INT) | div (FLOAT,FLOAT) | exp (FLOAT) | file_exists (STRING) | floor (FLOAT) | int (FLOAT) | ln (FLOAT) | log (FLOAT) | max (FLOAT,FLOAT[,FLOAT]...) | min (FLOAT,FLOAT[,FLOAT]...) | mod (FLOAT,FLOAT) | pow (FLOAT,FLOAT) | radians (FLOAT) | rand (FLOAT) | seed (FLOAT) | select (FLOAT,FLOAT,FLOAT,FLOAT) | sin (FLOAT) | sinh (FLOAT) | sqrt (FLOAT) | strcmp (STRING,STRING) | strlen (STRING) | tan (FLOAT) | tanh (FLOAT) | val (STRING) | vdot (VECTOR,VECTOR) | vlength (VECTOR)
FLOAT_BUILT_IN_IDENT:
BOOLEAN_KEYWORD | clock | clock_delta | clock_on | final_clock | final_frame | frame_number | image_height | image_width | initial_clock | initial_frame | pi | version
BOOLEAN_KEYWORD:
true | yes | on | false | no | off
FULL_EXPRESSION:
LOGICAL_EXPRESSION [? FULL_EXPRESSION : FULL_EXPRESSION]
LOGICAL_EXPRESSION:
REL_TERM [LOGICAL_OPERATOR REL_TERM]
LOGICAL_OPERATOR:
& | |
REL_TERM:
FLOAT [REL_OPERATOR FLOAT]
REL_OPERATOR:
< | <= | = | >= | > | !=
DOT_ITEM:
x | y | z | t | u | v | red | green | blue | filter | transmit | gray
INT:
FLOAT
Toute fraction est ignorée.
BOOL:
BOOLEAN_KEYWORD | LOGICAL_EXPRESSION

Contenu de la référence rapide

3.7.3.2 Les vecteurs

Les expressions vectorielles
VECTOR:
VECTOR_TERM [SIGN VECTOR_TERM]
VECTOR_TERM:
VECTOR_EXPRESSION [MULT VECTOR_EXPRESSION]
VECTOR_EXPRESSION:
VECTOR_LITERAL | VECTOR_IDENTIFIER | SIGN VECTOR_EXPRESSION | VECTOR_FUNCTION | VECTOR_BUILT_IN_IDENT | ! VECTOR_EXPRESSION | FLOAT | VECTOR_FUNCTION_INVOCATION | COLOR_FUNCTION_INVOCATION | SPLINE_INVOCATION
VECTOR_LITERAL:
< FLOAT, FLOAT [, FLOAT [, FLOAT [, FLOAT ]]] >
VECTOR_FUNCTION:
min_extent (OBJECT_IDENTIFIER) | max_extent (OBJECT_IDENTIFIER) | trace (OBJECT_IDENTIFIER,VECTOR,VECTOR[,VECTOR_IDENTIFIER]) | vaxis_rotate (VECTOR,VECTOR,FLOAT) | vcross (VECTOR,VECTOR) | vrotate (VECTOR,VECTOR) | vnormalize (VECTOR) | vturbulence (FLOAT,FLOAT,FLOAT,VECTOR)
VECTOR_BUILT_IN_IDENT:
x | y | z | t | u | v

Contenu de la référence rapide

3.7.3.3 Les couleurs

Les expressions de couleur
COLOR:
[color] COLOR_BODY | colour COLOR_BODY
COLOR_BODY:
COLOR_VECTOR | COLOR_KEYWORD_GROUP | COLOR_IDENTIFIER
COLOR_VECTOR:
rgb 3D_VECTOR | rgbf 4D_VECTOR | rgbt 4D_VECTOR | [rgbft] 5D_VECTOR
COLOR_KEYWORD_GROUP:
[COLOR_IDENTIFIER] COLOR_KEYWORD_ITEMS
COLOR_KEYWORD_ITEMS:
[red FLOAT] & [green FLOAT] & [blue FLOAT] & [filter FLOAT] & [transmit FLOAT]

Contenus de la référence rapide

3.7.3.4 Les fonctions définies par l'utilisateur

Les fonctions définies par l'utilisateur
USER_FUNCTION:
FLOAT_USER_FUNCTION | VECTOR_USER_FUNCTION | COLOR_USER_FUNCTION
FLOAT_USER_FUNCTION:
function { FN_FLOAT } | function (IDENT_LIST) { FN_FLOAT } | function { pattern { PATTERN [PATTERN_MODIFIERS]} }
IDENT_LIST:
IDENT_ITEM [, IDENT_LIST]
Le nombre maximal d'identificateurs de paramètre est 20. Un identificateur ne doit pas être répété dans la liste.
IDENT_ITEM:
x | y | z | u | v | PARAM_IDENTIFIER
PATTERN:
MAP_PATTERN | brick [BRICK_ITEM] | checker | hexagon | object { LIST_OBJECT }
VECTOR_USER_FUNCTION:
function { SPECIAL_VECTOR_FUNCTION }
SPECIAL_VECTOR_FUNCTION:
TRANSFORM | SPLINE
COLOR_USER_FUNCTION:
function { PIGMENT }
Spécifie une expression flottante dans la fonction définie par l'utilisateur :
FN_FLOAT
LOGIC_AND [OR LOGIC_AND]
OR:
|
LOGIC_AND:
REL_TERM [AND REL_TERM]
AND:
&
REL_TERM:
TERM [REL_OPERATOR TERM]
REL_OPERATOR:
< | <= | = | >= | > | !=
TERM:
FACTOR [SIGN FACTOR]
SIGN:
+ | -
FACTOR:
MOD_EXPRESSION [MULT MOD_EXPRESSION]
MULT:
* | /
EXPRESSION:
FLOAT_LITERAL | FLOAT_IDENTIFIER | FN_FLOAT_FUNCTION | FLOAT_BUILT_IN_IDENT | ( FN_FLOAT ) | IDENT_ITEM | SIGN EXPRESSION | VECTOR_FUNCTION_INVOCATION.FN_DOT_ITEM | COLOR_FUNCTION_INVOCATION.FN_DOT_ITEM | FLOAT_FUNCTION_INVOCATION
FN_DOT_ITEM:
DOT_ITEM | hf
FN_FLOAT_FUNCTION:
abs (FN_FLOAT) | acos (FN_FLOAT) | acosh (FN_FLOAT) | asc (STRING) | asin (FN_FLOAT) | asinh (FN_FLOAT) | atan (FN_FLOAT) | atanh (FN_FLOAT) | atan2 (FN_FLOAT,FN_FLOAT) | ceil (FN_FLOAT) | cos (FN_FLOAT) | cosh (FN_FLOAT) | degrees (FN_FLOAT) | exp (FN_FLOAT) | floor (FN_FLOAT) | int (FN_FLOAT) | ln (FN_FLOAT) | log (FN_FLOAT) | max (FN_FLOAT,FN_FLOAT[,FN_FLOAT]...) | min (FN_FLOAT,FN_FLOAT[,FN_FLOAT]...) | mod (FN_FLOAT,FN_FLOAT) | pow (FN_FLOAT,FN_FLOAT) | prod (IDENTIFIER, FN_FLOAT, FN_FLOAT, FN_FLOAT) | radians (FN_FLOAT) | sin (FN_FLOAT) | sinh (FN_FLOAT) | sqrt (FN_FLOAT) | sum (IDENTIFIER, FN_FLOAT, FN_FLOAT, FN_FLOAT) |tan (FN_FLOAT) | tanh (FN_FLOAT) | select (FN_FLOAT,FN_FLOAT,FN_FLOAT,FN_FLOAT)
Crée un identificateur pour une fonction définie par l'utilisateur :
USER_FUNCTION_DECLARATION:
#declare FLOAT_FUNCTION_IDENTIFIER = FLOAT_USER_FUNCTION | #local FLOAT_FUNCTION_IDENTIFIER = FLOAT_USER_FUNCTION | #declare VECTOR_FUNCTION_IDENTIFIER = VECTOR_USER_FUNCTION | #local VECTOR_FUNCTION_IDENTIFIER = VECTOR_USER_FUNCTION | #declare COLOR_FUNCTION_IDENTIFIER = COLOR_USER_FUNCTION | #local COLOR_FUNCTION_IDENTIFIER = COLOR_USER_FUNCTION
Référence une fonction définie par l'utilisateur :
FLOAT_FUNCTION_INVOCATION:
FLOAT_FUNCTION_IDENTIFIER (FN_PARAM_LIST)
VECTOR_FUNCTION_INVOCATION:
VECTOR_FUNCTION_IDENTIFIER (FN_PARAM_LIST)
COLOR_FUNCTION_INVOCATION:
COLOR_FUNCTION_IDENTIFIER (FN_PARAM_LIST)
FN_PARAM_LIST:
FN_PARAM_ITEM [, FN_PARAM_LIST]
FN_PARAM_ITEM:
x | y | z | u | v | FLOAT

Contenu de la référence rapide

3.7.3.5 Les chaînes

Les expressions chaînes
STRING:
STRING_FUNCTION | STRING_IDENTIFIER | STRING_LITERAL
STRING_FUNCTION:
chr (INT) | concat (STRING,STRING[,STRING]...) | str (FLOAT,INT,INT) | strlwr (STRING) | strupr (STRING) | substr (STRING,INT,INT) | vstr (INT,VECTOR,STRING,INT,INT)
STRING_LITERAL:
QUOTE [CHARACTER...] QUOTE
Limité à 256 caractères.
QUOTE:
"
CHARACTER:
Tout caractère ASCII ou Unicode, selon le paramètre charset de global_settings. Les séquences d'échappement suivantes peuvent être utiles pour écrire dans les fichiers ou les canaux de messages :
\a - alarme
\b - espace arrière
\f - saut de page
\n - nouvelle ligne
\r - retour chariot
\t - tabulation horizontale
\uNNNN - caractère unicode sur quatre chiffres
\v - tabulation verticale
\\ - backslash
\' - simple apostrophe
\" - double apostrophe

Contenu de la référence rapide

3.7.3.6 Les tableaux

Définit un tableau :
ARRAY_DECLARATION:
#declare ARRAY_IDENTIFIER = array DIMENSION... [ARRAY_INITIALIZER] |
#local ARRAY_IDENTIFIER = array DIMENSION... [ARRAY_INITIALIZER]
Limité à cinq dimensions.
DIMENSION:
[ INT ]
Les parenthèses font partie de la spécification de la dimension. L'entier doit être plus grand que zéro.
ARRAY_INITIALIZER:
{ ARRAY_INITIALIZER [, ARRAY_INITIALIZER]... } |
{ RVALUE [, RVALUE]... }
Place une valeur dans un tableau :
ARRAY_ELEMENT_ASSIGNMENT:
#declare ARRAY_REFERENCE =RVALUE [;] |
#local ARRAY_REFERENCE = RVALUE [;]
Les deux points sont requis pour un assignement FLOAT, VECTOR ou COLOR.
Référence une tableau :
ARRAY_REFERENCE:
ARRAY_IDENTIFIER ELEMENT...
ELEMENT:
[ INT ]
Les parenthèses font partie de la spécification de l'élément.

Contenu de la référence rapide

3.7.3.7 Les génératrices

Définit une génératrice :
SPLINE:
spline { SPLINE_ITEMS }
SPLINE_ITEMS
[SPLINE_TYPE] PATH_LIST | SPLINE_IDENTIFIER [SPLINE_TYPE][PATH_LIST]
SPLINE_TYPE:
linear_spline | quadratic_spline | cubic_spline | natural_spline
PATH_LIST:
FLOAT, VECTOR [[,] PATH_LIST]
Référence une génératrice :
SPLINE_INVOCATION:
SPLINE_IDENTIFIER ( FLOAT [, SPLINE_TYPE] )

Contenu de la référence rapide

3.7.2 La scène 3.7.2 La scène 3.7.4 Les directives du langage 3.7.4 Les directives du langage