文档介绍:
计算机图形学实训报告.DOCEvaluationWarning:ThedocumentwascreatedwithSpire..计算机图形学实训报告学号: 20091620319 姓名:班级:计算机科学与技术专业2班一、 实验目的和要求1、 任意指定一个起始点坐标和终止点坐标画出该直线2、 要求用数值微分法(DAA)3、 通过实验了解数值微分法的算法形式以前如何用C语言来表示该算法二、 算法原理介绍数值微分法(DAA)对任何沿直线给定的x的增量Ax,可以从下式中计算出y的增量△『:Ay=K•Ax同样,可以得出对应于指定的的x增量Ax:Ax=Ay/K对于具有斜率绝对值Ik|<1的线段,可以让x从起点到终点变化,每步递增(或递减)1,即令△x=±l,用式(3-2)计算对应的y增量,△尸土总若前量资助的直线上像素点坐标为(&心),这一次的直线上像素点坐标为(Xi+iy+i),则xi+i=Xj±1,Yi+i=yi+ko随后用putpixel(xi+i,(int)(yi+i+0.5),color)函数输出该像素的颜色什即可。这里用int来取整是因为像素的坐标什都是整数。对于具有斜率绝对值Ik|>1的线段,可以让y从起点到终点变化,每步递增(或递减)1,Ax=±l/k用式(3-3)计算对应的X增量,。若前一次的直线上像素点坐标为(Xi,y)这一次的直线上像素点坐标为(Xi+iy+i),则Xi+i二Xi±l/k,yi+i=yi±1。随后用putpixel((int)(yi+1+0.5),yi+1,color)函数输出该像素的颜色值即可。如图所示。数值微分法的本质,是用数值方法解微分方程,通过同时对和各增加一个小增量,计算下一步的值。以下是用数值微分算法生成直线的C语言描述(0;DDA算法是由函数voidDDALine(intxl,intyl,intx2,inty2,intcolor),在MAIN函数中来调用函数就可以了;getch();;closegraph();;initgraph(&gd,&gm「C:\\TC\\BGT‘)DETECT和gmode图形模式。四、程序源代码#include#include#include#includevoidDDALine(intxl,intyl,intx2,inty2,intcolor){intx;floatk,y=yl;k=1.0*(y2・yl)/(x2-x
内容来自淘豆网www.taodocs.com转载请标明出处.