drawing dynamic shapes like sierpinski triangle

hi there!
what’s wrong with my code
i can’t see my expected resault it only shows a little weird shape on screen!
i wanna see a nerd hexagons


#include<glut.h>
GLfloat v[6][2]={{0.25,0.5},{0.75,0.0},{0.25,-0.5},{-0.25,-0.5},{-0.75,0.0},{-0.25,0.5}};
int n;
void motavazi(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d,GLfloat *e,GLfloat *f )
{
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(a);
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(b);
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(c);
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(d);
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(e);
    //glColor3f(0.0,0.0,0.0);
    glVertex2fv(f);

}
void divide_motavazi(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d,GLfloat *e,GLfloat *f,int m)
{
  GLfloat v0[2],v1[2],v2[2],v3[2],v4[2],v5[2];
  int j;
  if(m>0)
  {
      for(j=0;j<2;j++)
          v0[j]=(a[j]+b[j])/2;
            for(j=0;j<2;j++)
              v1[j]=(b[j]+d[j])/2;
                 for(j=0;j<2;j++)
                   v2[j]=(f[j]+d[j])/2;
                    for(j=0;j<2;j++)
                       v3[j]=(f[j]+e[j])/2;
                            for(j=0;j<2;j++)
                             v4[j]=(e[j]+c[j])/2;
                                for(j=0;j<2;j++)
                                  v5[j]=(a[j]+c[j])/2;
         divide_motavazi(v0,v1,v2,v3,v4,v5,m-1);
               


  }
  else
      motavazi(a,b,c,d,e,f);
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    //motavaziazla
    glBegin(GL_POLYGON);
    divide_motavazi(v[0],v[1],v[2],v[3],v[4],v[5],n);
     glEnd();
     glFlush();
}
void init()
{
    
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-3.0,3.0,-3.0,3.0);
    glMatrixMode (GL_MODELVIEW);
    glClearColor(1.0,1.0,1.0,1.0);//range pas zamine window
    glColor3f(0.0,0.0,0.0);//fill/draw with white
    //glShadeModel(GL_SMOOTH);
    //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
    //glPolygonMode(GL_FRONT,GL_LINE);

    
    
}
int main()
{
    n=4;;
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);      
    glutInitWindowSize(500,500);        
    //glutInitWindowPosition(0,0); 
    glutCreateWindow("2D Gasket");
    glutDisplayFunc(display);
    init();
    glutMainLoop();
}