Chaque ligne du source est soit
{commentaires} soit
{id} Entité (paramètres...)[options];
en gras, partie obligatoire
id est un commentaire pour JavaSketchpad, ici c'est un nom pour l'élément généré.
Caractères autorisés a-z A-Z 0-9 _ @ § # $ % & ~ | ! ? = : / ^ * + . - et espaces dans le nom (ignorés avant et après le nom)
Illégaux < > ( ) [ ] { } , ; \ ' " lettres accentuées et assimilés (ç €)
Les chiffres et espaces sont ignorés avant l'id, {24 T} est équivallent à {T} de même {24T} sans espace est {T}
(compatibilité avec des scripts existants)
En l'absence d'id (que des chiffres et espaces) un id est généré automatiquement sous la forme "typennn",
ou la valeur de label si elle existe, et le source est modifié (partout) en conséquence.
La syntaxe de Declic est aussi acceptée :
{id} {#num} Entité (paramètres...)[options];
Si id commence par # (symbole d'éléments intermédiaires de Declic), il est numéroté pour avoir un id unique.
(cette numérotation n'a lieu que pour une syntaxe Declic, sinon # est un caractère normal)
Les options... optionnelles sont séparées par des virgules et le tout entre [ ]
Par exemple :
{ ma construction }
{A} Point (200,300);
{B} Point (300,300)[label('B''')];
{AB} Segment (A,B)[yellow,layer(5)];
...
{C} Circle (D,E);
...
Intersect1 (AB,C);
Nota : dans les labels comme dans les autres champs textes un ' se code ' ',
le " étant interdit utiliser ' ' ' '
Exemple :
{B!} Point (300,300)[label('B''')]; pour un point affiché B'
Noter que l'id B' étant interdit, il a été noté B!
On peut 'importer' par copier-coller des "Construction value" existantes, non symboliques,
le compilateur se chargeant de générer des symboles.
Inversement, la seule façon de sauver son travail est de copier-coller le champ source ou
le champ construction value vers un fichier texte.
Pour insérer la construction dans une page Web, cela se fait dans la balise <applet<> de la page
Seul le 'construction value' peut être fourni à l'applet, un texte source est pour l'applet incompréhensible
Plutôt que tout taper à la main, des boites de sélection permettent d'ajouter/modifier la dernière ligne seulement de la construction.
Les symboles commençant par $ sont des paramètres, demandés lors de l'insertion par une boite de dialogue
Il doivent être déclarés dans la macro comme tels par une ligne :
{ $A='invite pour A', $X='invite pour X' .. }
Sinon le $ est un caractère ordinaire, les symboles ne sont pas substitués par une valeur qui n'est pas demandée !!
Les symboles commençant par % sont des symboles propres à la macro
Ils sont rendus uniques lors de l'insertion par ajout du numéro de macro dans la construction.
Sinon en dehors de l'insertion d'une macro, ces $ et % sont des caractères ordinaires.
Quelques macro sont prédéfinies à l'initialisation, plus à titre d'exemples.
La liste est réinitialisée si on recharge la page, toutes les macros personnelles créés ou modifiées sont perdues.
Les actions demandées (Add, Del, Edit) sont abandonnées si on fait autre chose.
Le source de la macro est à saisir manuellement (pas de possibilité d'utiliser les boites de sélection, qui sont sur une autre fenêtre !
On peut toutefois copier-coller une construction composée et testée de la fenêtre principale. (source)
Une macro avec paramètres ($..) doit comporter une ligne de commentaire définissant les invites correspondantes
Ces invites seront les textes utilisés dans la boite de dialogue lors de l'insertion de la macro.
Par exemple
{ conjugué de $m/($a,$b) } { $a='A', $b='B', $m='M' } {%r} Ratio/Points ($m,$b,$a,0,0,' ')[hidden]; {%s} Calculate (0,0,' ','A1+@sgn_@abs_1-@sqrtA+2*A1+/')(%r)[hidden]; {%N} Dilation/MarkedRatio ($b,$m,%s);
Lors de l'insertion de la macro, les invites 'A', 'B', 'M' sont utilisées lorsque le programmme demande
les noms des objets réels dans la boite de dialogue
Ces alias peuvent être descriptifs, par exemple :
{ $a='Extrémité', $b='Centre', $m='Point courant' }
C'est juste du texte pour la boite de dialogue.
La macro générée est alors, si on répond "P, Q, R" :
{ conjugué de R/(P,Q) } {%15r} Ratio/Points (R,Q,P,0,0,' ')[hidden]; {%15s} Calculate (0,0,' ','A1+@sgn_@abs_1-@sqrtA+2*A1+/')(%15r)[hidden]; {%15N} Dilation/MarkedRatio (Q,R,%15s);
Expressions arithmétiques
Les paramètres d'une macro peuvent être utilisés s'ils sont numérique dans des expressions arithmétiques
Une telle expression est notée entre « ». Exemple :
{%xgrid} Locus (%XX,%yg,%YY, «abs(ceil($Ymax) - floor($Ymin))*5 + 1»);
Les paramètres $Ymax et $Ymin sont utilisés pour calculer le nombre de points du Locus
Lors de l'insertion de cette macro, si on a répondu -2.5, 5.7 à l'invite pour $Ymin et $Ymax
la ligne (statique) générée est
{%5xgrid} Locus (%5XX,%5yg,%5YY, 46);
exécution du calcul : abs(ceil(5.7) - floor(-2.5))*5 + 1 = 46, puisque ceil(5.7) = 6 et floor(-2.5) = -3
Le 5 est le numéro de macro dans la construction (par exemple), comme d'hab pour les symboles avec %
Ces caractères « » "bizarre" pas sur le clavier sont insérés automatiquement par le bouton correspondant,
à l'emplacement du curseur.
La syntaxe des expressions est celles de JavaScript.Math (voir doc de JavaScript)
C'est à dire essentiellement :
Opérations + - * / et parenthèses, % (modulo, ne pas confondre avec le % utilisé dans les noms d'entités !)
Fonctions mathématiques abs(), floor(), ceil(), max( , ), min( , ), cos(), sqrt(), etc, les valeurs PI, E etc
Le - unaire
Le résultat est sensé être une valeur numérique
Ces expressions sont donc exclusivement à utiliser dans ce contexte
Il faut ajouter des parenthèses ou des espaces si les paramètres peuvent avoir des valeurs négatives :
«$A-$B» provoque une erreur si $B est négatif car est traduit dans un premier temps en 1--2 et erreur JavaScript
«$A-($B)» est OK : traduit en 1-(-2) = 3
«$A - $B» est aussi OK : traduit en 1 - -2) = 3
Nota : Les erreurs sont reportées directement par JavaScript et pas par le compilateur.
Si on sélectionne une autre macro dans la boite de sélection, c'est cette macro là qui est proposée à l'édition.
L'édition précédente est abandonnée.
Pour abandonner l'édition et pouvoir de nouveau insérer des macros, bouton Cancel,
ou sélectionner n'importe quel élément autre qu'une macro.
Si on ne modifiait pas le nom il proposerait de remplacer la macro existante
Si on n'appuyait pas sur Add, il modifierait direct la macro existante (on a demandé un Edit !),
même avec un nouveau nom : changement du nom de la macro éditée.
Point (numx, numx) Coin supérieur gauche = (0,0)
FixedPoint (numx, numy)
Midpoint (segment)
Point on object (straight|circle|polygon, num)
Intersect (straight, straight)
Intersect1 (straight|circle, circle)
Intersect2 (straight|circle, circle)
Segment (pointB, pointA) Orientées A→ B
Ray (pointB, pointA)
Line (pointB, pointA)
Perpendicular (straight, point) (Rotation -π/2)
Parallel (straight, point)
Bisector (pointA, center, pointB) (génère un Ray d'origine center)
Circle (center, point)
Circle by radius (center, dist|calc)
Circle interior (circle)
Polygon (point, point, point ...)
Reflection (obj, straight)
Dilation (obj, point, num)
Dilation/SegmentRatio (obj, center, segmentN, segmentD) segmentN/segmentD2
Dilation/3PtRatio (obj, center, pointA, pointD, pointN) AN/AD !! inverse de SegmentRatio
Dilation/MarkedRatio (obj, center, ratio|calc)
Rotation (obj, center, num)
Rotation/MarkedAngle (obj, center, pointA, pointO, pointB) angle (OA,OB)
Rotation/MeasuredAngle (obj, center, angle|calc)
Translation (obj, deltax, deltay) deltay > vers le haut
VectorTranslation (obj, pointA, pointB) A→B
Translation/FixedAngle/MarkedDistance (obj, dist|calc, num)
Translation/MarkedAngle/FixedDistance (obj, angle|calc, num)
Translation/MarkedAngle/MarkedDistance (obj, angle|calc, dist|calc)
Locus (point|straight, freepoint, path, num)
Colorized_Spectrum (obj, measure, min, max, 0/1/2) (0 = entre min-max, 1 = repeat, 2 allers-retours)
Colorized_Grayscale (obj, measure, min, max, 0/1/2)
Colorized_RGB (obj, measR, measV, measB, min, max, 0/1/2)
Colorized_HSV (obj, measH, measS, measV, min, max, 0/1/2)
Length (segment, numX, numY, string)
Angle (pointA, pointO, pointB, numX, numY, string) angle (OA,OB)
Perimeter (polygon, numX, numY, string)
Circumference (circle, numX, numY, string)
Radius (circle, numX, numY, string)
Area (circle|polygon, numX, numY, string)
Slope (straight, numX, numY, string) pente (tanα)
Distance (pointA, pointB, numX, numY, string)
Ratio/Segments (segmentN, segmentD, numX, numY, string) segmentN/segmentD
Ratio/Points (pointO, pointD, pointN, numX, numY, string) ON/OD !! inverse de Ratio/Segments
Calculate (numX, numY, prefixStr, exprStr)(measureA, ..., measureZ)
+ - / * ^ ! A-Z num, notation polonaise inversée. num doit être ≥0 (pas de - unaire)
@sin_ @cos_ @tan_ @abs_ @sqrt @ln__ @rond @trnc @sgn_ @asin @acos @atan @log_
@fx avec x = [A-Z]
Function (numX, numY, prefixStr, exprStr)(measureA, ..., measureZ)
exprStr contenant la variable 'x' muette en plus des paramètres A..Z
ShowButton (numX, numY, string)(obj1, obj2 ... objN)
HideButton (numX, numY, string)(obj1, obj2 ... objN)
ToggleVisibilityButton (X, Y, 'off|on')(obj1, ... objN)
MoveButton (numX, numY, speed, string)(point1a, point1b, point2a, point2b ... pointNa, pointNb) pointXb → pointXa (!!!)
AnimateButton (numX, numY, string)(point1, path1, point2, path2 ... pointN, pathN) pathX=straight|circle|polygon
(num1, num2 ... numN) liste de vitesses
(flag1_1, flag1_2 ... flag1_N) 0=infini, 1=une seule fois
(flag2_1, flag2_2 ... flag2_N) 0=trigonométrique|aller-retour, 1=horaire|aller
SimultaneousButton (numX, numY, string)(button1, button2 ... buttonN)
FixedText (numX, numY, string)
PeggedText (point, caption|measure)
ConcatText (numX, numY)(caption|measure1, caption|measure2 ... caption|measureN)
Image (numX, numY, urlstring) affiche une image, url dans le répertoire (codebase) de JavaSketchpad
ImageOnPoint (point, urlstring)
ImageBetweenPoints (PntA, PntB, urlstring) redimensionne l'image dans le rectangle contenant les deux points
Origin&Unit (origin, unitpoint) définit un système de coordonnés (grille)
CoordSysByAxes (axeX, axeY)
UnitCircle (circle) idem à partir d'un cercle
UnitPoint (origine , num) définit un point 'unité' draggable
AxisX (coord) trace l'axe Ox
AxisY (coord) trace l'axe Oy les points 0 et 1 de ces axes ne sont pas net (-200, +200 pixels !)
PlotXY (MesureX, coord, MesureY) affiche le point de coordonnées (X,Y)
PlotFixedXY (coords, X, Y)
FunctionPlot (func, coord, num, min, max, 0/1/2/3)
coord doit être un CoordSysByAxes un Origin&Unit ne marche pas.
0 : y = f(x), 1 : x = f(y), 2 : r = f(theta), 3 : theta = f(r).
Coordinates (Point, coord, numX, numY, string) mesure des coordonnées du point
#XY dans un calculate Y = 1 abscisse de l'élément X, Y = 2 ordonnée de l'élément X
Abscissa (Pnt, coord, X, Y, 'str')
Ordinate (Pnt, coord, X, Y, 'str')
CoordinateDistance (Pnt, Pnt, coord, X, Y, 'str')
Le format de cette balise est, pour JavaSketchpad :
<applet code="GSP.class" codebase="../jsp" archive="jsp5.jar" width="800" height="450"> <param name=Frame value=0> <param name=BackRed value=255> <param name=BackGreen value=255> <param name=BackBlue value=221> <param name=MeasureInDegrees value=1> ... autres paramètres d'applet .. <param name=Construction value=" {1 O} Point (90,350)[blue,label('(d)')]; {2 §x} Translation (1,200,0)[hidden]; {3 §Ko} Circle (1,2)[hidden]; {4 x} Point on object (3,0)[blue]; ... "> Texte alternatif affiché si Java ne fonctionne pas. </applet> |
Les paramètres d'applet <param name=... value=...> sont transmis à l'applet
Voir la doc du site de JavaSketchpad pour une description détaillée des divers paramètres possibles
Les plus importants sont :
La seule image disponible est 'url.gif' et les boutons 'img/*.bmp'
imglab.bmp=,
imghid.bmp=
,
imgthick.bmp=
,
imglay.bmp=
,
imgpi2.bmp=
,
imgpi3.bmp=
,
Car toutes les images doivent être dans le répertoire défini par "codebase" de l'applet, contenant le fichier jsp*.jar,
ou un sous répertoire.
dir/mathie.css (feuilles de style css) dir/math.css " dir/exe/genapp.html (l'interface html du compilateur) dir/exe/colors.html (la page html de palette) dir/exe/macro.html (la page html d'édition de macro) dir/exe_en/genapp.html idem en anglais dir/exe_en/colors.html " dir/exe_en/macro.html " dir/jsp/jspc.js (le Javascript du compilateur dir/jsp/colors.jar (l'applet Java de palette) dir/jsp/jsp5.jar (l'applet Java de JavaSketchpad, à extraire depuis le site de JavaSketchpad dir/jsp/jsp4.jar (l'ancienne version, plus disponible ailleurs) dir/jsp/url.gif (Image de test.) dir/imgc/*.gif|bmp (Icones du menu.)Puis lancer le compilateur par dir/exe/genapp.html
JavaSketchpad® est la propriété de Key Curriculum Press Inc.