//paramètres de la maille

a=2.5;
b=3;
c=3.5;

alpha=90;
gamma=90;
beta=70;

// coordonnées intermédiaires et translation

x=b*cos(gamma);
y=b*sin(gamma);

s=(2*b*c*cos(180-alpha)+x^2+y^2-b^2-2*a*c*cos(180-beta))/(2*(a-x));

ty=(x-a)*(s+c*cos(180-beta))/y;
tx=s+(y*ty)/(a-x);
tz=sqrt(c^2+a^2-2*a*c*cos(180-beta)-ty^2-(a+tx)^2);
 tz2= sqrt(c^2-ty^2-tx^2);

//vérification de la structure

if (c^2+a^2-2*a*c*cos(180-beta)-ty^2-(a+tx)^2>0) {

// construction des points
A=[0,0,0];
B=[a,0,0];
D=[x,y,0];
C=[a+x,y,0];
E=[tx,ty,tz];
F=B+E;
G=C+E;
H=D+E;

//construction de la maille 

points=[
A,B,C,D,E,F,G,H];
face=[[0,1,2,3],//sol
      [4,5,1,0],//au dessusi
      [7,6,5,4],//derrière
      [5,6,2,1],//droite
      [6,7,3,2],//gauche
      [7,4,0,3]];//devant
polyhedron(points,face);

//vérification des valeurs

echo("y",y);
echo("x",x);
echo("s",s);
echo("tx",tx);
echo("ty",ty);
echo("tz",tz);
v1=B-E;// B et E
v2=H-F;// F et H
v3=A-F;
v4=A-C;
nv1=norm(v1);
nv2=norm(v2);
nv3=norm(v3);
nv4=norm(v4);
echo(nv1,"norme de v1");
echo(nv2,"norme de v2");
echo(nv3,"norme de v3");
echo(nv4,"norme de v4");
echo(c^2-ty^2-tx^2);
echo("E-H",norm(E-H));
echo("F-G",norm(F-G));
echo(tz2);
}
else 
    //si ça ne marche pas 
    color([1,0.8,0]){ linear_extrude(4){text("erreur",font="Comic Sans MS:style= Bold");}};