Ceil( <x> ).
Description : renvoie le plus petit entier supérieur ou égal au réel <x>.
div( <x>, <y> ).
Description : renvoie l’unique entier k tel que x - ky soit dans l’intervalle [0; ∣y∣[.
mod( <x>, <y> ).
Description : renvoie l’unique réel r de l’intervalle [0; ∣y∣[ tel que x = ky + r avec k entier.
not( <expression booléenne> )
Description : renvoie la valeur booléenne de la négation.
pgcd( <a>, <b> [, <u>, <v>] )
Description : renvoie la valeur d du pgcd de <a> et <b>, ainsi que deux coefficients de Bezout dans les variables <u> et <v> (si celles-ci sont présentes), de telle sorte que au + bv = d.
ppcm( <a>, <b> )
Description : renvoie la valeur du ppcm de <a> et <b>.
Abs( <affixe> ).
Description : cette macro donne la norme en cm.
free( <x> ).
Description : libère la variable <x> en la mettant à Nil. Depuis la version 1.93 on peut faire directement l’affectation à la constante Nil, par exemple: x:=Nil.
IsIn( <affixe> [, <epsilon>] ).
Description : renvoie 1 si l’<affixe> est dans la fenêtre graphique, 0 sinon. Cette macro tient compte de la matrice courante, le test se fait à <epsilon> près et <epsilon> vaut 0.0001 cm par défaut.
nil( <x> ).
Description : renvoie 1 si la variable <x> est à Nil, 0 sinon. Depuis la version 1.93 on peut faire directement le test d’égalité avec la constante Nil.
round( <liste> [, décimales] )
Description : tronque les complexes de la <liste> en arrondissant au plus proche les parties réelles et imaginaires avec le nombre de <décimales> demandé (0 par défaut). Si la <liste> contient le constante jump, alors celle-ci est renvoyée dans la liste des résultats. Cette macro utilise la commande Round (qui ne s’applique qu’à un complexe et non une liste).
bary( <[affixe1, coef1, affixe2, coef2, ...]> ).
Description : renvoie le barycentre du système pondéré <[(affixe1, coef1), (affixe2, coef2),...]>.
del( <liste>, <liste des index à supprimer>, <quantité à supprimer> ).
Description : renvoie la liste après avoir supprimer les éléments dont l’index figure dans la <liste des index à supprimer>. La <quantité à supprimer> (à chaque fois) est de 1 par défaut, cet argument peut être une liste lui aussi.
Exemple(s) :
del( [1,2,3,4,5,6,7,8], [2,6,8]) donne [1,3,4,5,7].
del( [1,2,3,4,5,6,7,8], [2,6,8], 2) donne [1,4,5].
del( [1,2,3,4,5,6,7,8], [2,6,8], [1,2]) donne [1,3,4,5].
del( [1,2,jump,3,4,5,jump,6,7,8],[3,7]) donne [1,2,3,4,5,6,7,8].
getdot( <s> , <ligne polygonale> ).
Description : renvoie le point de la <ligne polygonale> ayant <s> comme abscisse curviligne. Le paramètre <s> doit être dans l’intervalle [0; 1], 0 pour le premier point, et 1 pour le dernier.
IsAlign( <liste points 2D> [, epsilon] ).
Description : renvoie 1 si les points sont sur une même droite, 0 sinon. Par défaut la tolérance <epsilon> vaut 1E-10. La <liste> ne doit pas contenir la constante jump.
isobar( <[affixe1, affixe2, ...]> ).
Description : renvoie l’isobarycentre du système <[affixe1, affixe2, ...]>.
KillDup( <liste> [, epsilon] ).
Description : renvoie la liste sans doublons. Les comparaisons se font à <epsilon> près (qui vaut 0 par défaut).
Exemple(s) : KillDup( [1.255,1.258,jump,1.257,1.256,1.269,jump] ,1.5E-3) renvoie [1.255,1.258,1.269].
length( <liste> ).
Description : calcule la longueur de la <liste> en cm.
permute( <liste> ).
Description : modifie la <liste> en plaçant le premier élément à la fin, <liste> doit être une variable.
la commande [x:= [1,2,3,4], permute(x), x] renvoie [2,3,4,1].
Pos( <affixe>, <liste>, [, epsilon] ).
Description : renvoie la liste des positions de l’<affixe> dans la <liste>, la comparaison se fait à <epsilon> près, par défaut <epsilon> vaut 0.
la commande Pos(2, [1,2,3,2,4]) renvoie [2,4], mais Pos(5, [1,2,3,2,4]) renvoie Nil.
rectangle( <liste> ).
Description : détermine le plus petit rectangle contenant la liste, cette macro renvoie une liste de deux complexes qui représentent l’affixe du coin inférieur gauche suivi de celle du coin supérieur droit.
replace( <liste>, <position>, <valeur> ).
Description : modifie la variable <liste> en remplaçant l’élément numéro <position> par la <valeur>, cette macro renvoie Nil.
reverse( <liste> ).
Description : renvoie la liste après avoir inverser chaque composante (deux composantes sont séparées par un jump).
SortWith( <liste clés>, <liste>, <taille paquets> [, mode] ).
Description : trie la variable <liste> suivant les <clés>. Les éléments de la <liste> sont traités par <paquets>, leur taille est de 1 par défaut. La <taille paquets> peut être égale à jump pour un traitement par composante. Si un paquet n’est pas complet, il n’est pas traité. Si la liste contient la constante jump, alors toutes les composantes sont triées chacune leur tour. Le dernier paramètre détermine le type de tri: <mode>=0 pour ordre croissant (valeur par défaut), <mode>=1 pour décroissant.
La convention adoptée est que deux composantes sont séparées par la constante jump. Une composante peut être vide.
CpCopy( <liste>, <index depart>, <nombre> ).
Description : cette fonction renvoie la liste constituée par les <nombre> composantes de la <liste> à partir de la composante numéro <depart>[inclus]. Si <nombre> est nul, alors la fonction renvoie toutes les composantes de la liste à partir de la composante numéro <départ>.
Si le numéro <depart> est négatif, alors la liste et parcourue de droite à gauche en partant du dernier, la dernière composante a l’index - 1, l’avant-dernière a l’index - 2 ⋯ etc. La fonction renvoie les <nombre> composantes de la liste (ou toute la liste si <nombre> est nul) en allant vers la gauche, mais la liste renvoyée est dans le même sens que la <liste>, et cette dernière n’est pas modifiée.
Exemple(s) :
CpCopy([1,2,jump,3,7,8,jump,4,jump,5,6], 2, 1) renvoie [3,7,8].
CpCopy([1,2,jump,3,7,8,jump,4,jump,5,6], -1, 2) renvoie [4,jump,5,6].
CpCopy([1,2,jump,3,7,8,jump,4,jump,5,6], -3, 0) renvoie [1,2,jump,3,7,8].
CpDel( <variable liste>, <index depart>, <nombre> ).
Description : cette fonction détruit dans la <variable liste>, les <nombre> composantes à partir de la composante numéro <depart>[inclus]. Si <nombre> est nul, alors la fonction détruit toutes les composantes de la <variable liste> à partir de la composante numéro <départ>.
Si le numéro <depart> est négatif, alors la liste et parcourue de droite à gauche en partant du dernier, la dernière composante a l’index - 1, l’avant-dernière a l’index - 2 ⋯ etc. La fonction détruit les <nombre> composantes de la <variable liste> (ou toute la liste si <nombre> est nul) en allant vers la gauche.
Le paramètre <variable liste> doit être un nom de variable, celle-ci est modifiée et la macro renvoie Nil.
CpNops( <liste> ).
Description : cette fonction évalue <liste> et renvoie le nombre de composantes qui la composent.
Exemple(s) :
CpNops([1,2,jump,3] ) renvoie la valeur 2.
CpNops([1,2,jump,3,jump] ) renvoie la valeur 3.
CpNops([jump] ) renvoie la valeur 2.
CpReplace( <variable liste>, <position>, <nouveau> ).
Description : modifie la <variable liste> en remplaçant la composante numéro <position> par <nouveau>, cette macro renvoie Nil.
CpReverse( <liste> ).
Description : renvoie la <liste> avec les composantes dans l’ordre inverse.
Exemple(s) : CpReverse([1,2,jump,3,4,5,jump]) renvoie [jump,3,4,5,jump,1,2].
Une telle liste est en réalité une macro, les éléments sont indexés à partir de 1, et la chaîne numéro k est donnée par @nomListe(k)
, alors que la longueur de la liste (nombre d’éléments) est donnée par nomListe(0)
.
StrListInit( <nomListe>, <"chaine1">, <"chaine2">, ... ).
Description : crée une liste de chaines sous forme d’une macro appelée <nomListe>, les arguments suivants sont interprétés comme des chaînes, ils constituent les éléments de la liste et sont indexés à partir de 1.
Exemple(s) : Après la commande StrListInit(essai, "toto", ["toto",2/4], 24), une macro du nom de essai est créée et son contenu est:
for $z in Args() do
if z<0 then Inc(z,4) fi,
if z=0 then 3
elif z=1 then "toto"
elif z=2 then "toto0.5"
elif z=3 then "24"
fi
od
Exemple(s) : Afficher des labels avec une affixe et une orientation pour chacun, en utilisant une seule fois LabelDot.
view(-2,2,-2,2), Marges(0,0,0,0), size(7.5), StrListInit( nom, -1,"A","O", i,"B","N", 1,"C","E", -i,"D","S"), for k from 1 to nom(0) step 3 do LabelDot( Eval(@nom(k)), @nom(k+1), @nom(k+2), 1) od, StrListKill(nom)
Une autre solution consiste à faire trois listes: nom, position, orientation:
view(-2,2,-2,2), Marges(0,0,0,0), size(7.5),
StrListInit( nom, "$A$", "$B$", "$C$", "$D$"),
StrListInit(orientation, "O", "N", "E", "S"),
position:=[-1, i, 1, -i],
for k from 1 to nom(0) do
LabelDot( position[k], @nom(k), @orientation(k), 1)
od,
StrListKill(nom, orientation)
StrListAdd( <nomListe>, <"chaine1">, <"chaine2">, ... ).
Description : cette macro ajoute à la fin de la liste de chaînes appelée <nomListe>, les arguments suivants (qui sont interprétés comme des chaînes). Cela suppose que la liste <nomListe> existe déjà, cette liste est en fait une macro qui va être entièrement réécrite pour lui ajouter les éléments supplémentaires. Il est plus rapide de définir la liste en une seule fois avec la macro StrListInit quand c’est possible.
StrListCopy( <nomListe>, <nouvelleListe> [, index depart, nombre] ).
Description : cette macro crée une nouvelle liste de chaînes appelée <nouvelleListe> en copiant <nombre> éléments de la liste <nomListe> en partant de <index depart>. L’argument <index depart> peut être négatif ( - 1 designe le dernier élément, - 2 l’avant-dernier, ...), par contre les éléments sont toujours parcourus de gauche à droite quand <nombre> est positif, et dans le sens inverse quand <nombre> est négatif. Par défaut l’<index depart> vaut 1 et le <nombre> vaut 0 (ce qui signifie øg tous les éléments).
StrListDelKey( <nomListe>, <index depart>, <nombre> ).
Description : cette macro supprime de <nomListe> <nombre> éléments à partir de l’<index depart>. Comme dans la commande Del, l’argument <index depart> peut être négatif ( - 1 designe le dernier élément, - 2 l’avant-dernier, ...), par contre les éléments sont toujours parcourus de gauche à droite quand <nombre> est positif, et dans le sens inverse quand <nombre> est négatif. Cette macro renvoie Nil.
StrListDelVal( <nomListe>, <val1>, <val2>, ... ).
Description : cette macro supprime de <nomListe> les chaînes <val1>, <val2>..., sans avoir à connaître leurs index.
StrListGetKey( <nomListe>, <chaine> ).
Description : cette macro renvoie l’index de la <chaîne> dans la liste <nomListe>, si elle n’y figure pas, la macro renvoie Nil.
StrListInsert( <nomListe1>, <chaîne> [, <index> ]).
Description : cette macro modifie la liste de chaines <nomListe>, en insérant une nouvelle <chaîne> à la position <index>. Par défaut la valeur de <index> est nulle ce qui représente la fin de la liste, cette valeur peut être négative ( - 1 est l’index du dernier élément, - 2 l’avant-dernier, ...).
StrListKill( <nomListe1>, <nomListe2>, ... ).
Description : cette macro détruit les listes de chaînes <nomListe1>, <nomListe2>, ...
StrListReplace( <nomListe>, <ancienne chaine>, <nouvelle> ).
Description : cette macro remplace dans la liste appelée <nomListe>, l’<ancienne chaine> par la <nouvelle>.
StrListReplaceKey( <nomListe>, <index>, <nouvelle chaîne> ).
Description : cette macro remplace dans la liste appelée <nomListe>, la chaîne dont le numéro est<index>, par la <nouvelle chaîne>.
StrListShow( <nomListe> [, <index depart>, <nombre> ]).
Description : cette macro renvoie la chaîne obtenue en copiant <nombre> éléments de la liste <nomListe> en partant de <index depart>, mais sans les concaténer. La chaîne renvoyée est de la forme: "chaine", "chaine", ...
. L’argument <index depart> peut être négatif ( - 1 designe le dernier élément, - 2 l’avant-dernier, ...), par contre les éléments sont toujours parcourus de gauche à droite quand <nombre> est positif, et dans le sens inverse quand <nombre> est négatif. Par défaut l’<index depart> vaut 1 et le <nombre> vaut 0 (ce qui signifie øg tous les éléments).
Anp( <n>, <p> ).
Description : renvoie le nombre d’arrangements de <p> parmi <n>.
binom( <n>, <p> ).
Description : renvoie le coefficient binomial (ou combinaison) <p> parmi <n>.
ecart( <liste réels> ).
Description : renvoie l’écart type d’une liste de réels, la constante jump est ignorée.
fact( <n> ).
Description : renvoie la valeur de n! (fonction factorielle).
max( <liste complexes> ).
Description : renvoie le plus grand élément d’une liste de complexes (ordre lexicographique), la constante jump est ignorée.
min( <liste complexes> ).
Description : renvoie le plus petit élément d’une liste de complexes (ordre lexicographique), la constante jump est ignorée.
median( <liste complexes> ).
Description : renvoie l’élément médian d’une liste de complexes (ordre lexicographique), la constante jump est ignorée.
moy( <liste complexes> ).
Description : renvoie la moyenne d’une liste de complexes, la constante jump est ignorée.
prod( <liste complexes> ).
Description : renvoie le produit des éléments d’une liste de complexes, la constante jump est ignorée.
sum( <liste complexes> ).
Description : renvoie la somme des éléments d’une liste de complexes, la constante jump est ignorée.
var( <liste réels> ).
Description : renvoie la variance d’une liste de réels, la constante jump est ignorée.
RealArg( <affixe> )
Description : renvoie l’argument (en radians) de l’affixe réelle d’un vecteur en tenant compte de la matrice courante.
RealCoord( <affixe écran> )
Description : renvoie l’affixe réelle d’un point compte tenu des échelles et de la matrice courante.
RealCoordV( <affixe écran> )
Description : renvoie l’affixe réelle d’un vecteur compte tenu des échelles de la matrice courante.
ScrCoord( <affixe réelle> )
Description : renvoie l’affixe écran d’un point en tenant compte des échelles et de la matrice courante.
ScrCoordV( <affixe réelle> )
Description : renvoie l’affixe écran d’un vecteur en tenant compte des échelles et de la matrice courante.
SvgCoord( <screen affixe> )
Description : renvoie l’affixe exportée en svg en tenant compte des échelles et de la matrice courante.
TeXCoord( <screen affixe> )
Description : renvoie l’affixe exportée en tex, pst et pgf en tenant compte des échelles et de la matrice courante. Pour l’eps il y a la commande EpsCoord.
affin( <liste> , <[A, B]>, <V>, <lambda> )
Description : renvoie la liste des images des points de <liste> par l’affinité de base la droite <(AB)>, de rapport <lambda> et de direction le vecteur <V>.
defAff( <nom>, <A>, <A’>, <partie linéaire> )
Description : cette fonction permet de créer une macro appelée <nom> qui représentera l’application affine qui transforme <A> en <A’>, et dont la partie linéaire est le dernier argument. Cette partie linéaire se présente sous la forme d’une liste de deux complexes: [Lf(1), Lf(i)] où Lf désigne la partie linéaire de la transformation.
ftransform( <liste>, <f(z)> )
Description : renvoie la liste des images des points de <liste> par la fonction <f(z)>, celle-ci peut-être une expression fonction de z ou une macro d’argument z.
hom( <liste>, <A>, <lambda> )
Description : renvoie la liste des images de la <liste> par l’homothétie de centre <A> et de rapport <lambda>.
inv( <liste>, <A>, <R> )
Description : renvoie la liste des images des points de <liste> par l’inversion de cercle de centre <A> et de rayon <R>.
mtransform( <liste>, <matrice> )
Description : renvoie la liste des images des points de <liste> par l’application affine f définie par la <matrice>. Cette matrice est de la forme [f(0), Lf(1), Lf(i)] où Lf désigne la partie linéaire.
proj( <liste>, <A>, <B> ) ou proj( <liste>, <[A,B]> )
Description : renvoie la liste des projetés orthogonaux des points de <liste> sur la droite (AB).
projO( <liste>, <[A,B]>, <vecteur> )
Description : renvoie la liste des projetés des points de <liste> sur la droite <(AB)> dans la direction du <vecteur>.
rot( <liste>, <A>, <alpha> )
Description : renvoie la liste des images des points de <liste> par la rotation de centre <A> et d’angle <alpha>.
shift( <liste>, <vecteur> )
Description : renvoie la liste des translatés des points de <liste> avec le <vecteur>.
simil( <liste> , <A>, <lambda>, <alpha> )
Description : renvoie la liste des images des points de <liste>, par la similitude de centre <A>, de rapport <lambda> et d’angle <alpha>.
sym( <liste>, <A>, <B> ) ou sym( <liste>, <[A,B]> )
Description : renvoie la liste des symétriques des points de <liste>, par rapport à la droite (AB).
symG( <liste>, <A>, <vecteur> )
Description : symétrie glissée: renvoie la liste des images des points de <liste>, par la symétrie orthogonale d’axe la droite passant par <A> et dirigée par <vecteur>, composée avec la translation de <vecteur>.
symO( <liste>, <[A, B]>, <vecteur> )
Description : renvoie la liste des symétriques des points de <liste> par rapport à la droite <(AB)> et dans la direction du <vecteur>.
Une transformation affine f du plan complexe peut être représentée par son expression analytique dans la base canonique (1, i), la forme générale de cette expression est:
{
$\left\{\begin{array}{rcl}
x'&=&t_1+ax+by\\
y'&=&t_2+cx+dy
\end{array}\right.$
}
cette expression analytique sera représentée par la liste [t1+i*t2, a+i*c, b+i*d] c’est à dire: [ f(0), f(1)-f(0), f(i)-f(0)], cette liste sera appelée plus brièvement (et de manière abusive) matrice de la transformation f. Les deux derniers éléments de cette liste: [ a+i*c, b+i*d], représentent la matrice de la partie linéaire de f: Lf = f - f(0).
ChangeWinTo( <[xinf+i*yinf, xsup+i*ysup]> [, ortho] )
Description : modifie la matrice courante de manière à transformer la fenêtre courante en la fenêtre de grande diagonale <[xinf+i*yinf, xsup+i*ysup]>, la fenêtre sera orthonormée ou non en fonction de la valeur du paramètre optionnel <ortho> (0 par défaut).
view(-10,10,-5,5),size(7.5),NbPoints:=100, LabelSize:=footnotesize, SaveWin(),view(-10,-1,-5,5), ChangeWinTo([-2-2*i,2+2*i]), Arrows:=1, axes(0,1+i),Arrows:=0, tMin:=-2, tMax:=2, Color:=red, Width:=8, Cartesienne(x*Ent(1/x)-1,5,1), Color:=blue,A:=(1+i)/4, Dparallelo(A,bar(A),-A), dep:=RealCoord(i*Im(A)), RestoreWin(), SaveWin(), //zoom view(1,10,-5,5), background(full,white), ChangeWinTo([-A,A]), Color:=black, arr:=RealCoord(-Re(A)+i*Im(A)*0.75), Arrows:=1, axes(0,A), Arrows:=0, tMin:=-0.25, tMax:=0.25, Color:=red, Width:=8, Cartesienne(x*Ent(1/x)-1,5,1), Color:=blue, Dparallelo(A,bar(A),-A), RestoreWin(), //trait Color:=blue, Arrows:=1, A:=ScrCoord(dep), B:=ScrCoord(arr), Bezier(A,A+3*exp(i*pi/2),B-3,B)
invmatrix( <[f(0), Lf(1), Lf(i)]> )
Description : renvoie l’inverse de la matrice <[f(0), Lf(1), Lf(i)]>, c’est à dire la matrice [f - 1(0), Lf - 1(1), Lf - 1(i)] si elle existe.
matrix( <fonction affine>, [variable] )
Description : renvoie la matrice de la <fonction affine>, par défaut la <variable> est z. Cette matrice se présente sous la forme [f(0), Lf(1), Lf(i)], où f désigne l’application affine et Lf sa partie linéaire, plus précisément: Lf(1)=f(1)-f(0) et Lf(i)=f(i)-f(0).
Exemple(s) : matrix(i*bar(z)) renvoie [0,i,1].
mulmatrix( <[f(0), Lf(1), Lf(i)]>, <[g(0), Lg(1), Lg(i)]> )
Description : renvoie la matrice de la composée: fog, où f et g sont les deux applications affines définies par les matrices passées en argument.
Ces macros définissent des objets graphiques mais ne les dessinent pas, elles renvoient une liste de points représentant ces objets.
bissec( <B>, <A>, <C>, <1 ou 2> )
Description : renvoie une liste de deux points de la bissectrice, 1=intérieure.
cap( <ensemble1>, <ensemble2> )
Description : renvoie le contour de l’intersection de <ensemble1> avec <ensemble2> sous forme d’une liste de points. Ces deux ensembles sont des lignes polygonales représentant des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro set permet de définir et dessiner des ensembles.
Exemple(s) : intersection de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=set("A", 0, [rotation:=30]), B:=set("B", 0, [rotation:=-30]), C:= cap(A,B),Color:=red,FillStyle:=full, FillOpacity:=0.5, FillColor:=pink, Ligne(C,0)
capB( <ensemble1>, <ensemble2> )
Description : renvoie le contour de l’intersection de <ensemble1> avec <ensemble2> sous forme d’une liste de points de contrôles qui doit être dessinée avec la macro drawSet. Ces deux ensembles sont doivent également être deux listes de points de contrôle représentant des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro setB permet de définir et dessiner des ensembles.
Exemple(s) : intersection de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=setB("A", 0, [rotation:=30]), B:=setB("B", 0, [rotation:=-30]), C:= capB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=0.5, FillColor:=pink])
carre( <A>, <B>, <1 ou -1> )
Description : renvoie la liste des sommets du carré de sommets consécutifs A et B, 1=sens direct.
cup( <ensemble1>, <ensemble2> )
Description : renvoie le contour de la réunion de <ensemble1> avec <ensemble2> sous forme d’une liste de points. Ces deux ensembles doivent être des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro set permet de définir et dessiner des ensembles.
Exemple(s) : réunion de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=set("A", 0, [rotation:=30]), B:=set("B", 0, [rotation:=-30]), C:= cup(A,B),Color:=red,FillStyle:=full, FillOpacity:=0.5, FillColor:=pink, Ligne(C,0)
cupB( <ensemble1>, <ensemble2> )
Description : renvoie le contour de la réunion de <ensemble1> avec <ensemble2> sous forme d’une liste de points de contrôles qui doit être dessinée avec la macro drawSet. Ces deux ensembles sont doivent également être deux listes de points de contrôle représentant des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro setB permet de définir et dessiner des ensembles.
Exemple(s) : intersection de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=setB("A", 0, [rotation:=30]), B:=setB("B", 0, [rotation:=-30]), C:= cupB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=0.5, FillColor:=pink])
cutBezier( <courbe de bézier>, <point>, <avant(0/1)> )
Description : renvoie un arc de bézier correspondant à la <courbe de bézier> coupée avant ou après le <point>, en fonction du paramètre <avant>. Le résultat doit être dessiné par la commande Bezier.
Cvx2d( <liste> )
Description : renvoie l’enveloppe convexe de la <liste> selon l’algorithme de {Ronald Graham}. La <liste> ne doit pas contenir la constante jump.
Exemple(s) : on choisit aléatoirement 10 points dans le pavé [ - 4, 4] × [ - 4, 4] que l’on place dans une variable P tout en dessinant chacun d’eux avec son numéro, puis on dessine l’enveloppe convexe.
Marges(0,0,0,0),size(7.5), P:= for k from 1 to 10 do z:=8*Rand()-4+i*(8*Rand()-4), LabelDot(z, k,"N",1), z od, Ligne(Cvx2d(P),1)
Intersec( <objet1>, <objet2> )
Description : renvoie la liste des points d’intersection des deux objets graphiques. Ces deux objets peuvent être soit des commandes graphiques (Cercle(), Droite(), ...) ou bien le nom d’un élément graphique déjà créé.
Exemple(s) : la commande Intersec( Cercle(0, 1), Droite(-1,i/2) ) renvoie:
med( <A>, <B> )
Description : renvoie une liste de deux points de la médiatrice de [A, B].
parallel( <[A,B]>, <C> )
Description : renvoie une liste de deux points de la parallèle à (AB) passant par C.
parallelo( <A>, <B>, <C> )
Description : renvoie la liste des sommets du parallèlogramme de sommets consécutifs A, B, C.
perp( <[A, B]>, <C> )
Description : renvoie une liste de deux points de la perpendiculaire à (AB) passant par C.
polyreg( <A>, <B>, <nombre de cotés> )
Description : renvoie la liste des sommets du polygône régulier de centre A, passant par B et avec le nombre de côtés indiqué.
ou
polyreg( <A>, <B>, <nombre de cotés + i*sens> ) avec sens = +/-1
Description : renvoie la liste des sommets du polygône régulier de sommets consécutifs A et B, avec le nombre de côtés indiqué et dans le sens indiqué (1 pour le sens trigonométrique).
pqGoneReg( <centre>, <sommet>, <[p,q]> )
Description : renvoie la liste des sommets du <p/q>-gône régulier défini par le <centre> et un <sommet>.
Exemple(s) : voir ici.
rect( <A>, <B>, <C> )
Description : renvoie la liste des sommets du rectangle de sommets consécutifs A, B, le côté opposé passant par C.
setminus( <ensemble1>, <ensemble2> )
Description : renvoie le contour de la différence <ensemble1> - <ensemble2> sous forme d’une liste de points. Ces deux ensembles doivent être des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro set permet de définir et dessiner des ensembles.
Exemple(s) : différence de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=set("A", 0, [rotation:=30]), B:=set("B", 0, [rotation:=-30]), C:= setminus(A,B),Color:=red,FillStyle:=full, FillOpacity:=0.5, FillColor:=pink, Ligne(C,0)
setminusB( <ensemble1>, <ensemble2> )
Description : renvoie le contour de la différence <ensemble1> - <ensemble2> sous forme d’une liste de points de contrôles qui doit être dessinée avec la macro drawSet. Ces deux ensembles sont doivent également être deux listes de points de contrôle représentant des courbes fermées, orientées dans le meme sens, ayant une forme relativement simple. La macro setB permet de définir et dessiner des ensembles.
Exemple(s) : différence de deux ensembles:
Marges(0,0,0,0),size(7.5), A:=setB("A", 0, [rotation:=30]), B:=setB("B", 0, [rotation:=-30]), C:= setminusB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=0.5, FillColor:=pink])
Il est possible de transformer un fichier pdf ou un fichier postscript en flattened postscript grâce à l’utilitaire pstoedit (http://www.pstoedit.net/
). Dans le fichier obtenu, tout est chemin, y compris le texte. TeXgraph peut récupérer tous les chemins d’un fichier écrit en flattened postscript. C’est que proposent les macros de cette section.
conv2FlatPs( <fichier entrée>, <fichier sortie> [, dossier de travail] )
Description : cette macro invoque l’utilitaire pstoedit pour transformer le <fichier entrée> en flattened postscript dans le <fichier sortie>. Le fichier <fichier entrée> doit être un fichier pdf ou ps.
drawFlatPs( <affixe>, <chemins lus par loadFlatPs> [, options] )
Description : cette macro dessine à l’écran l’ensemble des chemins lus dans un fichier en flattened postscript par la macro loadFlatPs. L’affichage se fait à l’<affixe> demandé. Le paramètre <options> est une liste (facultative) de la forme [ option1:= valeur1, ..., optionN:=valeurN ], les options sont:
scale := < nombre positif >: échelle, 1 par défaut.
position := < center/left/right/... >: position de l’affixe par rapport à l’image, center par défaut (fonctionne comme la variable LabelStyle).
color := < couleur >: pour imposer une couleur, Nil par défaut ce qui signifie qu’on prend la couleur d’origine.
rotation := < angle en degrés >: 0 par défaut.
hollow := < 0/1 >: avec la valeur 0 (par défaut) les remplissages sont effectués.
select := < liste des numéros de chemin à montrer >: Nil par défaut, ce qui signifie tous les chemins.
drawTeXlabel( <affixe>, <variable contenant la formule TeX lue par loadFlatPs>, [, options] )
Description : cette macro invoque la macro drawFlatPs pour dessiner une expression qui a été au préalable compilée par . Le paramètre <options> est une liste (facultative) de la forme [ option1:= valeur1, ..., optionN:=valeurN ], les options sont:
scale := < nombre>0 >: échelle, 1 par défaut.
hollow := < 0/1 >: avec la valeur 0 (par défaut) les remplissages sont effectués.
Cette macro est utilisée en interne par la macro NewTeXlabel.
loadFlatPs( <fichier en flattened postscript>, [, options] )
Description : cette macro charge un <fichier en flattened postscript>, adpate les coordonnées des points et renvoie la liste des chemins (que l’on peut alors dessiner avec la macro drawFlatPs). Le paramètre <options> est une liste (facultative) de la forme [ option1:= valeur1, ..., optionN:=valeurN ], les options sont:
width := < nombre>0 >: largeur en cm, Nil par défaut pour largeur naturelle.
height := < nombre>0 >: hauteur en cm, Nil par défaut pour hauteur naturelle.
supposons que vous ayez le fichier circuit.pdf dans le dossier temporaire de TeXgraph, la commande suivante dans un élément graphique Utilisateur:
[conv2FlatPs( "circuit.pdf", "circuit.fps", @TmpPath),
stock:= loadFlatPs( [@TmpPath,"circuit.fps"] ),
drawFlatPs( 0, stock, [scale:=1, hollow:=1] )
]
va permettre de charger et dessiner le contenu de ce fichier dans TeXgraph, sans faire les remplissages.
NewTeXlabel( <nom>, <affixe>, <formule TeX>, [, options] )
Description : cette macro va demander à {} de compiler la formule dans un fichier pdf, ce fichier sera ensuite converti en un fichier eps par pstoedit, puis celui-ci sera chargé par loadFlatPs et stocké dans une variable globale appelée TeX_+nom. Un élément graphique appelé <nom> est créée pour dessiner la formule avec drawTeXLabel. Le paramètre <options> est une liste (facultative) de la forme [ option1:= valeur1, ..., optionN:=valeurN ], les options sont:
dollar := < 0/1 >: indique à TeXgraph s’il doit ajouter les délimiteurs \[
et \]
autour de la formule, 1 par défaut.
scale := < nombre>0 >: échelle, 1 par défaut.
hollow := < 0/1 >: avec la valeur 0 (par défaut) les remplissages sont effectués.
Dans les options, les attributs suivants peuvent également être utilisés: LabelStyle, LabelAngle et Color.
Voici la définition de cette macro:
[dollar:=1, scale:=1, hollow:=0, $options:=%4, $aux:=OpenFile([@TmpPath,"formula.tex"]), if dollar then WriteFile(["\[",%3,"\]"]) else WriteFile(%3) fi, CloseFile(), Exec("pdflatex","-interaction=nonstopmode tex2FlatPs.tex",@TmpPath,1), Exec("pstoedit -dt -pta -f ps -r2400x2400","tex2FlatPs.pdf tex2FlatPs.eps",@TmpPath,1), NewVar(["TeX_",%1],loadFlatPs([@TmpPath,"tex2FlatPs.eps"])), NewGraph(%1, ["drawTeXlabel(",%2,", TeX_",%1,", [scale:=",scale,", hollow:=",hollow,"])"]), ReDraw() ]
La formule est écrite dans le fichier formula.tex, puis on compile le fichier tex2FlatPs.tex suivant:
\documentclass[12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{fourier}
\pagestyle{empty}
\begin{document}
\large
\input{formula.tex}%
\end{document}
et on convertit le résultat en flattened postscript avant de le charger.
Cette macro s’utilise dans la ligne de commande ou bien dans des macros qui créent des éléments graphiques, mais pas directement dans un élément graphique Utilisateur, exemple:
pdfprog().
Description : cette macro est utilisée en interne pour mémoriser le programme utilisé pour faire la conversion du format eps vers le format pdf. Par défaut, cette macro contient la chaine: "epstopdf". En éditant le fichier TeXgraph.mac, vous pouvez modifier le programme utilisé.