计算机图形学课后题答案

习题解答 第2章

2.如果线段端点坐标值不是整数,采用DDA算法产生的直线和将端点坐标值先取整再用Bresenham算法产生的直线是否完全相同?为什么?能否扩充整数Bresenham算法使之能处理当线段端点坐标值不是整数的情况(比端点坐标先取整数产生的直线更精确)。

如果线段端点坐标值不是整数,DDA算法和Bresenham算法产生的直线不完全相同。DDA算法是在直线附近寻找最靠近直线的象素点。而端点坐标值先取整再用Bresenham算法,因为端点坐标值先取整,与原直线相比,可能会改变直线的斜率。因此两种算法相比,前者比后者更精确。

可以将整数Bresenham算法扩充为实数Bresenham算法。算法中的变量都应采用实数类型,在绘制时再对实数坐标值取整数,这样做比端点坐标先取整数产生的直线更精确,具体算法如下:

void BresenhamLine(double x1, double y1, double x2, double y2) { int x,y ; double dx,dy,p; x=(int)(x1+0.5); y=(int)(y1+0.5); dx=x2-x1; dy=y2-y1; p=2*dy*(x-x1+1)-dx*(2*y-2*y1+1); for(;x<=x2;x++) { SetPixel(x,y); if(p>=0) { y++; p+=2*(dy-dx); } else { p+=2*dy; } } }

3.推广本章第一节给出的产生线段的整数Bresenham算法,去掉0≤m≤1和xl<x2的限制,使能完成对任意线段的扫描转换。

Word文档免费下载Word文档免费下载:计算机图形学课后题答案 (共101页,当前第1页)

你可能喜欢

  • 计算机网络自顶向下第四版答案
  • 计算机图形学课后习题答案
  • 计算机图形学试题及答案
  • 无机化学第三版答案
  • 多边形裁剪算法
  • 计算机图形学复习资料

计算机图形学课后题答案相关文档

最新文档

返回顶部