文档介绍:《计算机图形学课内实验》
实验报告
班级:计算机22
姓名:
学号:
日期:
一、实验目的及要求
熟悉掌握中点圆画算法及其编程实现
简单掌握MFC的平台搭建和使用
画点需逐点输出
需可以改变圆心位置与圆的半径
二、实验环境
软件:VS2012
平台:MFC
三、实验内容
中点圆算法:每部单位间隔取样并且计算离圆最近的位置。
四、数据结构和算法描述
输入圆心位置和圆的半径,得到圆周上的第一个点Point1;
(假设起始点为坐标原点,后面将通过坐标平移来处理非圆心在圆点)
计算决策关键参数的初始值,P = 1 - r;
在每个Xn的位置,从n = 0开始,更具决策值P来判断:
    如果P<0,下一个点的位置为(Xn+1,Yn);
       并且执行P = P + 2*(Xn+1)+1;
    如果P>=0,下一个点的位置为(Xn+1,Yn-1);
       并且执行P = P + 2*(Xn+1)+1 - 2*(Yn-1);
通过对称原理计算其他7个对称相关点;
移动坐标到圆心点(x1,y1)
      X = X + x1;
      Y = Y + y1;
如果X<Y重复执行3到5的步骤,否则结束该算法
五、调试过程及实验结果
调试过程:
新建项目-〉MFC应用程序-〉选择单文档,标准MFC模式
在<>下编写子程序-〉修改void CMFCApplication3View::OnDraw(CDC* pDC)即把对象的注释去掉-〉修改窗口显示模式-〉调试
六、总结
通过本次上机实验,熟悉了中点圆算法,简单了解了MFC的机理与过程,对于MFC,OpenGL等概念有了更深的了解。
七、附录(源程序清单)
void drawsysmetrypoints(int xc, int yc, int xo, int yo, CDC *pDC)
{
pDC -> SetPixel(xc + xo, yc + yo, (255,0,0));
pDC -> SetPixel(xc - xo, yc + yo, (255,0,0));
pDC -> SetPixel(xc + xo, yc - yo, (255,0,0));
pDC -> SetPixel(xc - xo, yc - yo, (255,0,0));
pDC -> SetPixel(xc + yo, yc + xo, (255,0,0));
pDC -> SetPixel(xc - yo, yc + xo, (255,0,0));
pDC -> SetPixel(xc + yo, yc - xo, (255,0,0));
pDC -> SetPixel(xc - yo, yc - xo, (255,0,0));
}
void centralcircle(int xo, int yo, int radius, CDC *pDC)
{
int x = 0;
int y = radius;
int p = 1 - radius;
drawsysmetrypoints(xo, yo, x, y, pDC);
while(x <