Tétraèdre à partir d'une liste de ses sommets

N'oubliez pas de consulter les sujets avant de poser votre question, merci.

Tétraèdre à partir d'une liste de ses sommets

Messagepar Fabrice » 03 Jan 2015 02:04

Bonjour Patrick,
Je veux représenter un tétraèdre régulier et sa hauteur. L'idée de départ était de créer une liste des sommets et de les "récupérer" (S[0],S[1],...). Je n'ai pas réussi !

Code: Tout sélectionner
[view(-6,4,-2,5),view3D(-5,5,-5,5,-5,5), Marges(0,0,0,0),size(10),
 a:=6,h:=sqrt(2/3)*a,
 S:=[for k from 0 to 2*pi step 2*pi/3 do [a*exp(i*k),0] od,[0,0,h]],//liste des sommets
 a:=6,h:=sqrt(2/3)*a,
 A:=M(0,a,0),B:=rot3d(A,[M(0,0,0),vecK],2*pi/3),
 C:=rot3d(B,[M(0,0,0),vecK],2*pi/3),D:=M(0,0,h),
 T:=Tetra(A,B-A,C-A,D-A),
 G:=(A+B+C)/3,
 hiddenLines:=1,HideStyle:=userdash,
 Build3D(
 bdFacet(T,[border:=1, color:=slategray,contrast:=0.1]),
 bdLine([D,G])
 ),
 Display3D(),
    ] 

Merci,
Fabrice
Fabrice
 
Messages: 139
Inscription: 14 Août 2009 12:22

Re: Tétraèdre à partir d'une liste de ses sommets

Messagepar P.Fradin » 03 Jan 2015 11:31

Bonjour Fabrice,

Un point 3D est une liste de deux complexes, il y a donc un problème avec [0,0,h], et tu as aussi un point en trop dans la boucle for. Voici un correctif:
Code: Tout sélectionner
[view(-3.5,6.25,-3,4.5),view3D(-5,5,-5,5,-5,5), Marges(0,0,0,0),size(10),
     a:=6,h:=sqrt(2/3)*a,
     S:=[for k from 0 to 2 do [a*exp(2*i*k*pi/3),0] od],//liste des sommets
     A:=S[1,2], B:=S[3,2], C:=S[5,2], D:=[0,h], //lecture des sommets
     T:=Tetra(A,B-A,C-A,D-A),
     G:=(A+B+C)/3,
     hiddenLines:=1,HideStyle:=userdash,
     Build3D(
     bdFacet(T,[border:=1, color:=slategray,contrast:=0.1]),
     bdLine([D,G])
     ),
     Display3D()
          ]

TetraFab.png
TetraFab.png (11.24 Kio) Consulté 7482 fois

Si c'est le seul objet 3d que tu as dans ton image, tu n'es pas obligé d'utiliser Build3D() et Display3D(), tu peux faire à la place:
Code: Tout sélectionner
[view(-3.5,6.25,-3,4.5),view3D(-5,5,-5,5,-5,5), Marges(0,0,0,0),size(10),
     a:=6,h:=sqrt(2/3)*a,
     base:=[for k from 0 to 2 do [a*exp(2*i*k*pi/3),0] od],//liste des sommets de la base
     sommet:=[0,h],
     FillStyle:=full, FillColor:= slategray, Width:=8,
     Dpyramide(base,sommet,4), LineStyle:=userdash,
     Ligne3D([sommet, isobar3d(base)],0)
]
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Tétraèdre à partir d'une liste de ses sommets

Messagepar Fabrice » 03 Jan 2015 23:33

Bonsoir Patrick,
P.Fradin a écrit:tu as aussi un point en trop dans la boucle for.

Je m'en étais aperçu, mais j'ai oublié d'éditer mon message.

P.Fradin a écrit:Un point 3D est une liste de deux complexes


Donc la liste S contient 6 éléments ?

A:=S[1,2] veut donc dire que le point A est une liste qui contient les deux éléments de la liste L à partir de l'indice 1(inclus) ?

J'ai tapé dans la barre "commande" [for k from 0 to 2 do [a*exp(2*i*k*pi/3),0] od] en pensant que cela me retournerait les six éléments de la liste L mais non, cela retourne M[0,0,0]. Pourquoi ?
Merci,
Fabrice
Fabrice
 
Messages: 139
Inscription: 14 Août 2009 12:22

Re: Tétraèdre à partir d'une liste de ses sommets

Messagepar P.Fradin » 03 Jan 2015 23:56

Oui, S contient 6 complexes. S[1,2] désigne deux éléments de S à partir de l'indice 1, c'est donc le premier point; puis S[3,2] désigne deux éléments à partir de l'indice 3, c'est le point suivant, etc.
Quant à la commande elle renvoie [0,0,0] (et non M(0,0,0)) car la variable a n'étant pas définie, elle vaut Nil et donc chaque itération renvoie seulement la côte 0. Remplace a par sa valeur et tu auras bien 6 complexes (trois points 3D).
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Tétraèdre à partir d'une liste de ses sommets

Messagepar Fabrice » 04 Jan 2015 00:58

P.Fradin a écrit:Quant à la commande elle renvoie [0,0,0] (et non M(0,0,0)) car la variable a n'étant pas définie, elle vaut Nil et donc chaque itération renvoie seulement la côte 0. Remplace a par sa valeur et tu auras bien 6 complexes (trois points 3D).

Oups !!
Bah, oui !!
Bon, je vais me coucher, j'ai besoin de repos !
Fabrice
 
Messages: 139
Inscription: 14 Août 2009 12:22


Revenir vers Questions - Réponses

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 19 invités

cron