Référence du langage Eidolang
Eidolang est la représentation textuelle d'une figure Eidograph. Une figure est un script : des commandes créent des objets, des expressions établissent des dépendances, et le style et l'animation restent dans le même texte. Le glissement, les outils du canevas et les changements de propriétés finissent tous par réécrire ce script.
Cette page ne décrit que le langage actuel, Eidolang 0.2 ; elle ne contient aucune syntaxe retirée. Pour des scripts complets exécutables, consultez les projets d'exemple.
Squelette de script
Chaque script devrait commencer par une déclaration d'espace :
space plane
version 0.2
# Une commande par ligne ; # démarre un commentaire
point A -2 0
point B 2 0
segment base A B
point M = midpoint(A, B)space planesélectionne le dialecte 2D ;space solidsélectionne le dialecte 3D.version 0.2est facultatif. C'est la version du langage, pas la version du manifeste.eido.- Les noms sont sensibles à la casse et doivent être définis avant leur utilisation.
- Les littéraux d'angle nus sont en radians ; écrivez les valeurs en degrés explicitement, par exemple
45deg. - Les chaînes utilisent des guillemets doubles. Les couleurs peuvent utiliser des formes telles que
#3366cc.
Modèle de liberté
Chaque objet géométrique appartient exactement à un niveau :
| Niveau | Définition | Comportement |
|---|---|---|
| Libre | Les coordonnées ou valeurs sont littérales | Se déplace directement ou se modifie dans le panneau des propriétés |
| Lié | Utilise on … at … ou des coordonnées locales par rapport à un support | Se déplace uniquement sur son support |
| Dérivé | Utilise une expression = fondée sur d'autres objets | Ne peut pas être déplacé ; se met à jour quand ses entrées changent |
point A 0 0 # libre
point P on c at 0.25 # lié
point M = midpoint(A, P) # dérivéValeurs et expressions partagées
Les expressions scalaires prennent en charge + - * / ^, les parenthèses, les comparaisons et les opérations booléennes. Les constantes incluent pi, tau et e ; les fonctions courantes incluent sin, cos, tan, sqrt, abs, min, max, ainsi que des fonctions de distance et de vecteur.
Les propriétés d'objets peuvent alimenter des expressions ultérieures, comme base.length, c.radius et poly.area. let stocke la valeur de n'importe quelle expression, tandis que fn définit une fonction pour les tracés ou surfaces :
let half = base.length / 2
fn wave(x) = sin(x) * half
plot graph wave domain -6 6Les valeurs invalides ne font pas planter l'application. Les diagnostics signalent l'emplacement source et la raison, tandis que les objets en aval deviennent des enregistrements invalides ou d'avertissement.
Commandes du plan (2D)
Construire des objets de base
| Composant | Formes courantes |
|---|---|
| Point | point A x y, point P on path at t, point M = expr |
| Linéaire | segment s A B, line l A B, ray r A B, vector v A B |
| Cercle | circle c O radius r, circle c O through A |
| Ellipse et arc | ellipse e F1 F2 through P, arc a P1 P2 P3 |
| Polygone | polygon tri A B C |
| Constructions standard | midpoint M A B, parallel p A l, perpendicular p A l |
| Intersections | intersections xs pathA pathB |
Les résultats d'intersection sont de type list<point>. Préférez des sélecteurs stables tels que xs.nearest(A), xs.maxY ou xs.minX ; l'ordre derrière xs[0] peut changer pendant le mouvement.
Chemins, fonctions et régions
plot graph sin domain -6 6
curve loop (cos(t), sin(t)) t from 0 to tau samples 160
polar rose (2*cos(3*a)) a from 0 to tau
equation unit x^2 + y^2 = 1
locus trace P driver u samples 180
region disk = c
region lens = intersection(c1, c2)Segments, droites, demi-droites, cercles, ellipses, arcs, tracés de fonctions et lieux implémentent le comportement Path. Ils peuvent porter des points liés, s'intersecter entre eux et se composer avec subpath et pathjoin.
Transformations et repères
point Q = reflect(P, axis)
rotate tri2 tri around O by 30deg
translate c2 c by (2, -1)
scale big tri around O by 2
frame f O X
point L in f 1 0.5reflect, rotate, translate et scale sont disponibles à la fois comme fonctions d'expression et comme commandes. Les transformations de similitude préservent les types d'objets lorsque c'est possible.
Commandes solides (3D)
space solid
point3 O 0 0 0
point3 T 0 0 3
sphere ball O radius 2
cylinder body O T radius 1| Composant | Formes courantes |
|---|---|
| Points et lignes | point3, segment3, line3, ray3, vector3 |
| Plans et sphères | plane ground A B C, sphere s O radius r |
| Solides | box, prism, pyramid, cylinder, cone |
| Repères | frame3 f O X Y, point3 P in f x y z |
| Courbes spatiales | curve3, locus3 |
| Surfaces de fonction | surface waves f domain x0 x1 y0 y1 |
| Intersections | intersections3, plane_intersect_line, sphere_intersect_sphere |
| Transformations | reflect3, rotate3, translate3, scale3 |
En 3D, un point peut se lier à un segment, une droite, une demi-droite ou une surface de sphère. Un point de sphère utilise deux paramètres :
point3 P on ball atAngles 45deg 90degbox, prism, pyramid, cylinder et cone exposent des mesures telles que .volume, .surfaceArea et .centroid. curve3 et locus3 sont des objets d'affichage échantillonnés et ne sont actuellement pas des supports pour des points liés.
Paramètres, animation et mises en scène
param r 1 range 0.5 4 step 0.1
circle c O radius r
animate r duration 2s mode pingpong
stage result duration 1.2s reveal draw
show c transition draw duration 0.8sparamcrée un curseur dans le panneau Paramètres.animateprend en chargeloop,pingpongetonce.stagecrée des étapes de présentation séquentielles ;show,hide,clearet les modes de révélation contrôlent la présence.- La lecture 2D, la lecture 3D et l'export GIF/MP4 partagent la même chronologie.
Commandes de présentation
style base stroke #3366cc width 2 opacity 0.9
label base text "given segment"
textbox note -4 3 width 5 height 2 text "Drag A or B"
group helpers A B base
hide helpers transition fade duration 0.5sstyle contrôle la couleur, le remplissage, la largeur, l'opacité et les tailles de points/flèches ; la 2D prend aussi en charge les motifs de tirets. Un texte d'étiquette entièrement entouré de $$…$$ est rendu en LaTeX. textbox est réservé à la 2D.
Macros et assertions
def bisect(A, B) -> (M, b) {
midpoint M A B
perpendicular_bisector b A B
}
use bisect P Q -> M1 b1
assert dist(P, M1) == dist(M1, Q) tolerance 1e-6 note "M1 is midpoint"def/use réutilisent une construction et isolent ses noms internes pendant l'expansion. assert vérifie une relation et produit un avertissement ; cela ne contraint ni ne résout la figure.
Interroger les signatures exactes dans l'application
Cette page organise les commandes couramment utilisées par objectif. Pour des signatures exactes et complètes de la version installée :
- utilisez help dans l'éditeur Eidolang ;
- demandez à l'agent intégré d'appeler
list_commands; - appelez le même outil depuis un client MCP/REST externe.
La liste renvoyée provient directement du registre de l'analyseur syntaxique du dialecte actif, elle reste donc alignée sur la version installée.
