计算机图形学(三) |
您所在的位置:网站首页 › 面积的算法 › 计算机图形学(三) |
实验三:圆的生成算法
3.1实验目的
(1)了解DDA算法、中点画圆法、Bresenham算法 (2)掌握VC++中CDC类的用法 3.2实验内容(1)类的编写 (2)完成DDA算法、中点画圆法、Bresenham算法 3.3算法思路在平面解析几何中,圆的方程可以描述为(x–x0)2+(y–y0)2=R2,其中(x0,y0)是圆心坐标,R是圆的半径,特别的,当(x0,y0)就是坐标中心点时,圆方程可以简化为x2+y2=R2。在计算机图形学中,圆和直线一样,也存在点阵输出设备上显示或输出的问题,因此也需要一套光栅扫描转换算法。为了简化,我们先考虑圆心在原点的圆的生成,对于中心不是原点的圆,可以通过坐标的平移变换获得相应位置的圆。 在进行扫描转换之前,需要了解一个圆的特性,就是圆的八分对成性。如下图所示: (2)中点圆生成算法: / //中点圆生成算法 / void CLiHuchenView::OnMidpointcircle() { // TODO: Add your command handler code here CDC *pDC=GetDC();//获取设备指针 int xc=300,yc=300,r=50,c=RGB(255,0,0);///定义圆心,半径,圆的颜色红色 int x,y;//定义变量x,y float d;//定义中点带入圆的值d x=0;y=r;d=1.25-r;//赋初值 //八个区域点,画点 pDC->SetPixel((xc+x),(yc+y),c);//(x,y) pDC->SetPixel((xc-x),(yc+y),c);//(-x,y) pDC->SetPixel((xc+x),(yc-y),c);//(x,-y) pDC->SetPixel((xc-x),(yc-y),c);//(-x,-y) pDC->SetPixel((xc+y),(yc+x),c);//(y,x) pDC->SetPixel((xc-y),(yc+x),c);//(-y,x) pDC->SetPixel((xc+y),(yc-x),c);//(y,-x) pDC->SetPixel((xc-y),(yc-x),c);//(-y,-x) //画圆 while(x d+=2*x+3; } else { d+=2*(x-y)+5; y--; } x++; pDC->SetPixel((xc+x),(yc+y),c);//(x,y) pDC->SetPixel((xc-x),(yc+y),c);//(-x,y) pDC->SetPixel((xc+x),(yc-y),c);//(x,-y) pDC->SetPixel((xc-x),(yc-y),c);//(-x,-y) pDC->SetPixel((xc+y),(yc+x),c);//(y,x) pDC->SetPixel((xc-y),(yc+x),c);//(-y,x) pDC->SetPixel((xc+y),(yc-x),c);//(y,-x) pDC->SetPixel((xc-y),(yc-x),c);//(-y,-x) } ReleaseDC(pDC);//指针释放 }(3)Bresenham圆生成算法: / //Bresenham圆生成算法 / void CLiHuchenView::OnBresenhamcircle() { // TODO: Add your command handler code here CDC *pDC=GetDC();//获取设备指针 int xc=100,yc=100,r=50,c=RGB(0,255,0);///定义圆心,半径,圆的颜色绿色 int x=0,y=r,p=3-2*r;//赋初值 //画圆 while(x p+=4*x+6; } else { p+=4*(x-y)+10; y--; } x++; if(x==y) pDC->SetPixel((xc+x),(yc+y),c);//(x,y) pDC->SetPixel((xc-x),(yc+y),c);//(-x,y) pDC->SetPixel((xc+x),(yc-y),c);//(x,-y) pDC->SetPixel((xc-x),(yc-y),c);//(-x,-y) pDC->SetPixel((xc+y),(yc+x),c);//(y,x) pDC->SetPixel((xc-y),(yc+x),c);//(-y,x) pDC->SetPixel((xc+y),(yc-x),c);//(y,-x) pDC->SetPixel((xc-y),(yc-x),c);//(-y,-x) } ReleaseDC(pDC);//指针释放 } 3.7实验结果展示
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |