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

题目

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

参考答案和解析
正确答案:不相同。因为DDA算法总是选择△x或者△y中的较大者作为步进的方向,不失一般性,假设选择x方向,则x方向每前进一个像素点,y方向前进的像素点个数应该在[0,1]区间,但是由于采用了(向上或者向下或者四舍五入)取整运算,必然会导致某些像素点偏在了真实直线的一侧。而Bressenham算法每一步都会根据实际直线与网格的距离来决定下一个像素点的选择,因此所选像素点更加贴近于真实的直线。可以扩充整数Bressenham算法使之能够处理当线段端点坐标值不是整数的情况。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

用编码裁剪法裁剪二维线段时,判断下列直线段采用哪种方法?假设直线段的两个端点M、N的编码分别为0101和1010()。

  • A、直接保留
  • B、直接舍弃
  • C、对MN再分割求交
  • D、无法判断

正确答案:C

第2题:

说明直线段编码剪裁算法的思想和该算法的两个主要步骤。


正确答案: 直线段编码剪裁算法的思想:每一线段或者整个位于窗口内,或者能够被窗口分割而使其中的一部分能很快地被舍弃。
两个主要步骤:
第一步,先确定一条线段是否整个位于窗口内,若不是,则确定该线段是否整个位于窗口外,若是,则舍弃。
第二步,若第一步的判断都不成立,那么就通过窗口边界所在的直线将线段分成两部分,再对每一部分进行第一步的测试。

第3题:

用编码裁剪算法裁剪二维线段时,若直线段两端点M、N的编码分别为1000和1010,则对该线段采用的处理方法是()

A.直接保留

B.直接放弃

C.对MN在求交分割

D.不能判断


参考答案:B

第4题:

处理直线度误差读数的方法有计算法,()和两端点连线法。

  • A、估算法
  • B、图解法

正确答案:B

第5题:

在编码裁剪算法中,一线段的一个端点的编码为0010,则该端点位于()

  • A、窗口中0000
  • B、窗口上方1000
  • C、窗口下方0100
  • D、窗口右边0010

正确答案:D

第6题:

已知:AB两端点的坐标值xA=1yA=1和xB=2yB=2,试求直线AB的象限角。


正确答案: tgα=(yB-yA/xB-xA)=(2-1/2-1)=1
α=45°
答:直线AB的象限角为45°。

第7题:

按Cohen—Sutherland编码裁剪算法剪裁线段,当线段一个端点的编码为0100,则该端点位于窗口()

  • A、下边
  • B、上边
  • C、左边
  • D、右边

正确答案:A

第8题:

如果想把直线、弧和多线段的端点延长到指定的边界,则应该使用哪个命令()。

A.EXTEND

B.PEDIT

C.FILLET

D.ARRAY


正确答案:A

第9题:

对直线的扫描转换算法中,下列说法正确的是()

  • A、Bresenham算法主要是通过借助于一个决策变量d的正负符号,来确定下一个该亮点的象素点。
  • B、Bresenham算法中决策变量的计算式与上一次决策变量的正负无关。
  • C、DDA算法主要利用整数进行计算,其效率较高。
  • D、DDA算法不需要计算直线的斜率,但Bresenham算法需要。

正确答案:A

第10题:

用做图的最小区域法确定直线之间的误差时,则以包容误差曲线与端点连结之间的()纵坐标值计。

  • A、两倍距离
  • B、1/2距离
  • C、距离

正确答案:C

更多相关问题