计算机图形学实验二交互式绘制多边形

一、实验目的掌握双缓冲绘图技术。(2)掌握人机交互技术。(3)掌握填充动态多边形的有效边表算法。二、实验步骤(1)在VS2017环境下创建MFC应用程序工程(单文档)(2)添加命令消息处理函数、双缓冲技术函数(3)定义边节点类、桶节点类、填充多边形类(3)添加成员函数及成员变量(4)编写函数内容(4)绘制与填充多边形三、实验结果四、...
摘要由CSDN通过智能技术生成

一、实验目的

  1. 掌握双缓冲绘图技术。

(2)掌握人机交互技术。

(3)掌握填充动态多边形的有效边表算法。

二、实验步骤

(1)在VS2017环境下创建MFC应用程序工程(单文档)

(2)添加命令消息处理函数、双缓冲技术函数

(3)定义边节点类、桶节点类、填充多边形类

(3)添加成员函数及成员变量

(4)编写函数内容

(4)绘制与填充多边形

三、实验结果

 

 

四、实验体会

通过本次实验,我掌握了双缓冲绘图技术、人机交互技术、填充动态多边形的有效边表算法,加深了对算法的理解。通过亲自动手将理论运用于实践,加强了动手能力,对MFC应用程序工程的编写更为熟悉了,对于实际的操作有了质的飞跃,整体对计算机图形学的理解有了不少提高。

附录:源代码

类视图

class CBucket  //桶节点类
{
public:
	CBucket();
	virtual ~CBucket();
public:
	int     ScanLine;//扫描线
	CAET    *pET;    //边表
	CBucket *next;
};

class CAET   //边节点类  
{ 
public: 
  CAET(); 
 virtual ~CAET(); 
public: 
  double        x;     //当前扫描线与有效边的交点的 x 坐标
   int           yMax; //边的最大 y 值
  double        k;        //斜率的倒数(x 的增量) 
  CAET            *next; 
}; 
填充多边形类
CFill::CFill()
{
	PNum=0;
	P=NULL;
	pEdge=NULL;
	pHeadB=NULL;
	pHeadE=NULL;
}

CFill::~CFill()
{
	if(P!=NULL)
	{
		delete[] P;
		P=NULL;
	}
	ClearMemory();
}

void CFill::SetPoint(CPoint p[],int m)//动态创建多边形顶点数组
{
	P=new CPoint[m];
    for(int i=0;i<m;i++)
	{
		P[i]=p[i];	
	}
	PNum=m;
}

void CFill::CreateBucket()//创建桶表
{
	int yMin, yMax;
	yMin 
  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值