|
||||||||||||||||||
Add Forum to Favorites | Send Topic To a Friend | View Forum FAQ | Track this topic |
Last Thread Next Thread ![]() |
| HOW To of Polygons |
|
![]() dqsh06 Member since: 10/23/2006 From: Tokyo, Japan |
||||
|
|
||||
| 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); } } } } |
||||
|
||||
All times are ET (US)![]() |
Last Thread Next Thread ![]() |
|