pas de element() en geometrie 3d

Utilisation de Xcas

Modérateur : xcasadmin

dlefur
Messages : 60
Inscription : dim. mai 04, 2008 1:58 pm
Localisation : São Paulo, Brésil
Contact :

pas de element() en geometrie 3d

Message par dlefur » jeu. juin 19, 2008 12:20 pm

Bonjour,

je veux illustrer la section d'un cube par des plans parallèles en utilisant un paramètre a :

Code : Tout sélectionner

c:=3 ;
(A:=point(0,0,0)),(B:=point(c,0,0)),(C:=point(c,c,0)),(D:=point(0,c,0)),(E:=point(0,0,c)),(F:=point(c,0,c)),(G:=point(c,c,c)),(H:=point(0,c,c)) ;
affichage(polyedre(A,B,C,D,H,G,F,E),noir+line_width_3) ;
a:=element(0 .. 10,3.0) ;
affichage(plan(x+y+z=a),jaune+line_width_2) ;
affichage(inter(plan(x+y+z=a),polyedre(A,B,C,D,H,G,F,E)),bleu+line_width_4) ;
Mais lorsque j'appuie sur la flèches pour faire varier ce paramètre, il varie de trois fois le pas !

Sinon, je ne maitrise pas bien la différence entre element et assume. Dans ce cas, Est-ce bien element que je dois utiliser ?

Et bravo pour ce module 3d, c'est vraiment très sympa ! Voici ce que j'ai fait récemment avec :

- des patrons dépliables :

http://mathsp.tuxfamily.org/spip.php?article176

- des sections de solides :
http://mathsp.tuxfamily.org/spip.php?article174

jjbat
Messages : 29
Inscription : jeu. juin 28, 2007 8:11 am
Localisation : Toulouse
Contact :

Message par jjbat » jeu. juin 19, 2008 1:20 pm

Je ne reproduis pas ton problème en utilisant ton code, le pas semble être, par défaut, de 0.1.
En tapant dans la ligne de commande

Code : Tout sélectionner

a:=element(0 .. 10,3.0,0.01) ;
tu fixes le pas à 0.01. Tu peux le modifier par clic droit dans le curseur a affiché dans la fenêtre 3d.

Pour ce qui est de la différence entre assume et element pas de différence dans la fenêtre graphique mais une différence du point de vue calcul dans la gestion du curseur.

Code : Tout sélectionner

 ]a:=element(0 .. 10,3.0,0.01) ;
P:=plan(x+y+z+a=0);
P est affiché dans la fenêtre 3d, mais la réponse dans la ligne de commande est:
pnt(pnt[hyperplan([1,1,1],point[0,0,3]),0])

alors qu'avec

Code : Tout sélectionner

assume(a=[3,0,10,0.01]);
P:=plan(x+y+z+a=0);
P est affiché dans la fenêtre 3d, mais la réponse dans la ligne de commande est:
pnt(pnt[hyperplan([1,1,1],point[0,0,a]),0])

Et si dans ton code on passe par assume au lieu de élément, on est déçu du résultat...
Bernard nous en dira plus.

J-Joël Bataille

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

Message par parisse » jeu. juin 19, 2008 1:54 pm

Belles captures d'ecran en effet!
La difference entre assume et element c'est qu'un parametre defini par assume sera conserve formel dans un calcul exact alors que s'il est defini par element il prend sa valeur numerique. Lorsqu'un calcul fait intervenir une quantite approchee (par exemple a cause d'un forcage par evalf) un curseur formel (defini par assume) sera remplace par sa valeur numerique ce qui permet la represention graphique. Le curseur formel est interessant si on veut etablir des resultats de geometrie analytique tout en visualisant une figure.
L'intersection plan/polyedre ne marche pas lorsque le curseur est formel, parce qu'il n'est pas possible de donner une formule simple pour l'intersection en fonction de a (il faudrait probablement mettre des piecewise...). De plus, je n'ai pas encore une fonction inter completement satisfaisante pour plan/polyedre car les aretes de l'intersection ne sont pas reliees entre elles.

Paulm
Messages : 27
Inscription : jeu. mai 29, 2008 6:06 am
Localisation : Epinal Vosges France

Message par Paulm » jeu. juin 19, 2008 8:31 pm

J'ai eu le même problème d'incrémentation pour un curseur. Il me semble l'avoir "résolu" en ne mettant qu'une définition par ligne de commande ...

dlefur
Messages : 60
Inscription : dim. mai 04, 2008 1:58 pm
Localisation : São Paulo, Brésil
Contact :

Message par dlefur » jeu. juin 19, 2008 9:41 pm

Merci pour les réponses.

le problème va et vient, lorsque je manipule les boutons du curseur. J'ai recopié une à une les commandes dans un autre fichier et je n'arrive pas à reproduire l'erreur !

C'est rageant ! :evil:

Répondre