bornes d'un curseur

Utilisation de Xcas pour Firefox et les navigateurs compatibles

Modérateur : xcasadmin

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

bornes d'un curseur

Message par alb » mer. janv. 25, 2023 12:23 pm

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

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: bornes d'un curseur

Message par parisse » mer. janv. 25, 2023 3:51 pm

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);

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: bornes d'un curseur

Message par alb » mer. janv. 25, 2023 4:56 pm

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

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: bornes d'un curseur

Message par parisse » jeu. janv. 26, 2023 8:49 am

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]

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: bornes d'un curseur

Message par alb » jeu. janv. 26, 2023 9:13 pm

ok c'est vu, merci :-)

Répondre