图形学作业与答案 doc- 精品课程建设平台(3)

2019-03-22 20:21

?x'??1?y'??0?????z'??0????1??0?x\??1?y\??0?????z\??0????1??0010001000?x'??100?x??x??1?010?y??y??00?y'????????1?z'??001?z??z??0??????01??0001??1??00?x??100?x'??x??1?010?y'??y??00?y????????1?z??001?z'??z??0??????01??0001??1??0010001000?x??x'??x??y?0?y??y'????

1?z??z'??z????01??1?0?x'??x??x??y?0?y'??y????

1?z'??z??z????01??1??x'??x\?????由上面两式可得:y'?y\ ??????z'????z\??(2). 任意两个连续的放缩变换。

?x'??sx?y'???0?????z'????0?x\??sx?y\???0?????z\????0'\0s\y00s'y0'0??sx??0??0??s\z??00s'y00s\y0'0??x??s\xsx???0???y???0'?sz?z??????0'\0??x??sxsx???0???y???0????0s\z??z??0's\ysy00s'ys\y00??x???0???y? '???s\zsz??z?0??x???0???y? '\?szsz???z??0??s\x??0??0'??sz??0?x'??x\?????由上两式可得:y'=y\ ??????z\???z'???(3). 任意两个连续的关于任一坐标轴的旋转。

以绕x轴为例,绕其他轴旋转同理可得

?x'??cos??y'???sin??????z'????0?x\??cos??y\???sin??????z\????0?sin?cos?0?sin?cos?00??cos??sin?0???1????00??cos??sin?0???1????0?sin?cos?0?sin?cos?00??x??cos(???)?sin(???)0??x??y???sin(???)cos(???)0??y?0????????1?001????z???????z??0??x??cos(???)?sin(???)0??x??y???sin(???)cos(???)0??y?0????????1?001????z???????z???x'??x\?????由上两式可得:y'=y\ ??????z\???z'???4.4给定方向(α,β,γ),试推导出该方向以放缩因子为s进行缩放,然后再绕该方向旋转90

度的变换矩阵。

??????2??2?????2??2??0??????????22?????????2??2??2222?2??222?2??2?????2??2??2???????2??2?????????0?10???????100??????2??2??2??2??2?2??2??2?????001?????????2222???2??2???????????????22222??2??2?2??2??2??2??2??2???s??2?????2??2???2??2??0?2??2??2??2??2???????0??2???2??2??00?s?2??2??20?????0???s???2??2??2?0

4.5推导以直线ax+by+c=0为对称轴的二维对称变换矩阵。

a2?1?()?b?a?()2?1?b?2a??b??(a)2?1?b?0??????a()2?1ba()2?1ba()2?1b02ab2ac?b2?a2?()?1?b?2c???b? a()2?1??b1???????4.6试从三维图形几何变换的一般表达式推倒出以F(xf,yf,zf)为参考点,x,y,z轴3个方向的比

例因子分别为sx,sy,sz的比例变换矩阵。

?x'??1?y'??0?????z'??0????1??001000xf??sx000??1???0yf???0sy00??01zf??00sz0??0????01??0001??001000?xf??x???0?yf???y?

1?zf??z????01??1?4.7请写出当透视投影中心为原点,投影平面为z=3的透视投影矩阵,并求端点为A(5,15,25)和B(10,20,30)的线段在该投影平面的投影。

?xq??300??x????????yq???030??y?,xp?xq /q,yp?yq /q.A点在该平面上的投影为(3/5,9/5,3)?q??001??z?????????13?3?y?x?B点在该平面上的投影为(1,2,3),投影线段的方程为?22,x?[,1]

5?z?3?4.8将梁友栋-Barsky裁减算法改写成多边形裁减算法。

答:梁友栋-Barsky裁减算法是线段裁减,如果对多边形的每条边用该方法,会使原来封闭的多边形变成不封闭或是一些离散的线段。为此可以将梁友栋-Barsky裁减算法改写成多边形裁减算法。

包含PiPi+1的直线与窗口4条边界相交,其中两个是潜在的进入交点,另外两个是潜在的离开交点,计算出交点的参数值,并分别记为t_in1,t_in2,t_out1,t_out2.跨越窗口直线有2种情形

12

for(每条边e){ 确定边的方向

用此来确定包含线首先与裁减区域的哪条边界线相交 寻找退出点的t值 if(t_out2>0)

寻找第2个进入点的t值 if(t_in2>t_out1){

if (0

output_vert(turning_vertex); }else{

If (0=t_in2){ If(0<=t_in2)

Output_vert(适当的面交点); Else

Output_vert(起始顶点); If (1>=t_out1)

Output_vert(适当的面交点); Else

Output_vert(终止顶点); } }

If(0

Output_vert(适应的窗口角点); }/*对每条边*/

4.9对Sutherland-Hodgman算法做改进,使其能处理图4.28所示的情况。

答:Sutherland-Hodgman算法是用每条裁减边对多边形裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。为使其能处理4.28所示情况,需要在一条边对多边形进行裁剪时设置一个记录,将窗口与边的交点依序记录下来,交点两两配对,每两个对应一个多边形。 4.10将梁友栋-Barsky裁减算法扩展到三维空间时,在规范的平行投影视口中确定其需要的不等式。

p1?(x1,y1,z1),p1?(x2,y2,z2)为线段的终点,线段的参数表达式为

?x?x1?(x2?x1)u??y?y1?(y2?y1)u,u??0,1? ?z?z?(z?z)u121??xmin??x1?(x2?x1)u??xmax?在规范的平行投影视口中的点满足下列不等式?ymin??y1?(y2?y1)u??ymax

?z??z?(z?z)u??z121max?minxmin?ymin?zmin?0,xmax?ymax?zmax?1。

?p1???x,q1?x1(左)?p??x,q?1?x(右)21?2??p3???y,q3?y1(下)上述不等式可以写为pk? u??qk,k?1..6?p??y,q?1?y(上)41?4?p5???z,q5?z1(前)???p2??z,q6?1?z1(后)4.11用OpenGL编写程序以实现一个立方体的平移,放缩和旋转变换

void CExam2View::draw_cuboid(GLdouble a, GLdouble b, GLdouble c)

{

glColor3f(0,0,0);

glBegin(GL_LINE_LOOP); glVertex3f(0,b,0); glVertex3f(0,b,c); glVertex3f(a,b,c); glVertex3f(a,b,0); glEnd();

glBegin(GL_LINE_LOOP); glVertex3f(a,0,0); glVertex3f(a,b,0); glVertex3f(a,b,c); glVertex3f(a,0,c); glEnd();

glBegin(GL_LINE_LOOP); glVertex3f(0,0,c); glVertex3f(a,0,c); glVertex3f(a,b,c); glVertex3f(0,b,c); glEnd();

glEnable(GL_LINE_STIPPLE);//线型设置 glLineStipple(1,0xF0F0);//虚线 glBegin(GL_LINES);//点按照线段连接 glVertex3f(0,0,0);

glVertex3f(a,0,0); glVertex3f(0,0,0); glVertex3f(0,b,0); glVertex3f(0,0,0); glVertex3f(0,0,c); glEnd();

glDisable(GL_LINE_STIPPLE); SwapBuffers(m_hDC); }

void CExam2View::draw_coord() {

glLineWidth(1);

glEnable(GL_LINE_STIPPLE);//线型设置 glLineStipple(1,0xF0F0);//虚线 glBegin(GL_LINES); glVertex3f(0,0,0); glVertex3f(7,0,0); glVertex3f(0,0,0); glVertex3f(0,7,0); glVertex3f(0,0,0); glVertex3f(0,0,7); glEnd();

glDisable(GL_LINE_STIPPLE); }

void CExam2View::OnDraw(CDC* pDC) {

CExam2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); glClearColor(1,1,1,1);

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity();

gluLookAt(5,5.5,7,0,0,0,0,0,1);//视点变换的视点 glColor3f(1,0,0); draw_coord(); glPushMatrix(); if(c_mode==1)

glTranslatef(1.5,0,0);// 平移 if(c_mode==2)

glScalef(1.1,1.2,1);//缩放 if(c_mode==3)

glRotatef(30,0,1,0);//旋转 draw_cuboid(4,4,4); glPopMatrix();


图形学作业与答案 doc- 精品课程建设平台(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:企业管理中的“与人方便,自己方便”-201311-牛海姣

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: