| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1256 人关注过本帖
标题:用c怎么画直线呢?
只看楼主 加入收藏
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
 问题点数:0 回复次数:9 
用c怎么画直线呢?
只会0<k<1的 k>1 k<-1 -1<k<0的怎么画?
搜索更多相关主题的帖子: 直线 
2007-03-28 22:18
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
得分:0 
有人会中点算法?

2007-03-29 12:00
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
有一点不理解

只会0<k<1,说说看

雁无留踪之意,水无取影之心
2007-03-29 12:15
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
得分:0 

就是利用中点算法!


2007-03-29 18:49
jun54555
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-3-29
收藏
得分:0 
回复:(yynn)就是利用中点算法!

什么叫中点算法?

2007-03-29 19:42
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
只知道画线是line()函数.

2007-03-29 19:45
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

我以前用过数值微分法画过直线.


int DDALine (int x0,int y0,int x1,int y1,int color)
{
int coordinate;
float dx=x1-x0/*X方向的增量*/,
dy=y1-y0/*Y方向的增量*/;
float eXY;
float coorXY;
if(dx==0) /*X方向的增量为0*/
{
coorXY=x0;
if(dy>=0) /*Y方向的增量为正方向*/
{
for(coordinate=y0;coordinate<=y1;coordinate++)
putpixel(coorXY,coordinate,color);
}
else /*Y方向的增量为负方向*/
{
for(coordinate=y0;coordinate>=y1;coordinate--)
putpixel(coorXY,coordinate,color);
}
}
else if(dy/dx<=1 && dy/dx>=-1) /*|dy/dx|<=1*/
{
/*X方向的增量为+1/-1,Y方向随之增量为+eXY/-eXY*/

coorXY=y0; /*Y方向的初始值为y0*/
if(dx>=0)
{
eXY=dy/dx; /*当dy>=0时,eXY=dy/dx>=0,
当dy<0 时,eXY=dy/dx<0*/
for(coordinate=x0;coordinate<=x1;coordinate++)
{
putpixel(coordinate,(int)(coorXY),color);
coorXY+=eXY; /*Y方向增量为eXY*/
}
}
else
{
eXY=-dy/dx; /*当dy>=0时,eXY=-dy/dx>=0,
当dy<0 时,eXY=-dy/dx<0*/
for(coordinate=x0;coordinate>=x1;coordinate--)
{
putpixel(coordinate,(int)(coorXY),color);
coorXY+=eXY; /*Y方向增量为eXY*/
}
}
}
else /*|dy/dx|>1*/
{
coorXY=x0; /*X方向的初始值为y0*/
if(dy>=0)
{
eXY=dx/dy; /*当dx>=0时,eXY=dx/dy>=0,
当dx< 0时,eXY=dx/dy<0*/
for(coordinate=y0;coordinate<=y1;coordinate++)
{
putpixel((int)(coorXY),coordinate,color);
coorXY+=eXY; /*X方向增量为eXY*/
}
}
else
{
eXY=-dx/dy; /*当dx>=0时,eXY=-dx/dy>=0,
当dx< 0时,eXY=-dx/dy<0*/
for(coordinate=y0;coordinate>=y1;coordinate--)
{
putpixel((int)(coorXY),coordinate,color);
coorXY+=eXY; /*X方向增量为eXY*/
}
}
}
return 0; /*返回值为0*/
}

我没有听说过用中点算法画直线,
LZ可以交流一下吗,
简介一下中点算法的思路?

[此贴子已经被作者于2007-3-29 20:37:39编辑过]


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-29 20:37
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
得分:0 
#include<stdio.h>
#include<graphics.h>
void MidpointLine(x0,y0,x1,y1,color)
int x0,x1,y0,y1,color;
{int x,y,mid,dx,dy,d_up,d_down;
dy=y1-y0;dx=x1-x0;
mid=dx-2*dy;
d_up=2*dx-2*dy;d_down=-2*dy;
x=x0;y=y0;
while(x<=x1)
{putpixel(x,y,color);
x++;
if(mid<0){y++;mid=mid+d_up;}
else mid=mid+d_down;
}
}
main()
{int gb=DETECT,gm;
initgraph(&gb,&gm," ");
MidpointLine(100,100,300,200,14);
getch();
closegraph();
}

2007-03-29 22:44
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
中点算法真的不错,
代码少,执行速度快,
谢谢分享.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-30 00:05
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
得分:0 
啊,我只会一个斜率的!

2007-04-02 21:23
快速回复:用c怎么画直线呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037161 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved