void BlocMinute::BuildAndDisplay()
{
	float cos60 = cosf(DEGREES_TO_RADIANS(60.0));
	float sin60 = sinf(DEGREES_TO_RADIANS(60.0));
	float eHauteur = 0.5;
	float eHauteurTiges = 0.8;
	Point3D* pts = new Point3D[120 + 4 * 2];
	
	int nb = 0;
	// Point central
	//pts[nb++] = Point3D(cos60 + _longBase, 0.0, 0.0);

	// Faces gauche
	pts[nb++] = Point3D(_longBase + cos60, 0.0, _longBase/2);
	pts[nb++] = Point3D(cos60 + _longBras, 0.0, sin60 + _largBras);
	pts[nb++] = Point3D(cos60, 0.0, sin60 + _largBras);

	// Faces arcs
	int iArc1 = nb;
	for(int slice = 60; slice >= -60; slice--)
	{
		pts[nb++] = Point3D(_rayon * cosf(DEGREES_TO_RADIANS(slice)), 0.0, _rayon *  sinf(DEGREES_TO_RADIANS(slice)) );
	}
	int iArc2 = nb;
		
	// Faces droites
	pts[nb++] = Point3D(cos60, 0.0, - sin60 - _largBras);
	pts[nb++] = Point3D(cos60 + _longBras, 0.0, - sin60 - _largBras);
	pts[nb++] = Point3D(_longBase + cos60, 0.0, -_longBase/2);

	//glPolygonMode(GL_FRONT, GL_LINE);

	Material mat = Material();
	mat.ToChrome();
	mat.Enable();
	
	// Face du bas gauche
	glBegin(GL_TRIANGLE_FAN);
		for(int i=0; i<=iArc1 + 60; i++)
			glVertex3f(pts[i]._x, pts[i]._y, pts[i]._z);
	glEnd();

	// Face du bas droit
	glBegin(GL_TRIANGLE_FAN);
		glVertex3f(pts[nb-1]._x, pts[nb-1]._y, pts[nb-1]._z);
		for(int i=iArc1 + 60 ; i< nb-1; i++)
			glVertex3f(pts[i]._x, pts[i]._y, pts[i]._z);
	glEnd();

	// On relie les 2 faces du bas de droite et gauche
	glBegin(GL_TRIANGLE_STRIP);
		glVertex3f(pts[nb-1]._x, pts[nb-1]._y, pts[nb-1]._z);
		glVertex3f(pts[iArc1+60]._x, pts[iArc1+60]._y, pts[iArc1+60]._z);
		glVertex3f(pts[0]._x, pts[0]._y, pts[0]._z);
	glEnd();

	// Face du haut gauche
	glBegin(GL_TRIANGLE_FAN);
		for(int i=0; i<iArc1; i++)
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur, pts[i]._z);
		for(int i=iArc1; i<=iArc1 + 60; i++)
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur * eHauteur, pts[i]._z);
	glEnd();

	// Face du haut droit
	glBegin(GL_TRIANGLE_FAN);
		glVertex3f(pts[nb-1]._x, pts[nb-1]._y + _hauteur, pts[nb-1]._z);
		for(int i=iArc1 + 60 ; i< iArc2; i++)
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur * eHauteur, pts[i]._z);
		for(int i=iArc2 ; i< nb-1; i++)
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur, pts[i]._z);
	glEnd();

	// On relie les 2 faces du haut de droite et gauche
	glBegin(GL_TRIANGLE_STRIP);
		glVertex3f(pts[nb-1]._x, pts[nb-1]._y + _hauteur, pts[nb-1]._z);
		glVertex3f(pts[iArc1+60]._x, pts[iArc1+60]._y + _hauteur * eHauteur, pts[iArc1+60]._z);
		glVertex3f(pts[0]._x, pts[0]._y + _hauteur, pts[0]._z);
	glEnd();

	// Faces de cotés
	glBegin(GL_TRIANGLE_STRIP);
		for(int i=0; i<iArc1; i++)
		{
			glVertex3f(pts[i]._x, pts[i]._y, pts[i]._z);
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur, pts[i]._z);
		}
		for(int i=iArc1 ; i<iArc2; i++)
		{
			glVertex3f(pts[i]._x, pts[i]._y, pts[i]._z);
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur * eHauteur, pts[i]._z);
		}
		for(int i=iArc2; i<nb; i++)
		{
			glVertex3f(pts[i]._x, pts[i]._y, pts[i]._z);
			glVertex3f(pts[i]._x, pts[i]._y + _hauteur, pts[i]._z);
		}
		glVertex3f(pts[0]._x, pts[0]._y, pts[0]._z);
		glVertex3f(pts[0]._x, pts[0]._y + _hauteur, pts[0]._z);
	glEnd();

	mat = Material();
	mat.ToRuby();
	mat.Enable();
	
	float angle = 2;
	Point3D pCentre = Point3D(_rayon, _hauteur*eHauteur/1.15, 0);
	for(int i=-60; i<=60; i+=2)
	{
			
		glPushMatrix();

			float rad = DEGREES_TO_RADIANS(i);
			glRotatef(2.0, 0.0, 0.0, 1.0);
			glTranslatef(cosf(rad) * pCentre._x + sinf(rad) * pCentre._z , pCentre._y - (60-abs(i)) * 0.001, -sinf(rad) * pCentre._x + cosf(rad) * pCentre._z);
			glRotatef(i, 0.0, 1.0, 0.0);
				
			if(abs(i)<=20)
				glRotatef(20, 0.0, 0.0, 1.0);
			else if(abs(i) > 20 && abs(i) <= 30)
				glRotatef(20, 0.0, 0.0, 1.0);
			else if(abs(i) > 30 && abs(i) <= 40)
				glRotatef(25, 0.0, 0.0, 1.0);
			else if(abs(i) > 40 && abs(i) <= 50)
				glRotatef(27.5, 0.0, 0.0, 1.0);
			else if(abs(i) > 50)
				glRotatef(30, 0.0, 0.0, 1.0);

			glTranslatef(_largBras * 0.25, 0.0, 0.0);
			glScalef(i%5==0?_largBras * 0.35:_largBras*0.35/2, _largBase/(60 * 1.5), _largBase/(60 * 1.5));

			glPushMatrix();
				glutSolidCube(1);
			glPopMatrix();
		glPopMatrix();
	}

	mat.Disable();

	delete pts;
}