var cube = function (e,f,g) { // e,f,g sommets coplanaires "consécutifs" var that= {}; that.s1 = e; that.s2= f; that.s3 =g; that.s4= calcul3D(f,e,g,sommec,vect); var areteNormale= calcul3D(f,e,vectc,f,g,vectc,prodVectc); var a= norme(e,f); areteNormale= prodRc(1/a,areteNormale); that.s5= somme(e,areteNormale); that.s6= somme(f,areteNormale); that.s7= somme(g,areteNormale); that.s8= somme(that.s4,areteNormale); that.getS4 = function () { return that.s4; } that.getS5 = function () { return that.s5; } that.getS6 = function () { return that.s6; } that.getS7 = function () { return that.s7; } that.getS8 = function () { return that.s8; } Polygon(that.s1.name+","+that.s2.name+","+that.s3.name+","+that.s4.name); Polygon(that.s1.name+","+that.s2.name+","+that.s6.name+","+that.s5.name); Polygon(that.s2.name+","+that.s3.name+","+that.s7.name+","+that.s6.name); Polygon(that.s3.name+","+that.s4.name+","+that.s8.name+","+that.s7.name); Polygon(that.s4.name+","+that.s1.name+","+that.s5.name+","+that.s8.name); Polygon(that.s5.name+","+that.s6.name+","+that.s7.name+","+that.s8.name); return that; }; function arbre(o,p,q,n) { if (n>0) { var c= cube(o,p,q); var no1= calcul3D(0.5+0.5/Math.sqrt(2),c.getS8(),prodRc,0.5-0.5/Math.sqrt(2),c.getS7(),prodRc,somme); var inter1=calcul3D(0.5+0.5/Math.sqrt(2),c.getS7(),prodRc,0.5-0.5/Math.sqrt(2),c.getS8(),prodRc,somme); var np1= calcul3D(no1,0.5,c.getS7(),c.getS6(),vectc,prodRc,0.5,o,c.getS5(),vectc,prodRc,sommec,somme); var nq1= calcul3D(inter1,0.5,c.getS7(),c.getS6(),vectc,prodRc,0.5,o,c.getS5(),vectc,prodRc,sommec,somme); var no2= calcul3D(0.5+0.5/Math.sqrt(2),c.getS6(),prodRc,0.5-0.5/Math.sqrt(2),c.getS5(),prodRc,somme); arbre(no1,np1,nq1,n-1); arbre(no2,nq1,np1,n-1); } }