二元矩阵的旋转.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二元矩阵的旋转

二维向量旋转 2010-06-25 9:15 基础的2-D绕原点旋转 在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。在左图中,我们有关系:   x0 = |R| * cosA   y0 = |R| * sinA   =   cosA = x0 / |R|   sinA = y0 / |R|   在右图中,我们有关系:   x1 = |R| * cos(A+B)   y1 = |R| * sin(A+B)   其中(x1, y1)就是(x0, y0)旋转角B后得到的点,也就是位置向量R最后指向的点。我们展开cos(A+B)和sin(A+B),得到   x1 = |R| * (cosAcosB - sinAsinB)   y1 = |R| * (sinAcosB + cosAsinB)   现在把   cosA = x0 / |R|   sinA = y0 / |R|   代入上面的式子,得到   x1 = |R| * (x0 * cosB / |R| - y0 * sinB / |R|)   y1 = |R| * (y0 * cosB / |R| + x0 * sinB / |R|)   =   x1 = x0 * cosB - y0 * sinB   y1 = x0 * sinB + y0 * cosB   这样我们就得到了2-D迪卡尔坐标下向量围绕圆点的逆时针旋转公式。顺时针旋转就把角度变为负:   x1 = x0 * cos(-B) - y0 * sin(-B)   y1 = x0 * sin(-B) + y0 * cos(-B)   =   x1 = x0 * cosB + y0 * sinB   y1 = -x0 * sinB + y0 * cosB   现在我要把这个旋转公式写成矩阵的形式,有一个概念我简单提一下,平面或空间里的每个线性变换(这里就是旋转变换)都对应一个矩阵,叫做变换矩阵。对一个点实施线性变换就是通过乘上该线性变换的矩阵完成的。好了,打住,不然就跑题了。 所以2-D旋转变换矩阵就是: [cosA sinA] [cosA -sinA] [-sinA cosA] 或者 [sinA cosA]   我们对点进行旋转变换可以通过矩阵完成,比如我要点(x, y)绕原点逆时针旋转: [cosA sinA] [x, y] x [-sinA cosA] = [x*cosA-y*sinA x*sinA+y*cosA] 为了编程方便,我们把它写成两个方阵 [x, y] [cosA sinA] [x*cosA-y*sinA x*sinA+y*cosA] [0, 0] x [-sinA cosA] = [0 0 ] 也可以写成 [cosA -sinA] [x 0] [x*cosA-y*sinA 0] [sinA cosA] x [y 0] = [x*sinA+y*cosA 0] 三、2-D的绕任一点旋转   下面我们深入一些,思考另一种情况:求一个点围绕任一个非原点的中心点旋转。   我们刚刚导出的公式是围绕原点旋转的公式,所以我们要想继续使用它,就要把想要围绕的那个非原点的中心点移动到原??上来。按照这个思路,我们先将该中心点通过一个位移向量移动到原点,而围绕点要保持与中心点相对位置不变,也相应的按照这个位移向量位移,此时由于中心点已经移动到了圆点,就可以让同样位移后的围绕点使用上面的公式来计算旋转后的位置了,计算完后,再让计算出的点按刚才的位移向量 逆位移,就得到围绕点绕中心点旋转一定角度后的新位置了。看下面的图 现在求左下方的蓝色点围绕红色点旋转一定角度后的新位置。由于红色点不在原点,所以可以通过红色向量把它移动到原点,此时蓝色的点也按照这个向量移动,可见,红色和蓝色点的相对位置没有变。现在红色点在原点,蓝色点可以用上面旋转变换矩阵进行旋转,旋转后的点在通过红色向量的的逆向量回到它实际围绕下方红色点旋转后的位置。 在这个过程中,我们对围绕点进行了三次线性变换:位移变换-旋转变换-位移变换,我们把它写成矩阵形式: 设红色向量为(rtx, rty) [x y 1] [1 0 0] [cosA sinA 0] [1 0 0] [x y -] [0 1 0] x [0 1 0] x [-sinA cosA 0] x [0 1 0] = [- - -] [0 0 1] [rtx rty 1] [0 0 1] [-rtx -rty 1] [- - -]   最后得到的矩阵的x和y就是我们旋转后的点坐标。

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档