Tetraedro

Tetraedro en equilibrio sobre unha aresta

 

 

 

  

//Tetraedro en equilibrio sobre unha aresta.

module tetraedro_en_equilibrio_sobre_unha_aresta(aresta=1){

// Semiaresta
d=aresta/2;

// Cota non nula
h=sqrt(2)*d;

polyhedron(

points=[
[-d,0,0],
[d,0,0],
[0,-d,d*sqrt(2)],
[0,d,h]
],

triangles=[[0,2,1],[1,2,3],[1,3,0],[3,2,0]]

);

}

//Usamos o módulo

tetraedro_en_equilibrio_sobre_unha_aresta();

Tetraedro sobre unha cara

 

 

  

//Tetraedro sobre unha cara.


module tetraedro_sobre_unha_cara(aresta=1){

// Lado das caras
l=aresta;

// Altura das caras
hc=(sin(60)*l);

// Altura do tetraedro
ht=sqrt(pow(l,2)-pow(((2/3)*hc),2));

polyhedron(

points=[
[(-2/3)*hc,0,0],
[(1/3)*hc,-l/2,0],
[(1/3)*hc,l/2,0],
[0,0,ht]
],

triangles=[[0,3,1],[1,3,2],[2,3,0],[0,1,2]]

);

}

//Usamos o módulo

tetraedro_sobre_unha_cara();

Tetraedro (con posibilidade de elexir a posición)

 

Este módulo refírese aos módulos anteriores, polo que é preciso incluílos no arquivo.

Reseñamos aquí a parte do código específica para realizar a elección. 

 

 

 

// Tetraedro ("sobre unha cara", "en equilibrio sobre unha aresta")

module tetraedro(aresta=1,posicion="sobre unha cara"){

if (posicion=="en equilibrio sobre unha aresta"){
tetraedro_en_equilibrio_sobre_unha_aresta(aresta);
}

else{

if (posicion=="sobre unha cara"){
tetraedro_sobre_unha_cara(aresta);
}

}

}

// Usamos o módulo

tetraedro();