几何算法源码(包括多边形填充算法, 多边形裁剪算法
1
基本图形学图元生成,实现图形学经典图元直线,样条,多边形填充,裁剪等算法。
2022-11-05 09:28:30 30KB drawfunc 图元 图形学_多边形 图形裁剪
1
通用扫描线多边形填充算法.pdf
2022-07-12 09:12:20 174KB 文档资料
实验三计算机图形学多边形填充算法.pdf
2022-07-09 19:08:34 403KB 文档资料
本原代码集是我对计算机图形的编程实践,包括画直线、反走样直线、画圆、画椭圆、画矩形、画多边形、矩形填充、多边形填充、3D变换、光照、贴图等 -primitive code is the set of computer graphics programming practice, including line drawing, anti-aliasing line, Circle. painted oval, rectangular painting, drawing polygon, rectangle filling, polygon filling, 3D transformation, lighting, texture, etc.
2022-06-17 13:05:31 30KB 计算机图形
多边形填充 计算机图形学 TC 程序代码 多边形填充 计算机图形学 TC 程序代码
1
#include #include #include #include #include //////////////////////////////////////////////////////////////functions///////////////////////////////////////////////// void swap(float &m,float &n) { float temp=n; n=m; m=temp; } int sign(float a,float b)//sign() { int t; if(a>b) { t=1;} else if(adx) { swap(dx,dy); Flag=1; } else Flag=0; float Nerror=2*dy-dx; for(int i=1;i=0) { if(Flag) { x=x+sx;} else y=y+sy; Nerror=Nerror-2*dx; } if(Flag) { y=y+sy;} else x=x+sx; Nerror=Nerror+2*dy; } } ///////////////////////////////////四连通种子填充/////////////////////////////////////////////////// void BoundaryFill4(HDC hdc,int x,int y,int FilledColor,int BoundaryColor) { int CurrentColor; CurrentColor=GetPixel(hdc,x,y); if(CurrentColor!=BoundaryColor&&CurrentColor!=FilledColor) { SetPixel(hdc,x,y,FilledColor); BoundaryFill4(hdc,x+1,y,FilledColor,BoundaryColor); BoundaryFill4(hdc,x-1,y,FilledColor,BoundaryColor); BoundaryFill4(hdc,x,y+1,FilledColor,BoundaryColor); BoundaryFill4(hdc,x,y-1,FilledColor,BoundaryColor); } } ////////////////////////////////////////扫描线填充/////////////////////////////////////////////////// //DrawLine()函数:在(x1,y)和(x2,y)两点之间画一条颜色为FilledColor的横线(用来扫描填充) void drawline(HDC hdc, int x1, int x2,int y0, int FilledColor) { for(int n=x1+1;n500)) {a[j][1]=i;} } } //利用循环调用DrawLine函数逐行填充两交点之间的点 for(int k=0;k<300;k++) { if((a[k][0]!=0)&&(a[k][1]!=0)) drawline(hdc,a[k][0],a[k][1],k,RGB(255,0,0));} } ///////////////////////////////////////////////边界填充////////////////////////////////////// //Contrary()取反函数:如果点的颜色为白,则将点置为填充色;如果点的颜色为填充色,则将点置为白色 //忽略了边界色,即不对边界点作颜色处理 void contrary(HDC hdc, int x, int y,int FilledColor) { for(int h=x;h<280;h++) { if(GetPixel(hdc,h,y)==RGB(255,255,255)) { SetPixel(hdc,h,y,FilledColor); } else if(GetPixel(hdc,h,y)==FilledColor) { SetPixel(hdc,h,y,RGB(255,255,255)); } } } //borderline()边线函数: 先找出图形的边界 左边和右边,从右到左的顺序调用contrary()函数进行填充 void borderline(HDC hdc, int boundarycolor) { for(int j=280;j<499;j++) { for(int i=80;i<280;i++) { int currentcolor=GetPixel(hdc,i,j); //排除了边界水平的情况,即(x-1,y)、(x,y)和(x+1,y)连续三点都是边界点的点不参与填充 if((currentcolor==boundarycolor)&&(GetPixel(hdc,i+1,j)!=boundarycolor)&&(GetPixel(hdc,i-1,j)!=boundarycolor)&&(i>100)) { contrary(hdc,i,j,RGB(0,0,255)); } } } for(int m=280;m<499;m++) { for(int n=80;n<280;n++) { int currentcolor=GetPixel(hdc,n,m); if((currentcolor==boundarycolor)&&(GetPixel(hdc,n+1,m)!=boundarycolor)&&(GetPixel(hdc,n-1,m)!=boundarycolor)&&(n<101)) { contrary(hdc,n,m,RGB(0,0,255)); } } } }
1
vs2008下 opengl实现,多边形扫描线填充算法。 用到glut库 鼠标左右键实现选点和填充
2022-03-17 22:29:36 878KB 计算机图形学 扫描线 填充 算法
1
计算机图形学种子填充算法!多边形填充!能运行的源文件压缩包!
2022-01-13 20:40:52 2.27MB 多边形填充
1
计算机图形学里的经典算法,运用吊桶的思想,考虑了各种特殊情况,用C/C++实现,算法比较复杂,代码量不小。
2021-12-21 12:05:51 1.9MB 计算机图形学
1