#include <math.h>
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
void DDALine(int x1, int y1, int x2, int y2, int color)
{
float increx,increy,x,y,length;
int i;
if(abs(x2-x1)>abs(y2-y1))
length = abs(x2-x1);
else
length = abs(y2-y1);
increx = (x2-x1)/length;
increy = (y2-y1)/length;
x = x1;
y = y1;
for(i=1;i<=length;i++)
{
putpixel(int(x+0.5),int(y+0.5),color); //在(x,y)处,以color色画点
x += increx;
y += increy;
}
}
void cbLine(int x1,int y1,int x2,int y2)
{
int dx,dy,n,k,i,f;
int x,y;
dx = abs(x2-x1);
dy = abs(y2-y1);
n = dx+dy;
if(x2>=x1)
{
k= y2>=y1?1:4;
x = x1;
y = y1;
}
else
{
k = y2>=y1? 2:3;
x = x1;
y = y1;
}
putpixel(x,y,4);
for(i=0,f=0;i<n;i++)
if(f>= 0)
switch(k)
{
case 1:putpixel(x++,y,4);f -= dy;break;
case 2:putpixel(x,y++,4);f -= dx;break;
case 3:putpixel(x--,y,4);f -= dy;break;
case 4:putpixel(x,y--,4);f -= dx;break;
}
else
switch(k)
{
case 1:putpixel(x,y++,4);f += dx;break;
case 2:putpixel(x--,y,4);f += dy;break;
case 3:putpixel(x,y--,4);f += dx;break;
case 4:putpixel(x++,y,4);f += dy;break;
}
}
int sign(int a)
{
if(a>0)
return 1;
else if(a==0)
return 0;
else
return -1;
}
void BresenhamLine(int x1,int y1,int x2,int y2,int color)
{
int x,y,s1,s2,increx,increy,temp,interchange;
int e,i;
x = x1;
y = y1;
s1 = sign(x2-x1);
s2 = sign(y2-y1);
increx = abs(x2-x1);
increy = abs(y2-y1);
if(increy > increx)
{
temp = increx;
increx = increy;
increy = temp;
interchange = 1;
}
else
interchange = 0;
e = 2*increy-increx;
for(i=1;i<=increx;i++)
{
putpixel(x,y,color);
if(e>=0)
{
if(interchange = 1)
x = x+s1;
else
y = y+s2;
e = e-2*increx;
}
if(interchange = 1)
y = y+s2;
else
x = x+s1;
e = e+2*increy;
}
}
main()
{
/*
*1.--------紫色线条:DDA算法---------
*2.--------红色线条:逐点比较算法---------
*3.--------绿色线条:Bresenham算法---------
*/
int mode,driver;
mode = VGA;
mode = VGAMED;
initgraph(&driver,&mode," ");
cleardevice();
DDALine(10,40,100,300,5);
cbLine(30,50,200,400);
BresenhamLine(100,50,400,400,2);
getch();
closegraph();
}
_肉君
- 粉丝: 2
- 资源: 5
最新资源
- 毕业设计-基于java的校园二手交易系统毕业设计-全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于java电影院订票选座系统,带论文全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于JSP+Servlet的网上书店系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于Node.js,Angular,Express,ESP8266 WIFI芯片的物联网温度采集系统-全部资料+详细文档+高分项目+源码.zip
- S7-200SMART V2.8版本 PID自整定快速入门指南.rar
- 毕业设计-基于SpringBoot的二手商城系统二手交易平台,校园二手书籍交易,社区二手交易平台全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSH框架的外卖点餐系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SpringBoot及thymeleaf搭建的疫情信息管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM的毕业设计-论文题目审核及选题管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM+AmazeUI培训中心管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM城市公交查询系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM的人力资源管理系统-全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM电影院订票系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM技术的宿舍管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM精品课程在线学习系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于SSM教务选课成绩管理系统全部资料+详细文档+高分项目+源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈