论文部分内容阅读
1.授课方法介绍
在教学方法上,讲授梁友栋-Barky算法时应注意顺序性和启发性,首先采取先粗略介绍算法的思想,然后通过采用发现问题、解决问题的方法,逐步完善算法中的各个细节,再者讲授过程中还应充分利用图形图示的作用,这样会使复杂的算法变得易于理解,易于学生的接受。
2.讲授过程
存在矩形裁剪窗口和直线段P0P1,直线段及其延长线和窗口交于两点Q0、Q1,如图(一)
所示,求其裁剪后的线段Q0P1
图(一)
提出问题(1):窗口是一个二维对象,直线是一个一维对象,两个对象的维度不同,能不能把二维窗口转化为一维对象来解决裁剪问题?
引导学生回答问题:刷新式光栅扫描显示器的屏幕是通过像素来表现的,屏幕上的对象都可以看成像素点的集合。如果把窗口和直线段分别看成一个像素点集的话,其交集即为像素点组成的裁剪结果Q0P1,即为所求。
首先把二维窗口转化为一维对象:设直线段所在的直线与窗口交与两点Q0、Q1,Q0Q1称为诱导窗口,它是一维的。直线段P0P1,与诱导窗口Q0Q1的交集与所求的裁剪结果是一致的。
其次讨论如何进行一维裁剪的问题:以P0为数轴原点,建立一维数轴,令P0,P1分别对应参数0、1,得到直线参数表达式
x(t)=x0+(x1-x0)t
y(t)=y0+(y1-y0)t 0≤t≤1
令Q0,Q1对应参数t0、t1,设t0≤t1,P0P1与Q0Q1的关系有以下四种:
图(二)
如图所示可以看出,P0P1至少部分可见的充分必要条件是:max(0,t0)≤min(1,t1),且可见部分VW的参数区间为[max(0,t0),min(1,t1)],即区间[0,1]与区间[t0,t1]取交集。
提出问题(2):如何求得诱导窗口Q0Q1所对应的参数t0,t1 ?
图(三)
引导学生回答问题:还是利用集合的观点,如图(三)所示直线与裁剪窗口分别交与L、B、R、T,如果把裁剪窗口左右边所在直线夹成的带装区域△1和裁剪窗口上下边所在直线夹成的带装区域△2看成像素点集的话,直线与△1的交集为线段LR,直线与△2的交集为线段BT,线段LR和线段BT的交集即为诱导窗口Q0Q1,用公式表示为
其中为直线段所在的直线,利用直线参数表达式及裁剪窗口四条边的坐标,就很容易求出L、R、B、T所分别对应的参数、、、
即 t0=max(,),t1= min(,)
Q0Q1=[max(,),min(,)]
又因为 VW=[max(0,t0),min(1,t1)]
所以 VW=[max(0, ,),min(1, ,)]
提出问题(3):刚才只是考虑了一种情况,如果直线和窗口的相对位置关系变了,如图(四)所示,那么刚才的结果是不是一样正确呢?
图(四)
显然这个结果是错误的,怎么解决这个问题呢?
令Δx= x1-x0 , Δy= y1-y0 ,如果Δx>=0,x=xmin为始边,x=xmax为终边;Δx<0时x=xmax为始边,x=xmin为终边。同理,如果Δy>=0,y=ymin为始边,y=ymax为终边;Δy<0时y=ymax为始边,y=ymin为终边。与始边求得的结果放在一起求其最大值,与终边求得的结果放在一起求其最小值,则图(四)的正确结论为
t0=max(,),t1= min(,)
即 VW=[ max(0,,),min(1, ,)]
此外,水平直线或垂直直线和裁剪窗口还有两种特殊的裁剪状态,比较简单,不另作叙述。
结束语
本文通过提出问题、解决问题,层层推进的教学方式,激发了学生的学习兴趣,让学生主动参与到教学中来,师生互动良好。课堂实践表明,此方法可行且有效,达到了良好的教学效果。
参考文献
[1]孙家广.计算机图形学(新版).北京:清华大学出版社,1995.
[2]唐泽圣.计算机图形学基础.北京:清华大学出版社,2001.
[3]倪明田.计算机图形学.北京:北京大学出版社,2009.
[4]杜晓增.计算机图形学基础.北京:机械工业出版社,2004.
[5]吴学毅.计算机图形学原理与实践.北京:印刷工业出版社,2008.
(作者单位:长江大学计算机科学学院)
在教学方法上,讲授梁友栋-Barky算法时应注意顺序性和启发性,首先采取先粗略介绍算法的思想,然后通过采用发现问题、解决问题的方法,逐步完善算法中的各个细节,再者讲授过程中还应充分利用图形图示的作用,这样会使复杂的算法变得易于理解,易于学生的接受。
2.讲授过程
存在矩形裁剪窗口和直线段P0P1,直线段及其延长线和窗口交于两点Q0、Q1,如图(一)
所示,求其裁剪后的线段Q0P1
图(一)
提出问题(1):窗口是一个二维对象,直线是一个一维对象,两个对象的维度不同,能不能把二维窗口转化为一维对象来解决裁剪问题?
引导学生回答问题:刷新式光栅扫描显示器的屏幕是通过像素来表现的,屏幕上的对象都可以看成像素点的集合。如果把窗口和直线段分别看成一个像素点集的话,其交集即为像素点组成的裁剪结果Q0P1,即为所求。
首先把二维窗口转化为一维对象:设直线段所在的直线与窗口交与两点Q0、Q1,Q0Q1称为诱导窗口,它是一维的。直线段P0P1,与诱导窗口Q0Q1的交集与所求的裁剪结果是一致的。
其次讨论如何进行一维裁剪的问题:以P0为数轴原点,建立一维数轴,令P0,P1分别对应参数0、1,得到直线参数表达式
x(t)=x0+(x1-x0)t
y(t)=y0+(y1-y0)t 0≤t≤1
令Q0,Q1对应参数t0、t1,设t0≤t1,P0P1与Q0Q1的关系有以下四种:
图(二)
如图所示可以看出,P0P1至少部分可见的充分必要条件是:max(0,t0)≤min(1,t1),且可见部分VW的参数区间为[max(0,t0),min(1,t1)],即区间[0,1]与区间[t0,t1]取交集。
提出问题(2):如何求得诱导窗口Q0Q1所对应的参数t0,t1 ?
图(三)
引导学生回答问题:还是利用集合的观点,如图(三)所示直线与裁剪窗口分别交与L、B、R、T,如果把裁剪窗口左右边所在直线夹成的带装区域△1和裁剪窗口上下边所在直线夹成的带装区域△2看成像素点集的话,直线与△1的交集为线段LR,直线与△2的交集为线段BT,线段LR和线段BT的交集即为诱导窗口Q0Q1,用公式表示为
其中为直线段所在的直线,利用直线参数表达式及裁剪窗口四条边的坐标,就很容易求出L、R、B、T所分别对应的参数、、、
即 t0=max(,),t1= min(,)
Q0Q1=[max(,),min(,)]
又因为 VW=[max(0,t0),min(1,t1)]
所以 VW=[max(0, ,),min(1, ,)]
提出问题(3):刚才只是考虑了一种情况,如果直线和窗口的相对位置关系变了,如图(四)所示,那么刚才的结果是不是一样正确呢?
图(四)
显然这个结果是错误的,怎么解决这个问题呢?
令Δx= x1-x0 , Δy= y1-y0 ,如果Δx>=0,x=xmin为始边,x=xmax为终边;Δx<0时x=xmax为始边,x=xmin为终边。同理,如果Δy>=0,y=ymin为始边,y=ymax为终边;Δy<0时y=ymax为始边,y=ymin为终边。与始边求得的结果放在一起求其最大值,与终边求得的结果放在一起求其最小值,则图(四)的正确结论为
t0=max(,),t1= min(,)
即 VW=[ max(0,,),min(1, ,)]
此外,水平直线或垂直直线和裁剪窗口还有两种特殊的裁剪状态,比较简单,不另作叙述。
结束语
本文通过提出问题、解决问题,层层推进的教学方式,激发了学生的学习兴趣,让学生主动参与到教学中来,师生互动良好。课堂实践表明,此方法可行且有效,达到了良好的教学效果。
参考文献
[1]孙家广.计算机图形学(新版).北京:清华大学出版社,1995.
[2]唐泽圣.计算机图形学基础.北京:清华大学出版社,2001.
[3]倪明田.计算机图形学.北京:北京大学出版社,2009.
[4]杜晓增.计算机图形学基础.北京:机械工业出版社,2004.
[5]吴学毅.计算机图形学原理与实践.北京:印刷工业出版社,2008.
(作者单位:长江大学计算机科学学院)