武丹 许如星 中国计量大学理学院
计算机图形学是计算机科学与技术专业的选修课。这是一门研究如何使用计算机来生成、处理和显示图形的学科。图形用户界面已经成为软件的重要组成部分,以图形化的方式表达抽象概念或数据(可视化)已成为信息领域的一个重要趋势。开设这门课的目的是让学生理解和掌握图形。学习的基本概念、方法和技术使学生掌握计算机图形处理系统的组成和工作原理,具有一定的开发图形应用系统的能力。通过本课程的学习,学生熟悉图形生成的基本理论,掌握三维真实感图形的生成算法,并利用Visual C++的MFC框架编程的实现方法。而椭圆的绘制作为其中非常重要的一个方向,需要学生熟练掌握。基于此本文对椭圆的绘制算法进行详细解读,并对其中的需要注意的问题进行讨论。接下来我们按照顺序来对其进行讲解。
在圆的绘制中,需要绘制八分之一的圆弧。考虑到椭圆的对称性,可以根据对称轴x=0和y=0把椭圆分成四份。只要画出第一象限的1/4个椭圆弧,就可以根据对称性画出整个椭圆。这被称为四分位椭圆算法。知道第一象限中的点P(x,y),可以求出椭圆顺时针方向的其他三个对称性是p(x,y),p(x,y),p(x,y)。这一点需要和学生提前讲明,在以往的授课过程中,学生编程时很容易出错。
为了区分第一象限的椭圆弧的不同,需要计算椭圆弧上任一点的法矢量。利用《高等数学》中的偏导数计算椭圆上任意一点P(x,y)处的法矢量
式中,i和j是沿x轴向和沿y轴向的单位矢量。
在上半部分Ⅰ,x方向每次加1,y方向上减不减1取决于中点误差项的值。从Pi(xi,yi)点出发选取下一像素时,需将Pu(xi+1,yi)和Pd(xi+1,yi-1)的中点M(xi+1,yi-0.5)代入隐函数,构造中点误差项
假定图1中)点是椭圆弧上半部分Ⅰ的最后一个像素+1,yi-0.5)是用于判断选取Pu和Pd像素的中点。由于下一像素就转入了椭圆弧的下半部分Ⅱ,所以其中点转换为判断Pl和Pr的中点MⅡ(xi+0.5,yi-1),所以下半部分的初始值d20为
椭圆曲线的绘制是计算机图形中非常基础的算法,因此要求学生必须掌握,但是对于初次利用高等数学中的知识来解决计算机图形学中的简单问题,需要把学生的数学知识转换为编程知识,因此需要特别注意椭圆弧的分段表示,椭圆弧的初始值的绘制,以及椭圆弧不同阶段的递推公式。通过这样简单的分析,学生能够很好的理解算法过程,并能够实现代码。
[1]孔令德,计算机图形学-基于MFC三维图形开发,清华大学出版社,2014