关键词不能为空

当前您在: 主页 > 英语 >

计算机图形学实验报告

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 21:09
tags:

-

2021年2月1日发(作者:prefect)


《计算机图形学》实验报告




《计算机图形学》实验报告








名:








号:








级:



实验地点:



实验时间:









郭子玉


























2012211632





















计算机


12-2




















逸夫楼


507





















15.04.10






15.04.17































《计算机图形学》实验报告



实验一




1



实验目的和要求



< br>解



线







; 掌





直< /p>


线






;掌






、分


< p>













DDA





Bresenham



< p>














线



分< /p>





DDA< /p>





Bres enham












并< /p>









< p>







excel


< p>
















格< /p>







线



< p>











2



实验环境和工具



< br>发





Visual C++ 6.0







Experiment_Fr ame_One










3



实验结果



3.1



程序流程图





1



DDA








K<=1




k



b


























































x<=X1


y<=Y1


































x=x+1;y=y+k;





y=y+1;x=x+1/k;










《计算机图形学》实验报告




2



Mid_Bresenham

< p>









dx>dy




dx,dy




































D=dx-2*dy


D=dy-2*dx























x


y




































































D<0


D<0






































































y=y+1



D = D +


-


2*dy;


x=x+1;


D


=


D


-


2*dy;


x=x+1;



x=x+1



D = D +


2*dy


2*dx;


y=y+1;


-


D


=


D


-


2*dx;


y=y+1;




2*dx









《计算机图形学》实验报告



3.2



程序代码




//-------------------------


算法实现

< br>------------------------------//


//< /p>


绘制像素的函数


DrawPixel(x, y);



(1)DDA





void CExperiment_Frame_OneView::DDA(int X0, int Y0, int


X1, int Y1)


{






//- ---------


请实现


DDA


算法


------------//


float k, b;


float d;


k = float(Y1 - Y0)/float(X1 - X0);






b = float(X1*Y0 - X0*Y1)/float(X1 - X0);











if(fabs(k)<= 1)



{








if(X0 > X1)


{





}


int temp = X0;


X0 = X1;


X1 = temp;



《计算机图形学》实验报告





































}


int x;


float y;


x = (int)X0;



y = (float)Y0;


while(x <= X1)



{





}


DrawPixel(x, round(y));


x ++;


y = y + k;


else



{













if(Y0 > Y1)


{





}


float x;


int y;


x = (float)X0;


y = (int)Y0;


while(y <= Y1)



int temp = Y0;


Y0 = Y1;


Y1 = temp;



《计算机图形学》实验报告










}








}


{





}


DrawPixel(round(x), y);


y ++;


x = x + 1/k;


return;



2



Mid_Br esenham






void


CExperiment _Frame_OneView::Mid_Bresenham(int


X0,


int Y0, int X1, int Y1)


{












//-------


请实现


Mid_Bresenham


算法

< p>
-------//


int D;


int dx, dy;


int x, y;


dx = X1 - X0;


dy = Y1 - Y0;


x = X0;


y = Y0;


if(dx > dy)



{



《计算机图形学》实验报告










































}


D = dx - 2*dy;


while(x <= X1)



{













}


DrawPixel(x, y);


if(D < 0)



{




}


else



{



}


x++;


D = D - 2*dy;


y = y +1;


D = D + 2*dx - 2*dy;


else



{








D = dy - 2*dx;


while(y <= Y1)



{





DrawPixel(x, y);


if(D < 0)



{



《计算机图形学》实验报告














}












}










}




}


x = x +1;


D = D + 2*dy - 2*dx;


else



{



}


y++;


D = D - 2*dx;


return;


3.3



运行结果




(1)DDA







《计算机图形学》实验报告




2



Mid_Bresenham

< p>






3.4



运行结果分析



DDA


算法直观,实现简单。但是涉及浮点数运算,不


利于硬件实现。


Mid_Bresenham



法比

< br>DDA


算法简


单。两


种算法实现 生成的直线也可能会有不同。




4



实验心得






通过实 验,学习掌握了两种直线的扫描转换算法。不同方











< br>结

















确定哪种方 法更优,更符合正确结果。








-


-


-


-


-


-


-


-



本文更新与2021-02-01 21:09,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595084.html

计算机图形学实验报告的相关文章