冯月萍《计算机图形学》计算机图形学课后题答案--许长青、许志闻.docVIP

  • 466
  • 0
  • 约2.69万字
  • 约 101页
  • 2018-05-06 发布于浙江
  • 举报

冯月萍《计算机图形学》计算机图形学课后题答案--许长青、许志闻.doc

习题解答 第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) {

文档评论(0)

1亿VIP精品文档

相关文档