Affichage 3D à partir d'un programme

Utilisation de Xcas

Modérateur : xcasadmin

esuquet
Messages : 4
Inscription : jeu. avr. 25, 2013 8:42 am

Affichage 3D à partir d'un programme

Message par esuquet » jeu. avr. 25, 2013 9:41 am

Bonjour,

lorsque je crée le programme suivant et le lance les trois points ne s'affichent pas.
Pourriez vous m'expliquer pourquoi ?
[Mon but final est en fait de tracer une courbe 3D point par point]

eqa2():={
local A,B,C;
A:=point([1,2,3]);
B:=point([0,2,3]);
C:=point([-1,2,-3]);
}:;

Merci par avance pour vos réponses

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

Re: Affichage 3D à partir d'un programme

Message par parisse » jeu. avr. 25, 2013 9:58 am

Il faut renvoyer la liste des objets géométriques à afficher, ici par exemple finir par
return A,B,C;
Pour une courbe point par point, initialisez une liste vide à L:=[]; puis ajoutez au fur et à mesure les points dans la liste, par exemple pour k de 0 jusque n faire ... L[k]:=objet; fpour; et terminer par return L;

esuquet
Messages : 4
Inscription : jeu. avr. 25, 2013 8:42 am

Re: Affichage 3D à partir d'un programme

Message par esuquet » ven. avr. 26, 2013 6:26 am

Merci ! Ca marche !
Je me rends compte parfois sur certain programme que les lignes de code finissent par :; et non ;
Y a t-il une différence ?

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

Re: Affichage 3D à partir d'un programme

Message par parisse » ven. avr. 26, 2013 7:00 am

:; veut dire ne pas afficher la réponse, c'est un raccourci pour la commande nodisp() qui renvoie Done au lieu de l'affichage normal.

esuquet
Messages : 4
Inscription : jeu. avr. 25, 2013 8:42 am

Re: Affichage 3D à partir d'un programme

Message par esuquet » ven. avr. 26, 2013 8:22 am

Rebonjour et merci encore pour tes réponses.
Mon programme ci dessous ne fonctionne pas.
Il me met à la compilation parsing JD
Je ne vois pas pourquoi

Code : Tout sélectionner


orbite():={
  local G,h,n,k,J,JD,S,GG,L:=[],masse:=[];
  J:=matrix(6,1); JD:=matrix(6,1,0); 
  J(1,1):=-3.5023653;J(2,1):=-3.8169847;J(3,1):=-1.5507963;// Position de Jupiter
  J(4,1):=0.00565429;J(5,1):=-0.00412490;J(6,1):=-0.00190589; // Vitesse de Jupiter
  masse[1]:=  0.000954786104043 ; // Masse de jupiter
  masse[6]:= 1.00000597682; // Masse du Soleil
  GG:= 0.000295912208286 ; // Constante gravitationnel universelle
  S:=matrix(6,1,0); // Position et vitesse du Soleil
  h:=0.01; // le pas
  pour n de 0 jusque 10 faire
     pour k de 1 jusque 3 faire
       JD(k,1):=J(k,1);
     fpour;
     pour k de 4 jusque 6 faire
       JD(k,1):=-GG*masse[6]*J(k-3,1);
     fpour;
     J:=J+h*JD;
     L[n]:=point(J(1,1),J(2,1),J(3,1));
  fpour;
  return L;
}:;


frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Affichage 3D à partir d'un programme

Message par frederic han » ven. avr. 26, 2013 8:51 am

J est une matrice, il faut donc des crochets:

J[j,l]

la syntaxe J(j,l) veut dire la fonction J calculee en (k,l)

attention, en mode xcas les indices des matrices commencent a 0.

donc j'imagine plutot:

pour k de 0 jusque é faire
JD[k,0]:=J[k,0];
fpour;


Frederic

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

Re: Affichage 3D à partir d'un programme

Message par parisse » ven. avr. 26, 2013 9:27 am

En fait J(k,l) peut être utilisé pour *lire* la valeur d'une matrice en indices k et l numérotés à partir de 1, mais pas pour *écrire* dans la matrice, car il y a ambiguité avec la définition d'une fonction J d'arguments k et l. Donc il faut dans ce cas soit utiliser les [] et décaler les indices, soit utiliser la fonction sto (avec a:=b qui se traduit en sto(b,a)).
On peut sans doute un peu améliorer le code pour lever l'ambiguité (par exemple si un des arguments du membre de gauche n'est pas un identifieur) mais ça ne résoudrait pas tous les cas de toutes façons.

esuquet
Messages : 4
Inscription : jeu. avr. 25, 2013 8:42 am

Re: Affichage 3D à partir d'un programme

Message par esuquet » ven. avr. 26, 2013 1:54 pm

Parfait pour les matrices. Merci. Ca fonctionne bien avec les crochets.
Maintenant mon programme Copernic fonctionne bien tout seul.
Mais quand j'ecris le programme ci dessous, il ne veut pas tracer la sphere (en fait le soleil)

Code : Tout sélectionner

Copernicplus():={
  Copernic();
  sphere([0,0,0],1); 
}:;

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

Re: Affichage 3D à partir d'un programme

Message par parisse » ven. avr. 26, 2013 2:43 pm

Vous lancez le programme dans un niveau de calcul normal? Ca devrait pourtant afficher une sphère (par contre ça n'affichera rien de Copernic()).

Répondre