学习过程中的一个小小笔记^_^
主要内容:
1、编写程序实现多边形扫描转换的扫描线算法
–– 多边形的输入(鼠标)
–– 非自相交多边形
–– 三角形的特殊性
2、利用OpenGL函数实现柱状图和饼图函数
实现步骤:
1、 初始化OpenGL环境
2、 构建几何类及其肋间关系,如图:
3、以父类CGraph 指针管理界面上的各种图形,即各种图形由CGraph 指针构成链表,如:struct GraphList
{//图形链表
glGraph* m_graph;//图形
GraphList* m_next;//下一节点
};
只要在链表中找到相应图形,通过强制转换便可对其操作,如:CGraph* tail;
((glPolygon*)tail->m_graph)->AddPoint(x,y);//添加多边形顶点
4、 因为图形的画操作是共性,所以利用父类的纯虚函数,子类再重载而实现,如:
父类CGraph 定义 virtual void Draw() = 0;
各子类重载 void Draw(); 就可实现各种图形的画法
扫描转换的实现:
1、 通过CreatET()构建边分类表,其中以变量ymin,ymax纪录当前多边形顶点中最小与最大的y坐标值,所以扫描线从ymin扫到ymax就可结束。
2、 置空AEL
3、 按算法步骤填充多边形。