当前位置:文档之家› 计算机图形学课程设计实验报告

计算机图形学课程设计实验报告

: CDialog(cline::IDD, pParent) {
//{{AFX_DATA_INIT(cline) m_x0 = 0; m_y0 = 0; m_x1 = 0; m_y1 = 0; //}}AFX_DATA_INIT }
1
void cline::DoDataExchange(CDataExchange* pDX) 2
Bresenham 算法原理; 6、掌握下半部分椭圆偏差判别式的初始值计算方法; 7、设计顺时针四分法绘制椭圆的中点 Bresenham 算法。
二、实验过程: 1、实验描述
实验 1:使用中点 Bresenham 算法绘制斜率为 0<=k<=1 的直线。 实验 2:使用中点 Bresenham 算法绘制圆心位于屏幕客户区中 心的圆。 实验 3:使用中点 Bresenham 算法绘制圆心位于屏幕客户区中 心的椭圆。
{ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(cline) DDX_Text(pDX, IDC_x0, m_x0); DDX_Text(pDX, IDC_y0, m_y0); DDX_Text(pDX, IDC_x1, m_x1); DDX_Text(pDX, IDC_y1, m_y1); //}}AFX_DATA_MAP
//}}AFX_DATA_MAP }
2、//CcircleView.h class CCcircleView : public CView {
6
.......
public: CCcircleDoc* GetDocument();
void CirclePoint(double,double); //八分法画圆函数 void Mbcircle(double); //圆中点Bresenham函数
}
BEGIN_MESSAGE_MAP(cline, CDialog) //{{AFX_MSG_MAP(cline) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
2、// LineView.h class CLineView : public CView { public:
CLineDoc* GetDocument();
4

y++; d+=1-k; } else d-=k; } } 4、//LineView.cpp void CLineView::OnDraw(CDC* pDC) { CLineDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here
: CDialog(Ccricle::IDD, pParent) {
//{{AFX_DATA_INIT(Ccricle) m_r = 0; //}}AFX_DATA_INIT }
void Ccricle::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(Ccricle) DDX_Text(pDX, r_EDIT, m_r);
........
}
3、//CcircleView.cpp void CCcircleView::OnDraw(CDC* pDC) {
CCcircleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here
cline a; a.DoModal();//初始化
CLineView::Mbline(a.m_x0,a.m_y0,a.m_x1,a.m_y1);
}
实验 2:圆中点 Bresenham 算法 5
1、//cricle.cpp // Ccricle dialog Ccricle::Ccricle(CWnd* pParent /*=NULL*/)
.......... 3
void Mbline(double,double,double,double); Bresenham函数
//直 线 中 点
.......
} 3、// Line.cpp //*******************直 线 中 点 Bresenham函 数 *********************/ void CLineView::Mbline(double x0, double y0, double x1, double y1) {
《计算机图形学》 实验报告
班级 姓名 学号
计算机科学与技术
2014 年 6 月 2 日
实验一 基本图形生成算法
一、实验目的: 1、掌握中点 Bresenham 绘制直线的原理; 2、设计中点 Bresenham 算法; 3、掌握八分法中点 Bresenham 算法绘制圆的原理;
4、设计八分法绘制圆的中点 Bresenham 算法; 5、 掌 握 绘 制 1/4 椭 圆 弧 的 上 半 部 分 和 下 半 部 分 的 中 点
2、实验过程 1)用 MFC(exe)建立一个单文档工程;
0
2)编写对话框,生成相应对象,设置相应变量; 3)在类 CLineView 中声明相应函数,并在相关的 cpp 文件中 实现; 4)在 OnDraw()函数里调用函数实现绘制直线、圆、椭圆; 5)运行程序,输入相应值,绘制出图形。
三、源代码 实验 1:直线中点 Bresenham 算法 1.// cline.cpp : implementation file // cline dialog cline::cline(CWnd* pParent /*=NULL*/)
CClientDC dc(this); COLORREF rgb=RGB(0,0,255); //定义直线颜色为蓝色
double x,y,d,k; x=x0; y=y0; k=(y1-y0)/(x1-x0); d=0.5-k; for(x=x0;x<=x1;x++) {
dc.SetPixel((int)x,(int)y,rgb); if(d<0) {
相关主题