			function get_triangle_normal(point1, point2, point3)
			{
				
				var result = new Array(3);
				var vettore1 = new Array(3);
				var vettore2 = new Array(3);

				vettore1[0] = point2[0]-point1[0];
				vettore1[1] = point2[1]-point1[1];
				vettore1[2] = point2[2]-point1[2];

				vettore2[0] = point3[0]-point1[0];
				vettore2[1] = point3[1]-point1[1];
				vettore2[2] = point3[2]-point1[2];

				result[0] = vettore1[1]*vettore2[2]-vettore1[2]*vettore2[1];
				result[1] = -(vettore1[0]*vettore2[2]-vettore1[2]*vettore2[0]);
				result[2] = vettore1[0]*vettore2[1]-vettore1[1]*vettore2[0];

				return result;
			}

			function get_triangle(point1, point2, point3)
			{
				var result = new Array(2,3);

				result[0][1] = point1;
				result[0][2] = point2;
				result[0][3] = point3;
				result[1] = get_triangle_normal(point1, point2, point3);

				return result;
			}

			function get_quadrilateral_normal(point1, point2, point3, point4)
			{
				var result = new Array(2,3);

				result[0] = get_triangle_normal(point1, point2, point4);
				result[1] = get_triangle_normal(point2, point3, point4);

				return result;
			}

			function get_quadrilateral(point1, point2, point3, point4)
			{
				var result = new Array(2,2,3,3);
				
				result[0][0][0] = point1;
				result[0][0][1] = point2;
				result[0][0][2] = point3;

				result[0][1][0] = point2;
				result[0][1][1] = point3;
				result[0][1][2] = point4;
				
				result[1] = get_quadrilater_normal(point1, point2, point3, point4);

			}
			
			function cube(dimensione, fillcolor, linecolor)
			{
        var punto0 = [-0.5*dimensione, -0.5*dimensione, 0.5*dimensione];
        var punto1 = [0.5*dimensione, -0.5*dimensione, 0.5*dimensione];
        var punto2 = [0.5*dimensione, 0.5*dimensione, 0.5*dimensione];
        var punto3 = [-0.5*dimensione, 0.5*dimensione, 0.5*dimensione];
        var punto4 = [-0.5*dimensione, -0.5*dimensione, -0.5*dimensione];
        var punto5 = [0.5*dimensione, -0.5*dimensione, -0.5*dimensione];
        var punto6 = [0.5*dimensione, 0.5*dimensione, -0.5*dimensione];
        var punto7 = [-0.5*dimensione, 0.5*dimensione, -0.5*dimensione];		
			
        this.points = [punto0, punto1, punto2, punto3, punto4, punto5, punto6, punto7];
        this.faces = [[0, 1, 2, 3], [1, 5, 6, 2], [5, 4, 7, 6], [4, 0, 3, 7], [3, 2, 6, 7], [0, 4, 5, 1]];
				this.normals = [[0, 0, 1], [1, 0, 0], [0, 0, -1], [-1, 0, 0], [0, 1, 0], [0, -1, 0]];
				this.center = [0, 0, 0];
				this.points_number = 8;
				this.faces_number = 6;
				this.vertex_number = 4;
				this.axis_x = [1, 0, 0];
				this.axis_y = [0, 1, 0];
				this.axis_z = [0, 0, 1];
				this.fillcolor = fillcolor;
				this.linecolor = linecolor;
			}	
			
			function get_letter(letter, dimensione, fillcolor, linecolor)
			{
			  var risultato = new Array();
          
        if (letter=="C")
        {
          for (var i=0; i<13;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          translate_solid([dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[8]);
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[9]);
          translate_solid([dimensione, 0, 0], risultato[10]);
          translate_solid([2*dimensione, 0, 0], risultato[11]);
          translate_solid([3*dimensione, 0, 0], risultato[12]);
          
        }
        
        if (letter=="O")
        {
          for (var i=0; i<19;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[8]);
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[9]);
          translate_solid([dimensione, 0, 0], risultato[10]);
          translate_solid([2*dimensione, 0, 0], risultato[11]);
          translate_solid([3*dimensione, 0, 0], risultato[12]);
          
          translate_solid([3*dimensione, 0, -dimensione], risultato[13]);
          translate_solid([3*dimensione, 0, -2*dimensione], risultato[14]);
          translate_solid([3*dimensione, 0, -3*dimensione], risultato[15]);
          translate_solid([3*dimensione, 0, -4*dimensione], risultato[16]);
          translate_solid([3*dimensione, 0, -5*dimensione], risultato[17]);
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[18]);
        }
        
        if (letter=="R")
        {
          for (var i=0; i<16;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          translate_solid([dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[8]);
          
          translate_solid([3*dimensione, 0, -5*dimensione], risultato[9]);
          translate_solid([3*dimensione, 0, -4*dimensione], risultato[10]);
          
          translate_solid([dimensione, 0, -3*dimensione], risultato[11]);
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[12]);
          
          translate_solid([3*dimensione, 0, -2*dimensione], risultato[13]);
          translate_solid([3*dimensione, 0, -dimensione], risultato[14]);
          translate_solid([3*dimensione, 0, 0], risultato[15]); 
        }
        
        if (letter=="M")
        {
          for (var i=0; i<17;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -5*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -4*dimensione], risultato[8]);
          
          translate_solid([3*dimensione, 0, -5*dimensione], risultato[9]);
          translate_solid([4*dimensione, 0, -6*dimensione], risultato[10]);
          
          translate_solid([4*dimensione, 0, -5*dimensione], risultato[11]);
          translate_solid([4*dimensione, 0, -4*dimensione], risultato[12]);
          translate_solid([4*dimensione, 0, -3*dimensione], risultato[13]);
          translate_solid([4*dimensione, 0, -2*dimensione], risultato[14]);
          translate_solid([4*dimensione, 0, -dimensione], risultato[15]);
          translate_solid([4*dimensione, 0, 0], risultato[16]);
        }
        
        if (letter=="H")
        {
          for (var i=0; i<17;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -3*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[8]);
          
          translate_solid([3*dimensione, 0, -3*dimensione], risultato[9]);
          translate_solid([4*dimensione, 0, -6*dimensione], risultato[10]);
          
          translate_solid([4*dimensione, 0, -5*dimensione], risultato[11]);
          translate_solid([4*dimensione, 0, -4*dimensione], risultato[12]);
          translate_solid([4*dimensione, 0, -3*dimensione], risultato[13]);
          translate_solid([4*dimensione, 0, -2*dimensione], risultato[14]);
          translate_solid([4*dimensione, 0, -dimensione], risultato[15]);
          translate_solid([4*dimensione, 0, 0], risultato[16]);
        }
        
        if (letter=="E")
        {
          for (var i=0; i<16;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[8]);
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[9]);
          
          translate_solid([dimensione, 0, -3*dimensione], risultato[10]);
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[11]);
          translate_solid([3*dimensione, 0, -3*dimensione], risultato[12]);
          
          translate_solid([dimensione, 0, 0], risultato[13]);
          translate_solid([2*dimensione, 0, 0], risultato[14]);
          translate_solid([3*dimensione, 0, 0], risultato[15]);
        }
        
        if (letter=="X")
        {
          for (var i=0; i<13;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([dimensione, 0, -2*dimensione], risultato[2]);
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[3]);
          translate_solid([dimensione, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([4*dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([4*dimensione, 0, -5*dimensione], risultato[8]);
          translate_solid([3*dimensione, 0, -4*dimensione], risultato[9]);
          translate_solid([3*dimensione, 0, -2*dimensione], risultato[10]);
          translate_solid([4*dimensione, 0, -dimensione], risultato[11]);
          translate_solid([4*dimensione, 0, 0], risultato[12]);

        }
        
        if (letter=="P")
        {
          for (var i=0; i<15;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -6*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[8]);
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[9]);
          
          translate_solid([3*dimensione, 0, -5*dimensione], risultato[10]);
          translate_solid([3*dimensione, 0, -4*dimensione], risultato[11]);
          translate_solid([3*dimensione, 0, -3*dimensione], risultato[12]);
          
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[13]);
          translate_solid([dimensione, 0, -3*dimensione], risultato[14]);
          
        }
        
        if (letter=="I")
        {
          for (var i=0; i<7;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);           
        }
        
        if (letter=="N")
        {
          for (var i=0; i<17;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([0, 0, -dimensione], risultato[1]);
          translate_solid([0, 0, -2*dimensione], risultato[2]);
          translate_solid([0, 0, -3*dimensione], risultato[3]);
          translate_solid([0, 0, -4*dimensione], risultato[4]);
          translate_solid([0, 0, -5*dimensione], risultato[5]);
          translate_solid([0, 0, -6*dimensione], risultato[6]);
          
          translate_solid([dimensione, 0, -5*dimensione], risultato[7]);
          translate_solid([2*dimensione, 0, -4*dimensione], risultato[8]);
          
          translate_solid([3*dimensione, 0, -3*dimensione], risultato[9]);
          translate_solid([4*dimensione, 0, -6*dimensione], risultato[10]);
          
          translate_solid([4*dimensione, 0, -5*dimensione], risultato[11]);
          translate_solid([4*dimensione, 0, -4*dimensione], risultato[12]);
          translate_solid([4*dimensione, 0, -3*dimensione], risultato[13]);
          translate_solid([4*dimensione, 0, -2*dimensione], risultato[14]);
          translate_solid([4*dimensione, 0, -dimensione], risultato[15]);
          translate_solid([4*dimensione, 0, 0], risultato[16]);    
        }
        
        if (letter=="T")
        {
          for (var i=0; i<11;i++)
          {
           risultato[i] = new cube(dimensione, fillcolor, linecolor);
          }
          
          translate_solid([2*dimensione, 0, 0], risultato[0]);
          translate_solid([2*dimensione, 0, -dimensione], risultato[1]);
          translate_solid([2*dimensione, 0, -2*dimensione], risultato[2]);
          translate_solid([2*dimensione, 0, -3*dimensione], risultato[3]);
          translate_solid([2*dimensione, 0, -4*dimensione], risultato[4]);
          translate_solid([2*dimensione, 0, -5*dimensione], risultato[5]);
          translate_solid([2*dimensione, 0, -6*dimensione], risultato[6]); 
          translate_solid([0, 0, -6*dimensione], risultato[7]);
          translate_solid([dimensione, 0, -6*dimensione], risultato[8]); 
          translate_solid([3*dimensione, 0, -6*dimensione], risultato[9]);
          translate_solid([4*dimensione, 0, -6*dimensione], risultato[10]);           
        }
        
        return risultato;      
         
			}

