绕任意轴旋转.docx

上传人:lao****ou 文档编号:803237 上传时间:2024-05-27 格式:DOCX 页数:21 大小:129.68KB
下载 相关 举报
绕任意轴旋转.docx_第1页
第1页 / 共21页
绕任意轴旋转.docx_第2页
第2页 / 共21页
绕任意轴旋转.docx_第3页
第3页 / 共21页
绕任意轴旋转.docx_第4页
第4页 / 共21页
绕任意轴旋转.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《绕任意轴旋转.docx》由会员分享,可在线阅读,更多相关《绕任意轴旋转.docx(21页珍藏版)》请在第一文库网上搜索。

1、几何变换详解在三维图形学中,几何变换大致分为三种,平移变换(Trans1ation),缩放变换(Sca1ing),旋转变换(Rotation以下讨论皆针对DirectX,所以使用左手坐标系。平移变换将三维空间中的一个点区v,乙U移动到另外一个点,y,z,1,三个坐标轴的移动分量分别为dx=Tx,dy=Ty,dz=Tz,即x=X+Txy=y+Tyz=z+Tz平移变换的矩阵如下。y,z,1=xyz10()01缩放变换将模型放大或者缩小,本质也是对模型上每个顶点进行放大和缩小(顶点坐标值变大或变小),假设变换前的点是区V,乙1,变换后的点是,y,Z)I1那么x=x*Sxy,=y*Syz=z*Sz缩放

2、变换的矩阵如下。口;?OOOo,OOSzOO1旋转变换这是三种变换中最复杂的变换,这里只讨论最简单的情况,绕坐标轴旋转,关于绕任意轴旋转,在后续的随笔中介绍。绕X轴旋转绕X轴旋转时,顶点的X坐标不发生变化,y坐标和Z坐标绕X轴旋转度,旋转的正方向为顺时针方向(沿着旋转轴负方向向原点看Iz$乙1表示变换前的点J,v,z,1表示变换后的点。变换矩阵如下。关于旋转的正方向,OPenG1与多数图形学书籍规定旋转正方向为逆时针方向(沿着坐标轴负方向向原点看),比如ComputerGraphicsCVersion,p409oIJ;0noocoaMir0-fiicoti0001绕Y轴旋转绕Y轴旋转时,顶点的

3、y坐标不发生变化,X坐标和Z坐标绕Y轴旋转度。xzV,Z,U表示变换前的点,区,V,z,U表示变换后的点。变换矩阵如下。rosO-/fin。O口t/Z11=yz1O1OOnhfiOconOOOO1绕Z轴旋转时,顶点的Z坐标不发生变化,X坐标和y坐标绕Z轴旋转度。X,y,z,1表示变换前的点,xy,z1,1表示变换后的点。变换矩阵如下。cottsinO()YZ1=Z110OOO1绕坐标轴旋转的矩阵推导上面三个旋转矩阵是如何得来的呢?我们推导一下,首先看一下二维的情况,再扩展到三维即可。实际上上面三种绕坐标轴旋转的情况属于特殊的二维旋转,比如绕Z轴旋转,相当于在与XOY平面上绕原点做二维旋转。假设

4、点P(x,y)是平面直角坐标系内一点,其到原点的距离为r,其与X轴的夹角为A,现将点P绕原点旋转度,得到点P,(xy,),P与X轴的夹角为B,则A=B也(注意,在二维坐标中,逆时针旋转时角度为正,顺时针旋转时角度为负,下图中由P旋转到P,角度为,若是由P转到P,则角度为-er=(,.jy)=(rcoA+rsinAf/=(M)=(rcosB,mB=(rcos(A+),rsin(A+8)h,on(j4+8)=rconAi(tsrsitAsiiiff=j,cosysiHrsin(A+6)=minAcos+rcosAnin=ycos+jrnin于是可得下面的转换方程J=XCoBe-ysin,=ycos

5、+gin=Z(式一)写成矩阵的形式就是mnOcoaOO1coa(Mz,)=(.*z)-fiinO求得旋转矩阵为由于这里使用齐次坐标,所以还需加上一维,最终变成如下形式绕Z轴旋转矩阵Cf)碉ai00-sinCQ确()0001()0001和前面给出的绕Z轴旋转矩阵完全吻合。对于绕X轴旋转的情况,我们只需将式一中的X用y替换,y用Z替换,Z用X替换即可。替换后得到y=ycoszmn(Xz=ZCoeB+ysin(式二)绕X轴旋转矩阵1OOOCOMsi()0一4”Hcon00001对于绕Y轴旋转的情况,只需对式二做一次同样的替换即可,的到的变换方程为Zz=zcosxsin(/=xco+zsinBV=对应

6、的变换矩阵为绕Y轴旋转矩阵com0-tii0010()ttiUcoti1OOO1逆矩阵平移变换矩阵的逆矩阵与原来的平移量相同,但是方向相反。旋转变换矩阵的逆矩阵与原来的旋转轴相同但是角度相反。1000000O0coai00coti-ainO0EHc(t300aincoO00010001coa0-fiit0coa0ftino,0100010Oniu0coff0-siOeotiO0001OOO1c()nsi00ron*加8Oo,wi11cot0O00100001sincoaOOOO1OOOOO1缩放变换的逆矩阵正好和原来的效果相反,如果原来是放大,则逆矩阵是缩小,如果原来是缩小,则逆矩阵是放大。S

7、O()040S90000Sz00001=HappyCoding=作者:zdd出处:绕任意轴旋转绕任意轴旋转的情况上匕较复杂,主要分为两种情况,一种是平行于坐标轴的,一种是不平行于坐标轴的,对于平行于坐标轴的,我们首先将旋转轴平移至与坐标轴重合,然后进行旋转,最后再平移回去。将旋转轴平移至与坐标轴重合,对应平移操作T旋转,对应操作A步骤1的逆过程,对应操作广】整个过程就是对于不平行于坐标轴的,可按如下方法处理。(该方法实际上涵盖了上面的情况)1将旋转轴平移至原点2将旋转轴旋转至YOZ平面3将旋转轴旋转至于Z轴重合4绕Z轴旋转度5执行步骤3的逆过程6执行步骤2的逆过程7执行步骤1的逆过程/v2(a

8、2,b2zc2)/zv1(a1zb1,c1)/XZ/p(0,0,c)Yp(azb,c)YJxT/ZSZS/Xp(o,0,C)假设用V1(a1,b2,c2)和v2(a2,b2,c2)来表示旋转轴,表示旋转角度。为了方便推导,暂时使用右手系并使用列向量,待得出矩阵后转置一下即可,上面步骤对应的流程图如下。步骤1是一个平移操作,将v1v2平移至原点,对应的矩阵为10O-1,v010-MT!M)oo1-C10001步骤2是一个旋转操作,将p(p=v2v1)旋转至XOZ平面,步骤3也是一个旋转操作,将p旋转至与Z轴重合,这两个操作对应的图如下。做点p在平面YOZ上的投影点q。再过q做Z轴垂线,则r是P绕

9、X轴旋转所得,且旋转角度为,且于是旋转矩阵为j0O,OOORx(a)=0COBO1sinaOOv7,150OsinaCOSQOO一,一0O0O1OOO1现在将r绕Y轴旋转至与Z轴重合,旋转的角度为-beta(方向为顺时针),且con(-ft)=COAfi=M+Ii2+r21=T=2+/P+300如果旋转轴是过原点的,那么第一步和最后一步的平移操作可以省略,也就是把中间五个矩阵连乘起来,再转置一下,得到下面的绕任意轴旋转的矩阵M=Rg(-a)w凡七(一月)()2+(12)costb(1ron)+rtihac(1con)bninOOh(Icoti)mi62+(1b)conbc(1con)+atii

10、O(ie(1c(tn)+bsh(1co)(unJ+(1x;f1oatv=axis-y;f1oatw=ais-z;pOut-m00=cosf(theta)+(u*u)*(1-cosf(theta);pOut-m01=u*v*(1-cosf(theta)+w*sinf(theta);pOut-m02=u*w*(1-cosf(theta)-v*sinf(theta);pOut-m03=0;pOut-m10=u*v*(1-cosf(theta)-w*sinf(theta);put-m11=cosf(theta)+v*v*(1-cosf(theta);put-m12=w*v*(1-cosf(theta)

11、+u*sinf(theta);put-m13=0;pOut-m20=u*w*(1-cosf(theta)+v*sinf(theta);put-m21=v*w*(1-cosf(theta)-u*sinf(theta);put-m22=cosf(theta)+w*w*(1-cosf(theta);put-m23=0;pOut-m30=0;put-m31=0;put-m32=0;put-m33=1;如果旋转轴是不过原点的,那么第一步和最后一步就不能省略,将所有七个矩阵连乘起来,得到如下变换矩阵M=T(,一鲂)Rz(-a)-Ry(B)zRM-S)x(a)T(x1叭N)对应如下这个超长的矩阵,在这里(U

12、,V,W)=(a2,b2,c2)-(a1,b1,c1),且是单位向量,a,b,c分别表示(a1,b1,c1)/+储+wi)coattv(1coft)+wsinuw(1-cos)nnOtw(1co)wsinttw(1cos)si(v2-Fw2)u(bcw)(1-v2+(34-wa)cosvw(1co)usin0(u2+w2)r(0u+cw)j(1-tw(1c09)+utnnw2(uav2)cos(c(tia+va)w(au+)(1-001将上面的过程写成函数,该函数接受四个参数,第一个参数是一个输出参数,用来保存得到的旋转矩阵,第二个和第三个参数是旋转轴的两个端点,最后一个参数是旋转角度,注意,在函数中我们已经将上面的矩阵转置了

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

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服