计算机图形C语言设计直线,计算机图形学直线段生成绘制的实现算法.doc

计算机图形学直线段生成绘制的实现算法.doc

实验

一、实验目的和要求:

实现C语言编写图形程序。学会了解VC++的基本应用同时了解TC图形环境配置 ,学习简单的图形画法,并比较画法的优劣,尝试在计算机实现,得到图形,验证比较图形。、#include

#include

void linedda(int x0,int y0,int x1,int y1,int color)

{

int x,dy,dx, y;

float m;

dx=x1-x0;

dy=y1-y0;

m=dy/dx;

y=y0;

for(x=x0;x<=x1;x++)

{

putpixel(x,(int)(y+0.5),color);

y+=m;

}

}

main()

{

int a,b,c,d,e;

int graphdriver=DETECT;

int graphmode=0;

initgraph(&graphdriver,&graphmode," ");

cleardevice();

a=0;

b=0;

c=200;

d=300;

e=RGB(0,255,0);

linedda(a,b,c,d,e);

getch();

closegraph();

}

运行结果:

Bresenham程序代码

#include

#include

// 使用 Bresenham 算法画任意斜率的直线(包括起始点,不包括终止点)

void Line_Bresenham(int x1, int y1, int x2, int y2, int color)

{

int x = x1;

int y = y1;

int dx = abs(x2 - x1);

int dy = abs(y2 - y1);

int s1 = x2 > x1 ? 1 : -1;

int s2 = y2 > y1 ? 1 : -1;

bool interchange = false;// 默认不互换 dx、dy

if (dy > dx)// 当斜率大于 1 时,dx、dy 互换

{

int temp = dx;

dx = dy;

dy = temp;

interchange = true;

}

int p = 2 * dy - dx;

for(int i = 0; i < dx; i++)

{

putpixel(x, y, color);

if (p >= 0)

{

if (!interchange)// 当斜率 < 1 时,选取上下象素点

y += s2;

else// 当斜率 > 1 时,选取左右象素点

x += s1;

p -= 2 * dx;

}

if (!interchange)

x += s1;// 当斜率 < 1 时,选取 x 为步长

else

y += s2;// 当斜率 > 1 时,选取 y 为步长

p += 2 * dy;

}

}

// 主函数

void main()

{

initgraph(640, 480);

// 测试画线

Line_Bresenham(100, 1, 1, 478, GREEN);

Line_Bresenham(1, 478, 638, 1, GREEN);

// 按任意键退出

getch();

closegraph();

}

运行结果:

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值