Affichage 3D à partir d'un programme
Modérateur : xcasadmin
Affichage 3D à partir d'un programme
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
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
Re: Affichage 3D à partir d'un programme
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;
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;
Re: Affichage 3D à partir d'un programme
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 ?
Je me rends compte parfois sur certain programme que les lignes de code finissent par :; et non ;
Y a t-il une différence ?
Re: Affichage 3D à partir d'un programme
:; 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.
Re: Affichage 3D à partir d'un programme
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
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;
}:;
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: Affichage 3D à partir d'un programme
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
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
Re: Affichage 3D à partir d'un programme
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.
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.
Re: Affichage 3D à partir d'un programme
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)
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);
}:;
Re: Affichage 3D à partir d'un programme
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()).