Poligon using the mouse

Hi, I’m triying to draw in the window a poligon using the mouse but when I do that, there’s an extra line that I don’t need and I don’t know what’s wrong, please help me :sorrow:

Here’s my code:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
#ifdef APPLE
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

int buffer[3400300];
int xa,ya,xb,yb;
int xc, yc, radio, lados=7;

void inicializa();
void Mouse(int button, int state, int x, int y);
void Motion(int x, int y);
void putPixel(int x, int y, int xb, int yb);
void lineaBres(int xa, int ya, int xb, int yb);
void poligono(int xc, int yc, int x, int y, int radio, int lados);

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50, 100);
glutInitWindowSize(400, 300);
glutCreateWindow(“Trazo de polígonos usando el Mouse”);
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 200.0, 0.0, 150.0);
glutDisplayFunc(inicializa);
glutMouseFunc(Mouse);
glutMotionFunc(Motion);
glutMainLoop();

return (0);

}

void inicializa()
{
glColor3f(0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
}

void Mouse(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
glReadPixels(0, 0, 400, 300, GL_RGB, GL_UNSIGNED_BYTE,buffer);
xc= x;
yc= 300-y;
}
else if(button == GLUT_LEFT_BUTTON && state == GLUT_UP)
{
glDrawPixels(0, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer);
}
}

void Motion(int x, int y)
{
glDrawPixels(400, 300, GL_RGB, GL_UNSIGNED_BYTE, buffer);
radio= sqrt((x-xc)(x-xc)+(y-yc)(y-yc));
poligono(xc, yc, x, y, radio, lados);
}

void poligono(int xc, int yc, int x, int y, int radio, int lados)
{
int i;
float angulo= atan2(y-yc, x-xc);

for(i= 0; i &lt;= lados; i++)
   {
       xa= x;
       ya= y;
       angulo= angulo+M_PI*2/lados;
       x= ceil(xc + radio * cos(angulo));
       y= ceil(yc + radio * sin(angulo));
       x= x/2;
       y= y/2;
       lineaBres(xa, ya, x, y);
   }

}

void putPixel(int xa,int ya, int xb, int yb)
{
glEnable(GL_LINE_SMOOTH);
glLineWidth(1.0);
glBegin(GL_LINE_STRIP);
glVertex2f(xa,ya);
glVertex2f(xb,yb);
glEnd();
}

void lineaBres(int xa, int ya, int xb, int yb)
{
int x, y, dx, dy, dezplazamientoX, dezplazamientoY, p;

dx= abs(xb-xa);
dy= abs(yb-ya);
x= xa;
y= ya;

if(xa&gt;xb)
  {
    dezplazamientoX= -1;
  }
else
    {
      dezplazamientoX= 1;
    }

if(ya&gt;yb)
  {
    dezplazamientoY= -1;
  }
else
    {
      dezplazamientoY= 1;
    }
putPixel(xa,ya,xb,yb);

if(dx&gt;=dy)
  {
    p= dx/2;
    while(x!=xb)
         {
           p= p-dy;
           if(p&lt;0)
             {
               y= y+dezplazamientoY;
               p= p+dx;
             }
           x= x+dezplazamientoX;
           putPixel(xa,ya,xb,yb);
         }
  }
else if(dy&gt;dx)
       {
         p= dy/2;
         while (y!=yb)
               {
                 p= p-dx;
                 if(p&lt;0)
                   {
                     x= x+dezplazamientoX;
                     p= p+dy;
                   }
                 y= y+dezplazamientoY;
                 putPixel(xa,ya,xb,yb);
               }
       }
glFlush();

}