计算机图形学cpoint类,计算机图形学课程设计陈育伟.docx

计算机图形学课程设计陈育伟

计算机图形学课程设计学生姓名:陈 育 伟 学 号: 专业班级:信息与计算科学1班指导教师:霍 星 2012年6月28日实验一:点、线、圆、多边形等基本计算机图元的绘制实验目的:掌握点、线、圆、多边形等基本计算机图元的生成算法,并用C/WIN-TC/VC++实现算法。实验内容:Bresenham算法生成直线和圆,点和多边形绘制1、Bresenham算法生成直线算法思想:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。设图中xi列上(xi,yi)作为表示直线的点,B点是直线上的点,其坐标为(xi+1,yi+1),它只能用下面两个象素点来逼近:C(xi+1,yi,) 、D(xi+1, yi+1,) 。y=m(xi+1)+b,d1=y-yi,d2=yi+1-y,若d1-d2>0,则yi+1=yi+1,否则d1-d2<0,则yi+1=yi。关键是简便地求出d1-d2的符号,d1-d2=2y-2yi-1=2m(xi+1)-2yi+2b-1,用dx乘等式两边, d1-d2是我们用以判断符号的误差 ,假设在1a象限,dx总大于0,所以Pi仍旧可以用作判断符号的误差。并以Pi=dx(d1-d2)代入上述等式,得Pi=2xidy-2yidx+2dy+dx(2b-1)。Pi=2xidy-2yidx+2dy+dx(2b-1)、Pi+1=Pi+2dy-2dx(yi+1-yi)若Pi>0, yi+1=yi+1,Pi+1=Pi+2dy-2dx若Pi<=0,yi+1=yi, Pi+1=Pi+2dy误差的初值P1,可将x1,y1,b=y1-mx1代入式得:P1=2dy-dx程序设源代码:#include #include#include void bresenham_line (x1, y1, x2, y2, c)int x1, y1, x2, y2, c;{int dx,dy,x,y,p;int const1,const2;int inc,tmp;dx=x2-x1;dy=y2-y1;if(dx*dy>=0)inc=1;elseinc=-1;if (abs(dx)>abs(dy)){if(dx<0){/*将2a, 3a内的直线变到1a,4a象限方向*/tmp=x1;x1=x2;x2=tmp;tmp=y1;y1=y2;dx=-dx;dy=-dy;}p=2*dy-dx;const1=2*dy;const2=2*(dy-dy);x=x1;y=y1;putpixel(x, y, c);while(x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值