J'aimerais faire un lieu en 3D avec Xcas,
cf fin du fichier :
http://math.univ-lyon1.fr/irem/IMG/pdf/partent-2.pdf
est ce qu'il y aurait mieux ? (du point de vue de la méthode utilisée mais également du point de vue de l'affichage du résultat)
un lieu en 3D
Modérateur : xcasadmin
un lieu en 3D
Dernière modification par jmmeny le dim. déc. 07, 2008 6:03 pm, modifié 1 fois.
Tout d'abord, si on veut suivre l'esprit de ce que vous avez fait en 2-d avec geogebra.
En 2-d on ouvre un niveau de géométrie, on clique un point ou on définit A:=point(0,0) au niveau 1, puis on tape dans le niveau 2
test:=floor(abscisse(A))^2+floor(ordonnee(A))^2==4
puis dans le niveau 3:
trace(M:=ifte(test,A,0))
Ensuite on passe en mode pointeur, et on bouge A à la souris.
En 3-d on peut faire la même chose, mais ca ne donne pas des résultats aussi facilement: on ouvre un niveau de géo 3-d puis
A:=point(2,0.2,0.3)
test:=floor(abscisse(A))^2+floor(ordonnee(A))^2+floor(cote(A))^2==4
trace(M:=ifte(test,A,0))
Puis on passe en mode pointeur et on fait bouger A (A bouge dans le plan indiqué en pointillé, la molette de la souris permet de faire changer ce plan).
Votre programme donne des résultats beaucoup plus exploitables, mais il est un peu lent. Voici une version légèrement modifiée qui est plus rapide
Ce programme est un peu plus rapide que le votre parce qu'à chaque fois que l'on modifie une liste ou une séquence elle est recopiée entièrement (sauf si on utilise =< au lieu de := mais il faut alors connaitre la taille de la liste), l'utilisation de variables intermédiaires évite d'avoir des listes trop longues à recopier à chaque fois dans la boucle intérieure.
Je vous conseille le mode par défaut de visualisation 3-d (pas le mode ortho). Si vous n'arrivez pas à visualiser comme vous le voulez, essayez dans un niveau normal (pas de géométrie)
gl_quaternion=[-0.4932,-0.29883,-0.49739,0.64812],partiedulieu()
vous aurez un affichage qui me semble assez pertinent.
En 2-d on ouvre un niveau de géométrie, on clique un point ou on définit A:=point(0,0) au niveau 1, puis on tape dans le niveau 2
test:=floor(abscisse(A))^2+floor(ordonnee(A))^2==4
puis dans le niveau 3:
trace(M:=ifte(test,A,0))
Ensuite on passe en mode pointeur, et on bouge A à la souris.
En 3-d on peut faire la même chose, mais ca ne donne pas des résultats aussi facilement: on ouvre un niveau de géo 3-d puis
A:=point(2,0.2,0.3)
test:=floor(abscisse(A))^2+floor(ordonnee(A))^2+floor(cote(A))^2==4
trace(M:=ifte(test,A,0))
Puis on passe en mode pointeur et on fait bouger A (A bouge dans le plan indiqué en pointillé, la molette de la souris permet de faire changer ce plan).
Votre programme donne des résultats beaucoup plus exploitables, mais il est un peu lent. Voici une version légèrement modifiée qui est plus rapide
Code : Tout sélectionner
partiedulieu():={
local a,b,c,dx,dy,dz,resa,resb,resc;
dx:=0.1; dy:=0.1; dz:=0.1;
resa:=NULL;
for (a:=0;a<=3;a+=dx){
resb:=NULL;
for (b:=0;b<=3;b+=dy){
resc:=NULL;
for (c:=0;c<3;c+=dz){
if (floor(a)^2+floor(b)^2+floor(c)^2=4)
resc:=resc,point(a,b,c,affichage=epaisseur_point_4);
}
resb:=resb,resc;
}
resa:=resa,[resb];
}
return resa;
}
:;
Je vous conseille le mode par défaut de visualisation 3-d (pas le mode ortho). Si vous n'arrivez pas à visualiser comme vous le voulez, essayez dans un niveau normal (pas de géométrie)
gl_quaternion=[-0.4932,-0.29883,-0.49739,0.64812],partiedulieu()
vous aurez un affichage qui me semble assez pertinent.