Logiciel libre de géométrie, d'analyse et de simulation multiplateforme par Yves Biton

Accueil Tutoriels l’API de MathGraph32

Référence de l’API de MathGraph32

modification lundi 30 mars 2024.

Toutes les versions de cet article : [English] [français]



Généralités
Création de points
Création d’objets de type ligne
Création de surfaces
Création d’objets de type texte ou LaTeX
Création d’intersection de droites ou cercles
Création de marques de segment ou d’angle
Création de mesures
Création et utilisation d’objets numériques
Création de transformations géométriques
Création d’images par des transformations géométriques
Création de courbes ou de lieux
Création de matrices
Modification d’objets déjà créés
Animation d’une figure avec un timer
Ecouteurs d’événement
Outils divers

Toutes les fonctions de l’API peuvent être appelées de deux façons, une courte multi paramètres (mais en général incomplète) et une longue en passant en paramètre un objet comme argument.

Exemple :

addPointXY(-3, 4, ’M’, ’red’, ’X’) créera un point de coordonnées -3 et 4 dans le repère par défaut, avec pour nom M, en couleur rouge et en forme de croix. Cette syntaxe fonctionne aussi bien en JavaScript qu’en Python.

L’instruction suivante est équivalente en JavaScript :

addPointXY(x : -3, y : 4, name : ’M’, color : ’red’, pointStyle : ’X’)

En Python les noms des propriétés doivent être entre des apostrophes :
addPointXY(’x’ : -3, ’y’ : 4, ’name’ : ’M’, ’color’ : ’red’, ’pointStyle’ : ’X’)

Le passage d’un objet permet plus de possibilités, par exemple, en Python :
addPointXY(’x’ : -3, ’y’ : 4, ’name’ : ’M’, ’color’ : ’red’, ’pointStyle’ : ’X’, ’hidden’ : True)
créera le point mais il sera masqué.

Mais on peut aussi utiliser les instructions :
A = addPointXY(-3, 4, ’M’, ’red’, ’X’)
setHidden(A)

Certains paramètres optionnels peuvent être omis, par exemple :
A = addPointXY(-3, 4) créera un point de coordonnées - 3 et 4, avec un nom vide, une couleur noire et en forme de rond moyen.

A = addPointXY(-3, 4, ’red’) ne fonctionnera pas. Utiliser à la place : A = addPointXY(-3, 4, ’’, ’red’) ou la forme objet du passage de paramètres.

Les exemples ci-dessous sont donnés avec la syntaxe Python.
Il faudra les adpater pour utilsier l’API en Javascript.
Par exemple la ligne suivante (Python) :
a = addCalc(’a’, ’pi + 2’)
s’écrira en JavaScript :
const a = addCalc(’a’, ’pi + 2’)

Voici les noms des attributs de style ou de visibilité qui peuvent être affectés aux objets graphiques suivant leur nature (par exemple un point n’a pas d’attribut lineStyle) :

Nom de l’attribut Type Fonction
name chaîne de caractères Nom d’un point ou une droite à créer (seuls les points et les droites peuvent être nommés dans MathGraph32)
color chaine de caractères Couleur de base (par exemple ’black’, ’red’, ’green’ ou une couleur RVB (par exemple #8000ff)
hidden booléen true pour un objet masqué, false pour un objet affiché
offsetx nombre Décalage en abscisses du nom d’un point ou une droite par rapport à sa position normale (en coordonnées SVG, positif de la gauche vers la droite)
offsety nombre Décalage en ordonnées du nom d’un point ou une droite par rapport à sa position normale (en coordonnées SVG, positif du haut vers le bas)
hiddenName booléen true pour un nom masqué, false pour un nom affiché
pointStyle chaîne de caractères Seulement pour les points : ’x’ pour une petite croix oblique, ’X’ pour une grande croix oblique, ’o’ pour un petit rond, ’O’ pour un rond moyen, ’OO’ pour un grand rond, ’<>’ pour un losange, ’[]’ pour un carré, ’.’ pour un pixel
lineStyle chaîne de caractères Seulement pour les objets de type ligne : ’-’ pour un trait continu, ’.’ pour un trait pointillé, ’—’ ou ’---’ pour une succession de traits, ’-..’ , ’-...’ pour une succession de traits et de points
thickness nombre Epaisseur de trait pour une ligne
tag string tag MathGraph32 de l’objet créé (optionnel)

Des fonctions sont présentes permettant de toujours utiliser la syntaxe courte multi paramètres comme setHidden, setPointStyle, setLineStyle, setThickness.

Création de points

Dans les fonctions suivantes, le paramètres x et y peuvent être :
- des valeurs numériques
- des références à un objet de type calcul déjà renvoyé par une fonction de l’API comme addCalc ou addXMeasure.
- une chaîne de caractères contenant un calcul valide MathGraph32, comme par exemple ’sqrt(AB)/2’ si la mesure de la longueur AB a déjà été créée.

Il en est de même pour le paramètre z qui lui est utilisé pour une valeur complexe.

Dans les fonctions suivantes, le paramètres o, a et b peuvent être :
- des points créés précédemment avec une fonction de l’API
- des noms de points déjà créés
- le tag d’un point (si ce point n’a pas de nom).

A noter que, pour la rapidité de l’exécution passer un point en paramètre est beaucoup plus rapide que de passer son nom.

Nom de la fonction Syntaxe courte Explications
addPointXY addPointXY(x, y, name, color, pointStyle, rep) Crée un point de coordonnées (x, y). Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep.
addFreePoint addFreePoint(x, y, name, color, pointStyle, rep) Crée un point libre dont les coordonnées de départ sont x et y. Si aucun repère n’est présent dans la figure, x et y sont comprises comme coordonnées SVG, si un seul repère est présent il est utilisé par défaut. Si plusieurs repères sont présents il faut donner dans le paramètre rep le tag du repère utilisé. Pour forcer à utiliser les coordonnées SVG, utiliser la syntaxe objet avec un paramètre absCoord à true (True en Python)
addPointZ addPointZ(z, name, color, pointStyle, frame) Crée un point d’affixe z. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut. Si la figure comporte plusieurs paramètres, il faut donner son tag via l’attribut rep. z peut être la référence à un calcul complexe créé via l’API ou une chaîne de caractères contenant une formule complexe valide pour MathGraph32.
addImPointTranslation addImPointTranslation(o, a, b, name, color, pointStyle) Crée l’image du point o par la translation de vecteur ab
addImPointRotation addImPointRotation(a, o, x, name, color, pointStyle) Crée l’image du point a dans la rotation de centre o et d’angle x
addImPointDilation addImPointDilation(a, o, x, name, color, pointStyle) Crée l’image du point a dans l’homothétie de centre o et rapport x
addImPointSymCent addImPointSymCent(a, o, name, color, pointStyle) Crée l’image du point a dans la symétrie de centre o
addImPointSymAx addImPointSymAx(a, d, name, color, pointStyle) Crée l’image du point a dans la symétrie axiale d’axe d (d peut être une droite, demi-droite ou segment)
addLinkedPointLine addLinkedPointLine(d, x, y, name, color, pointStyle, rep) Ajoute un point lié à la droite d (d peut aussi être une demi-droite ou un segment). x et y sont des constantes réelles qui donnent la position de départ du point lié sur la droite de la façon suivante : le point de coordonnées (x ; y) est projeté orthogonalement sur la droite et c’est ce projeté qui donne la position de départ du point lié. Si cette position de départ est en dehors de la fenêtre une erreur est lancée. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep. Si la figure ne comporte pas de repère, (x, y) sont compris comme des coordonnées svg. Pour forcer l’utilisation des coordonnées SVG, utiliser la syntaxe objet pour le paramètre avec un attribut absCoord à true.
addLinkedPointCircle addLinkedPointCircle(d, x, y, name, color, pointStyle, rep) Ajoute un point lié au cercle c (c peut aussi être un arc de cercle). x et y sont des constantes réelles qui donnent la position de départ du point lié sur le cercle de la façon suivante : le centre du cercle et joint au point de coordonnées (x ; y) par une demi-droite imaginaire et c’est le point d’intersection de cette demi-droite avec le cercle qui donne la position de départ du point lié. Si cette position de départ est en dehors de la fenêtre une erreur est lancée. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep. Si la figure ne comporte pas de repère, (x, y) sont compris comme des coordonnées svg. Pour forcer l’utilisation des coordonnées SVG, utiliser la syntaxe objet pour le paramètre avec un attribut absCoord à true.
addLinkedPointLocus addLinkedPointLocus(elt, x, y, name, color, pointStyle, rep) Ajoute un point lié au lieu de pointselt. x et y sont des constantes réelles qui donnent la position de départ du point lié sur le lieu de points de la façon suivante : le point du lieu le plus proche du point de coordonnées (x ; y) donne la position de départ du point lié. Si cette position de départ est en dehors de la fenêtre une erreur est lancée. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep. Si la figure ne comporte pas de repère, (x, y) sont compris comme des coordonnées svg. Pour forcer l’utilisation des coordonnées SVG, utiliser la syntaxe objet pour le paramètre avec un attribut absCoord à true.

Création de lignes

Dans les fonctions suivantes, le paramètres x, y et r peuvent être :
- des valeurs numériques
- des références à un objet de type calcul déjà renvoyé par une fonction de l’API comme addCalc ou addXMeasure.
- une chaîne de caractères contenant un formule valide MathGraph32 (comme par exemple ’sqrt(AB)/2’ si la mesure de la longueur AB a déjà été créée.

Nom de la fonction Syntaxe courte Explications
addLineAB addLineAB(a, b, name, color, lineStyle, thickness) Crée la droite passant par les points a et b
addLinePar addLinePar(a, d, name, color, lineStyle, thickness) Crée la droite passant par le point a et parallèle à la droite d (d peut être aussi un segment ou une demi-droite)
addLinePerp addLinePerp(a, d, name, color, lineStyle, thickness) Crée la droite passant par le point a et orthogonale à la droite d (d peut être aussi un segment ou une demi-droite)
addLineAx addLineAx(a, x, name, color, lineStyle, thickness) Crée la droite passant par le point a et de coefficient directeur x
addLineMedAB addLineMedAB(a, b, name, color, lineStyle, thickness) Crée la médiatrice du segment d’extrémités a et b
addLineBisAOB addLineBisAOB(a, o, b, name, color, lineStyle, thickness) Crée la bissectrice de l’angle aob
addSegment addSegment(a, b, color, lineStyle, thickness) Crée le segment d’extrémités a et b
addVector addVector(a, b, color, lineStyle, thickness Crée un vecteur d’origine a et d’extrémité b. Pour choisir le style de flèche utiliser la syntaxe objet en passant un paramètre arrowStyle égal à ’short’ (flèche ligne courte), ’long’ (flèche ligne longue), ’shortfull’ (flèche pleine courte) ou ’longfull’ (flèche pleine longue)
addRay addRay(o, a, color, lineStyle, thickness) Crée la demi-droite d’origine o et passant par a
addCircleOA addCircleOA(o, a, color, lineStyle, thickness) Crée le cercle de centre o et passant par a
addCircleOr addCircleOr(o, r, color, lineStyle, thickness) Crée le cercle de centre o et rayon r
addPolygon addPolygon(points, color, lineStyle, thickness) Ajoute un polygone. points doit être un tableau dont les éléments sont soit des points soit des noms de points. Par exemple [A, B, C, ’D’].
addArcOAB addArcOAB(o, a, b, color, lineStyle, thickness) Crée le petit arc de centre o, débutant en a et finissant dans la direction du point b
addArcOAx addArcOAx(o, a, x, color, lineStyle, thickness) Crée le petit arc de centre o, débutant en a et dont le point final est l’image de a par la rotation de centre o et angle x
addArcMajorOAB addArcMajorOAB(o, a, b, color, lineStyle Crée le grand arc de centre o, débutant en a et finissant dans la direction du point b
addArcMajorOAx addArcMajorOAx(o, a, x, color, lineStyle, thickness) Crée le grand arc de centre o, débutant en a et dont le point final est l’image de a par la rotation de centre o et angle x
addArcDirectOAB addArcDirectOAB(o, a, b, color, lineStyle, thickness) Crée l’arc direct de centre o, débutant en a et finissant dans la direction du point b
addArcIndirectOAB addArcIndirectOAB(o, a, b, color, lineStyle, thickness) Crée l’arc indirect de centre o, débutant en a et finissant dans la direction du point b

Création de surfaces

Nom de la fonction Syntaxe courte Explications
addSurface addSurface(edge, color, fillStyle) Crée une surface délimitée par edge (qui peut être un objet ou le tag d’un objet de type cercle, polygone, arc de cercle ou lieu de points fermé). Le style de remplissage fillStyle peut être : ’transp’ (remplissage transparent) ou ’fill’ (remplissage opaque) ou ’-’ (quadrillage horizontal) ou '|' (quadrillage vertical) ou ’\’ (remplissage oblique descendant’ ou ’/’ (remplissage oblique montant). Si le style de remplissage est omis, le remplissage est transparent.

Affichages de texte ou de code LaTeX

Nom de la fonction Syntaxe courte Explications
addText addText(text, x, y, color) Ajoute l’affichage de texte text, de couleur color aux coordonnées x et y. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut pour x et y. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep en utilisant la syntaxe objet. Si la figure ne comporte pas de repère, ce sont des coordonnées SVG qui sont utilisées. Pour forcer l’utilisation de coordonnées SVG, utilisez la syntaxe objet avec le paramètre absCoord mis à true
addLatex addLatex(latex, x, y, color) Ajoute l’affichage LaTeX de code latex, de couleur color aux coordonnées x et y. Si la figure ne comporte qu’un repère et si le repère n’est pas précisé, il est pris par défaut pour x et y. Si la figure comporte plusieurs repères, il faut donner son tag via l’attribut rep. Si la figure ne comporte pas de repère, ce sont des coordonnées SVG qui sont utilisées. Pour forcer l’utilisation de coordonnées SVG, utilisez la syntaxe objet avec le paramètre absCoord mis à true
addLinkedText addLinkedText(text, a, color) Ajoute l’affichage de texte text lié au point a
addLinkedLatex addLinkedLatex(latex, a, color) Ajoute l’affichage LaTeX de code latex lié au point a

Pour une création de niveau plus avancée de texte ou de LaTeX, utiliser la syntaxe objet du paramètre avec les paramètres suivants :

Nom du paramètre Type Objet
absCoord booléen Passer true pour forcer x et y à être interprétés comme des coordonnées SVG
color chaîne de caractères Couleur de la police d’affichage
fontSize nombre entier Taille en pixels de la police utilisée
border chaîne de caractères ’none’ (sans bordure), ’simple’ (encadrement simple) ou ’3D’ (encadrement avec effet 3D)
opaque booléen Passer true pour que l’affichage efface ce qu’il y a dessous (et défini avant)
backgroundColor chaîne de caractères Couleur utilisée pour le fond si opaque est true (par exemple ’red’ ou ’#fefefe’
hAlign chaîne de caractères Alignement horizontal : ’left’ ou ’center’ ou ’right’
vAlign chaîne de caractères Alignement vertical : ’top’ ou ’middle’ ou ’bottom’
offsetX nombre Décalage horizontal de l’affichage (en coordonnées SVG)
offsetX nombre Décalage vertical de l’affichage (en coordonnées SVG)
hidden booléen true pour cacher l’affichage

Creation d’intersections

Dans ce qui suit :
les paramètres d, d2 peuvent être :
- des droites , demi-droites ou segments (ou leur nom ou tag dans le cas des droites)
les paramètres c et c2 peuvent être :
- des cercles ou arcs de cercles (ou leur tag)

Nom de la fonction Syntaxe courte Explications
addIntLineLine addIntLineLine(d, d2, name, color, pointStyle) Ajoute l’intersection des droites (ou segments ou demi-droites) d et d2. L’objet renvoyé est un point. Le nom name lui est affecté.
addIntLineCircle addIntLineCircle(d, c, name, name2, color, pointStyle) Renvoie un tableau (list en Python) de deux éléments du type [M, N] où M et N sont les deux points d’intersection de la droite d avec le cercle c. Le nom name est affecté à M et le nom name2 est affecté à N Si les deux points d’intersection existent déjà une erreur est générée. Si un des deux points d’intersection est reconnu comme déjà existant, il est renvoyé dans N et le nouveau point est renvoyé dans M. Si la droite et le cercle sont tangents le point N est considéré inexistant. Si vous voulez que deux points soient créés même s’ils existent déjà, utilisez la syntaxe objet pour le paramètre et passez à cet objet un attribut smartIntersect à false
addIntCircleCircle addIntCircleCircle(c, c2, name, name2, color, pointStyle) Renvoie un tableau de deux éléments du type [M, N] où M et N sont les deux points d’intersection du cercle c avec le cercle c2. Le nom name est affecté à M et le nom name2 est affecté à N Si les deux points d’intersection existent déjà une erreur est générée. Si un des deux points d’intersection est reconnu comme déjà existant, il est renvoyé dans N et le nouveau point est renvoyé dans M. Si les deux cercles sont tangents le point N est considéré inexistant. Si vous voulez que deux points soient créés même s’ils existent déjà, utilisez la syntaxe objet pour le paramètre et passez à cet objet un attribut smartIntersect à false

Création de marques d’angles ou de segments

Nom de la fonction Syntaxe courte Explications
addSegmentMark addSegmentMark(elt, color, segmentMarkStyle, thickness) Crée la marque de segment associée au segment elt, avec la couleur color et l’épaisseur thickness. segmentMarkStyle est une chaîne de caractères qui peut être ’-’ (marque simple), ’—’ (marque double), ’---’ (marque triple) ou ’x’ (marque en forme de croix)
addAngleMark addAngleMark(o, a, b, r, color, angleMarkStyle, thickness) Ajoute une marque d’angle non orientée pour l’angle a o b, de rayon r (constante numérique) en pixels et de couleur color. angleMarkStyle peut être une des chaînes de caractères suivantes (’simple’ par défaut) : ’simple’ (marque simple sans trait), ’simple-’ (marque simple avec un trait), ’simple—’ (marque simple avec deux traits), ’simple---’ (marque simple avec trois traits), ’simplex’ (marque simple avec une croix), ’full’ (marque pleine simple), ’full-’ (marque pleine avec un trait), ’full—’ (marque pleine avec deux traits), ’full---’ (marque pleine avec trois traits), ’fullx’ (marque pleine avec une croix)

Création de mesures

Nom de la fonction Syntaxe courte Explications
addXMeasure addXMeasure(a, nameCalc, rep) Ajoute la mesure de l’abscisse du point a dans le repère rep et donne à cette mesure le nom nameCalc. L’objet renvoyé est un objet MathGraph32 (et pas une valeur numérique). rep est le tag d’un repère de la figure. Si le paramètre rep est omis et si la figure ne contient qu’un seul repère, celui-ci est utilisé par défaut. Si la figure ne comporte pas de repère ou si elle comporte plusieurs repères et le paramètre rep est absent, une erreur est générée.
addYMeasure addYMeasure(a, nameCalc, rep) Ajoute la mesure de l’ordonnée du point a dans le repère rep et donne à cette mesure le nom nameCalc. L’objet renvoyé est un objet MathGraph32 (et pas une valeur numérique). rep est le tag d’un repère de la figure. Si le paramètre rep est omis et si la figure ne contient qu’un seul repère, celui-ci est utilisé par défaut. Si la figure ne comporte pas de repère ou si elle comporte plusieurs repères et le paramètre rep est absent, une erreur est générée.
addZMeasure addZMeasure(a, nameCalc, rep) Ajoute la mesure de l’affixe du point a dans le repère rep et donne à cette mesure le nom nameCalc. L’objet renvoyé est un objet MathGraph32 de nature calcul complexe (et pas une valeur numérique). rep est le tag d’un repère de la figure. Si le paramètre rep est omis et si la figure ne contient qu’un seul repère, celui-ci est utilisé par défaut. Si la figure ne comporte pas de repère ou si elle comporte plusieurs repères et le paramètre rep est absent, une erreur est générée.
addLengthMeasure addLengthMeasure(a, b) Ajoute la mesure de la distance entre les points a et b. La figure doit être munie d’une longueur unité. L’objet renvoyé est un objet MathGraph32 et pas une valeur numérique. Si, par exemple, on a ajouté la mesure de la distance entre deux points M et N, on pourra utiliser addCircleOr avec comme rayon la chaine de caractères ’2*sqrt(MN)’
addAbsMeasure addAbsMeasure(b, o, a) Ajoute la mesure de l’abscisse du point b relativement au repère (o, a). Les points o, a et b doivent être nommés. S’ils ne sont pas alignés la mesure n’existe pas.

A noter : Les valeurs renvoyées par les trois fonctions ci-dessus étant des objets MathGraph32 et pas des valeurs numériques, si vous voulez utiliser leur valeur utilisez la fonction getValue(mes) où mes est l’objet renvoyé pour addXMeasure et addYMeasure.
Mais attention : n’utilisez pas ces valeurs renvoyées par getValue et getValueComp pour créer des objets MathGraph32 dynamiques.

Création et utilisation d’objets numériques

Nom de la fonction Syntaxe courte Explications
addCalc addCalc(nameCalc, formula) Ajoute un calcul réel de nom nameCalc défini par la formule formula. L’objet renvoyé est un objet MathGraph32 et pas une valeur numérique. Exemple : si x est le nom d’un calcul déjà défini et si la longueur MN a été mesurée (par addLengthMeasure), on peut utiliser pour formula la chaîne de caractères sqrt(MN)*x*2/3
addFunc addFunc(nameCalc, formula, varName) Ajoute une fonction réelle MathGraph32 de une variable réelle. nameCalc est le nom de la fonction créée et formula est une chaîne de caractères définissant sa formule, la variable formelle étant varName. Si le paramètre varName est omis, ils est mis à ’x’. Exemple : si un calcul nommé m a déjà été créé dans la figure et i le paramètre varName est omis, on peut utiliser pour formula la chaîne de caractères ’sin(m*pi*x/2)’. Si un calcul ayant pour nom le contenu du paramètre varName est présent dans la figure il ne peut pas être utilisé dans formula.
addCalcComp addCalcComp(nameCalc, formula) Ajoute un calcul complexe de nom nameCalc et défini par la formule formula. L’objet renvoyé est un objet MathGraph32 et pas une valeur numérique. Exemple : si m et n sont les noms de deux calculs déjà définis (réels ou complexes), on peut utiliser pour formula la chaîne de caractères ’m*2 + n*i’.
addFuncComp addFuncComp(nameCalc, formula, varName) Ajoute une fonction complexe MathGraph32 de une variable complexe. nameCalc est le nom de la fonction créée et formula est une chaîne de caractères définissant sa formule, la variable formelle étant varName. Si le paramètre varName est omis, il est mis à ’z’. Exemple : si un calcul nommé m a déjà été créé dans la figure, on peut utiliser pour formula la chaîne de caractères ’(z+m*i)*2’. Si un calcul de nom z est présent dans la figure il ne peut pas être utilisé dans formula.
addDerivative addDerivative(calc, nameCalc) Crée la dérivée formelle de la fonction calc (ou de nom calc) et donne à cette dérivée le nom nameCalc. Cette dérivée peut ensuite être utilisée pour définir des objets numériques comme une fonction MathGraph32 classique
getValue getValue(x) Renvoie la valeur actuelle du calcul ou de la mesure réelle MathGraph32 x (ou ayant pour nom x). Attention : cette valeur ne peut pas être utilisée pour créer des objets dynamiques ans la figure.
getMatValue getMatValue(mat) Renvoie un array (lignes de la matrice) dont les termes sont des array représentant les valeurs des cellules de la matrice mat. mat doit être un objet matrice de MathGraph32 créé via une des fonctions de l’API. Par exemple cette fonction pourrait renvoyer [1] pour une matrice à deux lignes et trois colonnes.
getCalcName getCalcName(nameCalc) Renvoie le nom de l’objet calcul MathGraph32 calc. Attention : calc doit être un objet de type calcul MathGraph32 ou une mesure ou une fonction et pas une chaîne de caractères.

Création de transformations géométriques

On peut créer des transformations géométriques qui seront ensuite utilisées via AddPointIm, addLineIm, addRayIm et addCircleIm pour créer des images par cette transformation de points, droites, demi-droites, cercles (ou arcs de cercle). Si plusieurs objets de la figure utilisent la même transformation (par exemple une rotation) la figure sera plus rapide en créant d’abord la rotation puis en l’utilisant que des créer par exemple des points via addPointImRotation.

Nom de la fonction Syntaxe courte Explications
addTranslation addTranslation(a, b) Ajoute la translation de vecteur ab
addRotation addRotation(o, x) Ajoute la rotation de centre o et d’angle x
addDilation addDilation(o, x) Ajoute l’hompothétie de centre o et de rapport x
addSymCent addSymCent(o) Ajoute la symétrie centrale de centre o
addSymAx addSymAx(d) Ajoute la symétrie axiale d’axe d. d peut être une droite, une demi-droite ou un segment
addSimilitude addSimilitude(o, x, y) Ajoute la similitude directe de centre o, d’angle x et de rapport y.

Création d’images par transformations géométriques

On a vu ci-dessus qu’on pouvait créer des transformations géométriques.
On peut ensuite utiliser une telle transformation pour créer l’image d’objets par cette transformation.

Nom de la fonction Syntaxe courte Explications
AddPointIm addPointIm(a, transf, name, color, pointStyle) Crée l’image du point a par la transformation transf
addLineIm addLineIm(d, transf, name, color, lineStyle, thickness) Crée l’image de la droite d par la transformation transf
addRayIm addRayIm(d, transf, color, lineStyle, thickness) Crée l’image de la demi-droite d par la transformation transf
addCircleIm addCircleIm(c, transf, name, color, lineStyle, thickness) Crée l’image du cercle c (ou de l’arc de cercle c) par la transformation transf

Création courbes ou de lieux de points ou d’objets

Nom de la fonction Syntaxe courte Explications
addPointLocus addPointLocus(a, b, x, color, lineStyle, thickness) Ajoute un lieu de points généré par le point a et par le déplacement du point lié b, avec la couleur color, le style de ligne lineStyle et l’épaisseur thickness avec un nombre de points égal à x pour générer le lieu. x doit être une valeur numérique constante et pas une référence à un calcul ou une mesure déjà créés. b doit être un point lié (à une droite, demi-droite, segment, cercle, arc de cercle ou lieu de points).
addCurve addCurve(calc, x, color, lineStyle, thickness, rep) Ajoute la courbe de la fonction réelle calc (ou de nom calc) dans le repère rep avec pour couleur color, pour style de trait lineStyle, pour épaisseur thickness. Si le paramètre rep est omis et s’il y un seul repère dans la figure, celui-ci est utilisé par défaut. Si plusieurs repères sont présents, rep doit contenir le repère (or the tag of the frame).
addObjectLocus addObjectLocus(elt, a, x, color) Ajoute le lieu de l’objet elt généré par les positions du point lié a avec x positions calculées (x peut être dynamique). L’objet graphique elt doit dépendre du point lié a. On peut préciser la couleur du lieu d’objets mais son style (trait ou épaisseur de trait par exemple) sont ceux de l’objet elt.

Création et utilisation de matrices

Vous pouvez profiter de toute la puissance du calcul matriciel (à coefficients réels dans MathGraph32 en ajoutant une matrice et vous pouvez aussi créer des calculs matriciels permettant d’effectuer des opérations sur les matrices.
Une matrice se crée à l’aide de la syntaxe suivante :

Nom de la fonction Syntaxe courte Explications
addMatrix addMatrix(nameCalc, mat) Ajoute une matrice nommée nameCalc suivant le paramètre mat

Dans la syntaxe ci-dessus, le paramètre mat est un tableau (array, list en Python) contenant les lignes de la matrice qui elles mêmes sont des listes contenant les éléments de la matrice. Chacune des lignes doit avoir le même nombre d’éléments.
Exemple :
Si vous avez déjà créé deux calculs réels nommé a et b, la syntaxe suivante permet de créer une matrice de 2 lignes et 3 colonnes :

a = addCalc('a', 'pi + 2')
b = addCalc('b', 'a - 1')
mat = [[a, 2, 3],[4, 'b*2', 5]]
addMatrix('mat', mat)

On passe le calcul a comme élément de la première ligne et première colonne et pour l’élément de la deuxième ligne et deuxième colonne on passe la formule ’b*2’ qui est une formule MathGraph32 valide.

Un calcul matriciel se crée avec la syntaxe suivante :

Nom de la fonction Syntaxe courte Explications
addCalcMat addCalcMat(nameCalc, formula) Ajoute un calcul matriciel de nom nameCalc et de formule formula

Avec l’exemple ci-dessus, la ligne suivante créera une nouvelle matrice dont les termes sont le double de ceux de la matrice mat.
doublemat = addCalcMat(’doublemat’, ’2*mat’)

Modification d’objets déjà créés

Nom de la fonction Syntaxe courte Explications
giveFormulaTo giveFormulaTo(calc, formula) Donne au calcul ou à la fonction calc (ou de nom calc) la formule contenue dans la chaîne de caractères formula
setFreePointPosition setFreePointPosition(a, x, y) Donne au point libre a la position de coordonnées SVG (x, y). x et y doivent être des constantes.
setVisible setVisible(elt) Rend l’objet elt visible s’il était masqué. elt doit être un objet graphique (ou son nom ou son tag)
setHidden setHidden(elt) Rend l’objet elt masqué s’il était visible. elt doit être un objet graphique (ou son nom ou son tag)
setColor setColor(elt, color) Donne à l’objet elt la couleur color (par exemple ’red’ ou ’#0effaa’). elt doit être un objet graphique (ou son nom ou son tag)
setBackgroundColor setBackgroundColor(elt, backgroundColor) Donne à l’affichage de texte ou de LaTeX elt la couleur de fond backgroundColor et le rend opaque.
setLineStyle setLineStyle(elt, lineStyle) Donne à l’objet elt le style de trait lineStyle (’-’ ou ’—’ ou ’-..’ ou ’-...’ ou ’---’). elt doit être un objet graphique de type ligne (ou son nom ou son tag)
setThickness setThickness(elt, thickness) Donne à l’objet graphique elt l’épaisseur de trait thickness en pixels. thickness doit être une constante.
setPointNameOffset setPointNameOffset(a, offsetX, offsetY) décale le nom du point a d’un vecteur de coordonnées (offsetX, offsetY) en coordonnées SVG
setPointStyle setPointStyle(a, pointStyle) Donne au point a le style de point défini par la chaîne de caractères pointStyle (o O OO x X + <> [] .)
fixPoint fixPoint(a) Fige le point mobile a qui ne peut plus être déplacé avec la souris. a doit être un point mobile (ou son nom) : point libre ou point lié.
releasePoint releasePoint(a) Rend à nouveau le point mobile a déplaçable avec la souris. a doit être un point mobile (ou son nom) : point libre ou point lié.
activateTraceMode activateTraceMode(bActivate) bActivate doit être un booléen. S’il est à true, le mode trace est activé pour le figure. Sinon le mode trace est désactivé pour la figure.
setMarked setMarked(a) active le point a pour la trace. Si le mode trace est activé, le point a laisse une trace lors de ses déplacements.
setUnmarked setUnmarked(a) Désactive le point a pour la trace. Même si le mode trace est activé, le point a ne laisse plus une trace lors de ses déplacements.
removePointLink removePointLink(a) Le point a doit être un point lié. Retire la liaison entre le point a et l’objet auquel il est lié. Le point a devient ainsi un point libre.
setLinkPointPoint setLinkPointPoint(a, b) Le point a doit être un point libre. Transforme le point a en un point lié au point b (il suit b dans tous ses déplacements)
displayOnTop displayOnTop(elt) Reclasse l’affichage de l’objet graphique elt de façon à ce qu’il soit affiché au-dessus des autres objets de la figure.
reclassMax reclassMax(elt) Reclasse l’objet graphique elt le plus loin possible vers fin de la liste des objets créés
reclassMin reclassMin(elt) Reclasse l’objet graphique elt le plus loin possible vers le début de la liste des objets créés
reclassBefore reclassBefore(elt, elt2) Reclasse l’objet graphique elt avant l’objet graphique elt2
reclassAfter reclassAfter(elt, elt2) Reclasse l’objet graphique elt après l’objet graphique elt2

Animation of the figure with a timer

The easiest way to animate a fgure is tu use function addTimerButton that adds (bu default on the top llleft corner of the figure) a Start - Stop button, button associated with a function associated with the created timer.

Function name Short syntax Explanations
addTimerButton addTimerButton(callBack, k, x, y, tag) Adds a Start - Stop button launching a timer of frequency k (in seconds) and associated with function callBack. If only the two first parameters are supplied, the button is placed at the top left corner of the figure. Otherwise the button is placed at SVG coordinates (x, y). If parameter tag est present if is affected as MathGraph32 tag for the button (text object).

Example of Python that will call function draw with a frequency of 1/60 second :

def draw():
        global valph
        valph += 0.0075
        giveFormulaTo('ph', str(valph))
        updateDependantDisplay(ph)
addTimerButton(draw, 1/60)

Ecouteurs d’événements

Nom de la fonction Syntaxe courte Explications
addEltListener addEltListener(elt, eventName, callBack) Affecte à l’élément SVG représentant graphiquement l’objet elt une fonction de callBack à appeler quand l’événement de nom eventName est intercepté sur cet élément. La fonction de callback peut prendre en paramètre (ev, x, y) où ev est l’événement intercepté, et x et y les coordonnées SVG de l’endroit où cet événement a eu lieu. Exemples de valeurs pour eventName : ’mousedown’, ’mouseover’, ’touchdown’. Si vous utilisez l’éditeur de code Python vous pouvez mettre dans le paramètre callBack le nom d’une fonction Python prenant impérativement trois paramètres ev, x, y par exemple def zoomPlus(ev, x, y) : zoomFig(0, 0, 1.1). En Python, les paramètres doivent être présents même s’ils ne sont pas utilisés.
removeEltListener removeEltListener(elt, eventName) Retire de l’élément SVG représentant l’objet graphique elt le listener associé à l’événement de nom eventName, s’il en existe un.
addSvgListener addSvgListener(eventName, callBack) ajoute au SVG contenant la figure un écouteur d’événements sur l’événement de nom eventName. Exemples de valeurs pour eventName : ’mousedown’, ’mouseover’, ’touchdown’. Si vous utilisez l’éditeur de code Python vous pouvez mettre dans le paramètre callBack le nom d’une fonction Python prenant impérativement trois paramètres ev, x, y par exemple def zoomPlus(ev, x, y) : zoomFig(0, 0, 1.1). En Python, les paramètres doivent être présents même s’ils ne sont pas utilisés.
removeSvgListener removeSvgListener(eventName) retire du SVG de la figure l’écouteur d’événement associé à l’événement de nom eventName

Outils divers

Nom de la fonction Syntaxe courte Explications
deleteElt deleteElt(elt) Détruit l’objet graphique elt et ses descendants en retirant leur éventuelle représentation graphique
deleteObj deleteObj(obj) Détruit l’objet obj MathGraph32 et ses descendants en retirant leur éventuelle représentation graphique. obj doit être un objet MathGraph32 créé en utilisant l’API de MathGrph32
deleteAfter deleteAfter(elt) Détruit tous les objets créés après l’objet graphique elt et retire leur représentation graphique.
setAngleUnity setAngleUnity(unity) Change l’unité d’angle de la figure. Le paramètre chaîne de caractères unity peut être ’radian’ ou ’degree’. Fonction ç utiliser de préférence en début de code, par exemple pour utiliser le radian dans une figure de base avec repère orthonormé en degrés.
getElement getElement(elt) Renvoie l’objet graphique de tag elt (chaîne de caractères). Si aucun élément n’a pour tag elt, cherche un nom ou une droite de nom elt
getFigDim getFigDim() Pas d’arguments pour cette fonction qui renvoie un tableau [width, height] contenant les dimensions en pixels de la figure de travail (largeur en premier)
recalculate recalculate(brandom) Recalcule la figure. brandom est un booléen qui, s’il est omis est à false. Si brandom est à true les calculs de la figure utilisant la fonction rand() sont réactualisés.
updateDependantDisplay updateDependantDisplay(elt) Recalcule et redessine les objets dépendants de l’objet elt. Ici elt peut être un objet graphique ou de type calcul
addZoomButtons addZoomButtons(k, x, y) Ajoute en haut et à droite de la figure deux boutons pour zoomer ou dézoommer sur la figure par rapport à son centre. Les paramètres x et y sont optionnels et représentent les coordonnées SVG du bouton du haut. S’ils sont omis, le bouton est placé en haut et à droite de la figure. k est le coefficient multiplicateur d’agrandissement à utiliser (constante numérique, par exemple 1.1). A utiliser de préférence à la fin des instructions pour que ces boutons ne soient pas recouverts par les objets créés. Attention : Si on ouvre la figure générée dans MathGraph32, ces boutons seront inactifs.
addActionButton addActionButton(text, callBack, x, y, tag) Ajoute un bouton qui va, quand on clique dessus, exécuter la fonction callBack. Les paramètres x, y et tag sont optionnels. Si x ou y est omis, le bouton sera placé en haut et à gauche de la figure (coordonnées (10, 40) en coordonnées SVG). Si le paramètre tag est présent il est affecté au bouton qui est un objet affichage de texte. Attention : Si on ouvre la figure générée dans MathGraph32, ces boutons seront inactifs.
pointExist pointExist(a) Renvoie true si le point a de la figure existe et false sinon.
setUnity setUnity(a, b) La distance entre les points a et b devient la longueur unité de la figure. Si la figure contient déjà une longueur unité, une erreur est lancée.
getFuncImage getFuncImage(calc, x) Renvoie l’image de la valeur numérique x par la fonction calc. calc doit être une fonction numérique réelle MathGraph32 (d’une variable). Ne pas utiliser pour créer des objets dynamiques.
translateFig translateFig(x, y) Translate toute la figure d’un vecteur de coordonnées (x, y) en coordonnées SVG

[11, 2, 3], [4, 5, 6