Home » Community » Forums » » HOW To of Polygons
  Intel sponsors gamedev.net search:   
[Control Panel] [Register] [Bookmarks] [Who's Online] [Active Topics] [Stats] [FAQ] [Search]

Add Forum to Favorites |  Send Topic To a Friend | View Forum FAQ | Track this topic


 Last Thread Next Thread 
 HOW To of Polygons
Post Reply 
i have made a routine of fill triangle as the method mentioned here. but it does not work. please give some comments.

-------------------------------------------------------------------------------
void fill_triangle1(int x1, int y1, int x2, int y2, int x3, int y3, byte color)
{
int miny, minyx;
int maxy, maxyx;
int midy, midyx;
float kia, kid, kda;

int tmp;

int x, y;

int xl, xr;

miny = y1; minyx = x1;
if(miny>=y2)
{
miny=y2; minyx = x2;
}
else if(miny>=y3)
{
miny=y3; minyx = x3;
}

maxy = y1; maxyx = x1;
if(maxy<=y2)
{
maxy=y2; maxyx=x2;
}
else if(maxy<=y3)
{
maxy=y3; maxyx=x3;
}

if(x1!=minyx&&x1!=maxyx)
{
midy= y1; midyx = x1;
}
else if(x2!=minyx&&x2!=maxyx)
{
midy = y2; midyx = x2;
}
else
{
midy = y3; midyx = x3;
}

tmp = (minyx-maxyx)<<8;
kia = (float)tmp/(miny-maxy);
tmp = (minyx-midyx)<<8;
kid = (float)tmp/(miny-midy);
tmp = (midyx-maxyx)<<8;
kda = (float)tmp/(midy-maxy);

for(y=miny; y<=maxy; y++)
{
if(y==miny)
{
xl=minyx<<8;
xr=minyx<<8;
plot_pixel(minyx, miny, color);

}
else if(y<=midy)
{
xl=xl+(int)kia;
xr=xr+(int)kid;

if(y<=miny+10)
printf("xl = %d, xr=%d \n", xl, xr);

x1=xl>>8;
x2=xr>>8;

if(x1>x2)
{
tmp=x1;
x1=x2;
x2=tmp;
}

for(x=x1;x<=x2;x++)
{
plot_pixel(x, y, color);
}

if(y==midy)
{
xr=midyx<<8;
}
}
else
{
xl = xl + (int)kia;
xr = xr + (int)kda;

x1=xl>>8;
x2=xr>>8;

if(x1>x2)
{
tmp=x1;
x1=x2;
x2=tmp;
}

for(x=x1;x<=x2;x++)
{
plot_pixel(x, y, color);
}

}
}
}

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

All times are ET (US)

Post Reply
 Last Thread Next Thread 
Forum Rules:
You may not post new threads
You may post replies
You may not edit your posts
You may not use HTML in your posts
Jump To:
Administrative Options: