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
bornes d'un curseur
Modérateur : xcasadmin
Re: bornes d'un curseur
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);
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
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
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
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:
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
ok c'est vu, merci