计算机图形学实验报告实验6.docx

上传人:b****3 文档编号:11749718 上传时间:2023-06-02 格式:DOCX 页数:10 大小:132.71KB
下载 相关 举报
计算机图形学实验报告实验6.docx_第1页
第1页 / 共10页
计算机图形学实验报告实验6.docx_第2页
第2页 / 共10页
计算机图形学实验报告实验6.docx_第3页
第3页 / 共10页
计算机图形学实验报告实验6.docx_第4页
第4页 / 共10页
计算机图形学实验报告实验6.docx_第5页
第5页 / 共10页
计算机图形学实验报告实验6.docx_第6页
第6页 / 共10页
计算机图形学实验报告实验6.docx_第7页
第7页 / 共10页
计算机图形学实验报告实验6.docx_第8页
第8页 / 共10页
计算机图形学实验报告实验6.docx_第9页
第9页 / 共10页
计算机图形学实验报告实验6.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机图形学实验报告实验6.docx

《计算机图形学实验报告实验6.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告实验6.docx(10页珍藏版)》请在冰点文库上搜索。

计算机图形学实验报告实验6.docx

计算机图形学实验报告实验6

贵州大学实验报告

学院:

计算机科学与信息学院专业:

计科班级:

101

姓名

吕杨

学号

1008060040

同组成员

实验时间

2010-5-11

指导教师

吴云

成绩

实验项目名称

图形的基本变换

实验目的

1.通过实验加深对知识的理解,并知道在生活哪些方面需要应用到这些知识。

2.熟练掌握图形变换(缩放、旋转、平移等)的基本原理;

3.通过编程,学习在VC环境下MFC完成用简单图形的绘制。

实验要求

实现基本图形的变换。

实验原理

1.平移变换

点(x,y,z)沿x轴方向平移Tx距离,沿y轴方向平移Ty距离,沿z轴方向平移Tz距离,变成点(x´,y´,z´),这一变换过程的变换矩阵为:

2.缩放变换

设一个点沿x,y,z轴缩放的比例分别为Sx,Sy,Sz,则缩放变换矩阵可表示为:

3.旋转变换

A.绕x轴

空间上的立体绕X轴旋转时,立体上各点的X坐标不变,只是Y、Z坐标发生相应的变化。

转角的正向满足右手螺旋法则。

B.绕y轴

此时,Y坐标不变,X,Z坐标相应变化。

C.绕z轴

此时,Z坐标不变,X,Y坐标相应变化。

4.对称变换

三维对称变换可以分为:

关于坐标轴的对称;

关于坐标平面的对称;

关于坐标原点的对称;

实验环境

VC++6.0开发环境.

实验步骤

程序的主要代码如下:

voidCMy2DView:

:

OnDraw(CDC*pDC)

{CMy2DDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

GetMaxX();

GetMaxY();

pDC->MoveTo(MaxX/2,0);

pDC->LineTo(MaxX/2,MaxY);

pDC->MoveTo(0,MaxY/2);

pDC->LineTo(MaxX,MaxY/2);

}voidCMy2DView:

:

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{//TODO:

addcleanupafterprinting

}

#ifdef_DEBUG

voidCMy2DView:

:

AssertValid()const

{CView:

:

AssertValid();}

voidCMy2DView:

:

Dump(CDumpContext&dc)const

{CView:

:

Dump(dc);}

CMy2DDoc*CMy2DView:

:

GetDocument()//non-debugversionisinline

{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy2DDoc)));

return(CMy2DDoc*)m_pDocument;

}

#endif//_DEBUG

voidCMy2DView:

:

ClearMatrix(doubleA[][3])

{for(inti=0;i<3;i++)

{for(intj=0;j<3;j++)

A[i][j]=0;}}

voidCMy2DView:

:

GetMaxY()

{CRectRect;

GetClientRect(&Rect);

MaxX=Rect.right;}

voidCMy2DView:

:

GetMaxX()

{CRectRect;

GetClientRect(&Rect);

MaxY=Rect.bottom;}

voidCMy2DView:

:

Draw(doubleD[][3],intn)

{RedrawWindow();

CClientDCdc(this);

CPenpen,*pOldpen;

pen.CreatePen(PS_SOLID,3,RGB(0,0,255));

pOldpen=dc.SelectObject(&pen);

for(inti=0;i

{if(i==0)

dc.MoveTo(ROUND(MaxX/2+D[i][0]),ROUND(MaxY/2-D[i][1]));

else

dc.LineTo(ROUND(MaxX/2+D[i][0]),ROUND(MaxY/2-D[i][1]));

}

dc.LineTo(ROUND(MaxX/2+D[0][0]),ROUND(MaxY/2-D[0][1]));

dc.SelectObject(pOldpen);

pen.DeleteObject();}

voidCMy2DView:

:

Calculate(doubleP0[][3],doubleT[][3])

{doublePtemp[4][3];

KeepOriginalMatrix(P,Ptemp);

for(inti=0;i<4;i++)

for(intj=0;j<3;j++)

P[i][j]=Ptemp[i][0]*T[0][j]+Ptemp[i][1]*T[1][j]+Ptemp[i][2]*T[2][j];}

voidCMy2DView:

:

KeepOriginalMatrix(doubleOrig[][3],doubleDest[][3])

{inti,j;

for(i=0;i<4;i++)

for(j=0;j<3;j++)

Dest[i][j]=Orig[i][j];}

voidCMy2DView:

:

Tmove(doubleTx,doubleTy)

{ClearMatrix(TM);

RedrawWindow();

TM[0][0]=1;

TM[1][1]=1;

TM[2][0]=Tx;

TM[2][1]=Ty;

TM[2][2]=1;

Calculate(P,TM);

Draw(P,ntype);}

voidCMy2DView:

:

Tscale(doubleSx,doubleSy)

{ClearMatrix(TS);

RedrawWindow();

TS[0][0]=Sx;

TS[1][1]=Sy;

TS[2][2]=1;

Calculate(P,TS);

Draw(P,ntype);}

voidCMy2DView:

:

Trotate(doublethta)

{ClearMatrix(TR);

RedrawWindow();

TR[0][0]=cos(thta*PI/180);

TR[0][1]=sin(thta*PI/180);

TR[1][0]=-sin(thta*PI/180);

TR[1][1]=cos(thta*PI/180);

TR[2][2]=1;

Calculate(P,TR);

Draw(P,ntype);}

voidCMy2DView:

:

Treflect(doubleFx,doubleFy)

{ClearMatrix(TF);

RedrawWindow();

TF[0][0]=Fx;

TF[1][1]=Fy;

TF[2][2]=1;

Calculate(P,TF);

Draw(P,ntype);}

voidCMy2DView:

:

Treform(doubleb,doublec)

{ClearMatrix(TC);

RedrawWindow();

TC[0][0]=1;

TC[0][1]=b;

TC[1][0]=c;

TC[1][1]=1;

TC[2][2]=1;

Calculate(P,TC);

Draw(P,ntype);}

实验内容

通过自己定义一个相对简单的形体,比如矩形、直线、三角形等基本图形,然后通过选择实现一些简单的变换以下变形:

平移,旋转,对称等

实验结果

(1)通过定义一个基本图形来生成一个用来变换的基本图形(定义一个长度为200,宽度100的矩形):

(2)矩形生成如下:

(3)将矩形进行平移变换,结果如下:

(4)将矩形顺时针旋转45°,结果如下:

 

(5)将矩形关于原点对称:

(7)其余变换结果如下:

(8)由于篇幅有限,其余基本图形变换结果未罗列出。

 

实验总结

通过本次实验对一些基本图形进行变换,了解到了图形学中基本图形是经过怎样的算法和原理实现相应的变换要求。

通过对程序添加代码的过程中,了解到了基本图形的变换跟图形的矩阵密切相关,进行各种变换都是在图形的矩阵基础之上进行修改和变换而成的。

因此,这次实验中,了解到了一些基本图形的矩阵的代码表示方法和矩阵运算方法。

总之,通过这次实验,我对本章学习有了更进一步的了解,对基本图形的基本变换有了更一步了解和掌握。

指导教师意见

 

签名:

年月日

注:

可根据教学需要对以上栏目进行增减。

表格内容可根据内容扩充。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2