CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  图形处理/算法

求画直线的算法

楼主chief(大副)2002-11-13 17:41:39 在 VC/MFC / 图形处理/算法 提问

能和API中的LineTo一样就行 问题点数:50、回复次数:4Top

1 楼akun(疑无路)回复于 2002-11-13 17:50:34 得分 0

找图形学的书看看~~~~~Top

2 楼masterz(www.fruitfruit.com)回复于 2002-11-13 18:51:55 得分 50

//The   DDA   algorithm  
  #define   ROUND(a)   ((int)a+0.5)  
  void   lineDDA(int   xa,   int   ya,int   xb,int   yb,HDC   dc)  
  {  
  int   dx=xb-xa,   dy=yb-ya;  
  int   steps,k;  
  float   xincrement   ,yincrement,x=xa,y=ya;  
  if(abs(dx)>abs(dy))  
  steps=abs(dx);  
  else  
  steps=abs(dy);  
  xincrement=dx/(float)steps;  
  yincrement=dy/(float)steps;  
  SetPixel(dc,ROUND(x),ROUND(y),RGB(255,0,0));  
  for(k=0;k<steps;k++)  
  {  
  x+=xincrement;  
  y+=yincrement;  
  SetPixel(dc,ROUND(x),ROUND(y),RGB(255,0,0));  
  }  
  }  
  //the   Bresenham   algorithm  
  void   lineBres(int   xa,int   ya,int   xb,int   yb,HDC   dc)  
  {  
  int   dx=abs(xa-xb);  
  int   dy=abs(ya-yb);  
  int   p=2*dy-dx;  
  int   twody=2*dy;  
  int   twodydx   =   2*(dy-dx);  
  int   x,y,xend;  
  if(xa>xb)  
  {  
  x=xb;   y=yb;  
  xend=xa;  
   
  }  
  else  
  {  
  x=xa;y=ya;  
  xend=xb;  
  }  
  SetPixel(dc,(x),(y),RGB(255,0,0));  
  while(x<xend)  
  {  
  x++;  
  if(p<0)  
  p+=twody;  
  else  
  {  
  y++;  
  p+=twodydx;  
  }  
  SetPixel(dc,(x),(y),RGB(255,0,0));  
  }  
   
  }Top

3 楼iicup(双杯献酒)回复于 2002-11-13 18:54:56 得分 0

图形学的基本问题,  
  不过并不是三言两语所能说清楚。Top

4 楼JennyVenus()回复于 2002-11-14 12:22:47 得分 0

masterz的代码是利用插补实现的,使用简单的+-法代替浮点*/运算  
  Top

相关问题

  • 很菜的问题,关于画直线的算法
  • 谁有中点画线法,直线Bresenham等简单图形算法的程序?
  • 求画直线的算法(Windows游戏编程大师技巧(第二版))
  • 熟悉直线算法的人请进!
  • 用c实现直线剪裁算法
  • 求GDI直线反走样算法!
  • 求教各位一个简单的图形学问题。(实现DDA算法画直线)
  • 谁有中点画线法,直线Bresenham等简单图形算法的C语言程序?
  • 请求直线的算法,但是要带上宽度参数
  • 请教求直线与空间三角行交点的算法

关键词

  • dc
  • ya
  • xb
  • yb
  • xa
  • dy
  • dx
  • abs
  • steps
  • round

得分解答快速导航

  • 帖主:chief
  • masterz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo