如何为dy> dx编写bresenhams线描图程序?

时间:2014-02-03 16:19:37

标签: c++

我正在尝试为dy> dx编写一个bresenhams程序。 我们的老师告诉我们用C ++编写bresenhans线描图程序,它将满足所有可能的条件,并且通过提供这个公式,她认为我们只是dx> dy的算法

 - G=G+2*dy-2dx; 
 - G=G+2*dy;

将剩余的程序作为研究或H.W。

留给我们

然而,我已经使用算法找出了这个程序(仅适用于dx> dy)。我只想知道这些公式对于后一部分是否足够或需要进行哪些修改?

#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
void main()
{
  int i,x,y,x0,y0,x1,y1,G,dx,dy,gd=DETECT,gm;
  initgraph(&gd,&gm,"d://tc//bgi//");
  cout<<" Enter the first coordinate of a line : ";
  cin>>x0>>y0;
  cout<<"Enter the last coordinate of a line : ";
  cin>>x1>>y1;
  dx=x1-x0;
  dy=y1-y0;
  dx=abs(dx);
  dy=abs(dy);
  putpixel(x0,y0,WHITE);
  G=2*dy-dx;
  x=x0;y=y0;
  if(dx>=dy)
  {
   for(x=x+1;x<=x1;x++)
    {
      if(G>0)
      {
          y=y+1;
     G=G+2*dy-2*dx;
      }
      else
      {
        G=G+2*dy;
       }
  putpixel(x,y,WHITE);
 }

}

1 个答案:

答案 0 :(得分:1)

实际上dy>dxdx>dy相同。但是你应该检查给出点的顺序。我该怎么做:

startend视为输入点,mem是帧缓冲区(或图像或其他)中具有给定width和{{1}的像素索引}}

height