计算机图形学课程设计实验报告
- 格式:doc
- 大小:438.00 KB
- 文档页数:24
3、掌握八分法中点Bresenham算法绘制圆的原理;
4、设计八分法绘制圆的中点Bresenham算法;
5、掌握绘制1/4椭圆弧的上半部分和下半部分的中点Bresenham算法原理;
6、掌握下半部分椭圆偏差判别式的初始值计算方法;
7、设计顺时针四分法绘制椭圆的中点Bresenham算法。
void cline::DoDataExchange(CDataExchange* pDX)
{
ﻩCDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(cline)
ﻩDDX_Text(pDX, IDC_x0, m_x0);
DDX_Text(pDX, IDC_y0, m_y0);
//{{AFX_DATA_MAP(Ccricle)
ﻩDDX_Text(pDX, r_EDIT, m_r);
ﻩ//}}AFX_DATA_MAP
}
2、//CcircleView.h
class CCcircleView : public CView
{
.......
public:
ﻩCCcircleDoc* GetDocument();
ﻩDDX_Text(pDX, IDC_x1, m_x1);
ﻩDDX_Text(pDX, IDC_y1, m_y1);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(cline, CDialog)
//{{AFX_MSG_MAP(cline)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
cline::cline(CWnd* pParent /*=NULL*/)
: CDialog(cline::IDD, pParent)
{
ﻩ//{{AFX_DATA_INIT(cline)
ﻩm_x0 = 0;
ﻩm_y0 = 0;
m_x1 = 0;
ﻩm_y1 = 0;
//}}AFX_DATA_INIT
}
}
3、//Line.cpp
//*******************直线中点Bresenham函数*********************/
void CLineView::Mbline(double x0, double y0, double x1, double y1)
{
ﻩCClientDC dc(this);
2、// LineView.h
class CLineView : public CView
{
public:
CLineDoc* GetDocument();
ﻩ
..........
void Mbline(double,double,double,double); //直线中点Bresenham函数
.......
3)在类CLineView中声明相应函数,并在相关的cpp文件中实现;
4)在OnDraw()函数里调用函数实现绘制直线、圆、椭圆;
5)运行程序,输入相应值,绘制出图形。
3、源代码
实验1:直线中点Bresenham算法
1.// cline.cpp : implementationcline dialog
void CirclePoint(double,double); //八分法画圆函数
ﻩvoid Mbcircle(double); //圆中点Bresenham函数
........
}
3、//CcircleView.cpp
void CCcircleView::OnDraw(CDC* pDC)
{
CCcircleDoc* pDoc = GetDocument();
COLORREF rgb=RGB(0,0,255); //定义直线颜色为蓝色
double x,y,d,k;
ﻩx=x0; y=y0; k=(y1-y0)/(x1-x0); d=0.5-k+)
{
ﻩdc.SetPixel((int)x,(int)y,rgb);
ﻩif(d<0)
ﻩASSERT_VALID(pDoc);
ﻩ// TODO: add draw code for native data here
ﻩCcricle r;
r.DoModal();
cline a;
a.DoModal();//初始化
ﻩCLineView::Mbline(a.m_x0,a.m_y0,a.m_x1,a.m_y1);
}
实验2:圆中点Bresenham算法
1、//cricle.cpp
// Ccricle dialog
Ccricle::Ccricle(CWnd* pParent /*=NULL*/)
计算机图形学课程设计实验报告
———————————————————————————————— 作者:
———————————————————————————————— 日期:
《计算机图形学》
实验报告
班级计算机科学与技术
姓名
学号
2014年6月2日
实验一基本图形生成算法
一、实验目的:
1、掌握中点Bresenham绘制直线的原理;
二、实验过程:
1、实验描述
实验1:使用中点Bresenham算法绘制斜率为0<=k<=1的直线。
实验2:使用中点Bresenham算法绘制圆心位于屏幕客户区中心的圆。
实验3:使用中点Bresenham算法绘制圆心位于屏幕客户区中心的椭圆。
2、实验过程
1)用MFC(exe)建立一个单文档工程;
2)编写对话框,生成相应对象,设置相应变量;
{
ﻩﻩ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);