Page 1 sur 1

bornes d'un curseur

Publié : mer. janv. 25, 2023 12:23 pm
par alb
session Xcas
les bornes du curseur ne sont pas respectees (on peut les depasser)
je note aussi que A,B:=point(0),point(1);carre(A,B,C,D); ne fonctionne pas

Re: bornes d'un curseur

Publié : mer. janv. 25, 2023 3:51 pm
par parisse
c'est bizarre, je vois bien le curseur se déplacer entre les 2 bornes, mais effectivement on peut dépasser les limites, peut-être que la définition du widget HTML a changé, en tout cas je n'ai rien changé moi-même.
Par contre je n'observe pas de bug si je fais A,B:=point(0),point(1);carre(A,B,C,D);

Re: bornes d'un curseur

Publié : mer. janv. 25, 2023 4:56 pm
par alb
le bug n'apparaît que lorsqu'on execute une deuxieme fois
dans la console:
sto pnt(pnt[1+i,536870912,C]) non autorisé! Erreur: Type Argument Incorrect
sto pnt(pnt[i,536870912,D]) non autorisé! Erreur: Type Argument Incorrect

Re: bornes d'un curseur

Publié : jeu. janv. 26, 2023 8:49 am
par parisse
Effectivement, alors que ca marche avec le nom de commande en anglais qui correspond (square) et la raison est un peu complexe.
Pour que carre(A,B,C,D) fonctionne, il faut que C et D ne soient pas évalués. L'instruction square utilise le mécanisme d'auto-quote, c'est-à-dire qu'il n'évalue pas ses arguments. Mais derrière le mécanisme de traduction pour la version JS de Xcas fonctionne en créant une variable carre dont la valeur est square, et l'auto-quote ne fonctionne pas pour une variable donc C et D sont évalués.
Je ne vois pas comment modifier cela. Il y a plusieurs méthodes pour contourner le problème:
  • utiliser square au lieu de carre
  • utiliser carre et quoter explicitement C et D: carre(A,B,quote(C),quote(D))
  • donner un nom à carre(A,B), par exemple q:=carre(A,B), puis stocker les sommets manquants C,D:=sommets(q)[2..3]

Re: bornes d'un curseur

Publié : jeu. janv. 26, 2023 9:13 pm
par alb
ok c'est vu, merci :-)