作业题:
请参考课本教材和查阅图形学书籍资料?/p>
1
?/p>
1
)给定直线的起点坐标?/p>
P0
?/p>
x0
?/p>
y0
?/p>
、终点坐标为
P1
?/p>
x1
?/p>
y1
?/p>
,容易计算出直线斜率
k
。假?/p>
0
?/p>
k
?/p>
1
,则
x
方向为主位移方向,绘制直线的递推公式为:
,
这称为数值微分法?/p>
Digital Differential Analyzer
?/p>
DDA
?/p>
,请编程实现之。提示:
DDA
?/p>
法实质上是对直线斜率进行了四舍五入计算?/p>
2
)圆的扫描转换和椭圆的扫描转换的编程实现?/p>
2.
用鼠标在屏幕上绘制任意顶点数的封闭多边形并填充,填充效果如下图所示。编程要求:
⑴多边形的顶点数不受限制?/p>
⑵按下鼠标左键,拖动鼠标绘制多边形,同时按下
Shift
键可以绘制水平边或垂直边?/p>
⑶单击鼠标右键闭合多边形?/p>
⑷使用边缘填充算法填充多边形?/p>
3
请按照图所示,使用对话框输入直线的起点和终点坐标。在窗口左侧区域绘制输入直线?/p>
?/p>
窗口
?/p>
,在窗口右边右侧区域绘制
?/p>
视区
?/p>
并输出裁剪结果。这里需要用到窗视变换的公式?/p>
请分别用
Cohen-Sutherland
算法、中点分割裁剪算法和梁友栋-
Barsky
算法实现?/p>