欢迎来到天天文库
浏览记录
ID:42380136
大小:28.09 KB
页数:8页
时间:2019-09-14
《向量旋转和三角函数大全》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、向量的旋转基础的2-D绕原点旋转 在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。在左图中,我们有关系: x0=
2、R
3、*cosA y0=
4、R
5、*sinA => cosA=x0/
6、R
7、 sinA=y0/
8、R
9、 在右图中,我们有关系: x1=
10、R
11、*cos(A+B) y1=
12、R
13、*sin(A+B) 其中(x1,y1)就是(x0,y0)旋转角B后得到的点,也就是位置向量R最后指向的点。我们展开cos(A+B)和s
14、in(A+B),得到 x1=
15、R
16、*(cosAcosB-sinAsinB) y1=
17、R
18、*(sinAcosB+cosAsinB) 现在把 cosA=x0/
19、R
20、 sinA=y0/
21、R
22、 代入上面的式子,得到 x1=
23、R
24、*(x0*cosB/
25、R
26、-y0*sinB/
27、R
28、) y1=
29、R
30、*(y0*cosB/
31、R
32、+x0*sinB/
33、R
34、) => x1=x0*cosB-y0*sinB y1=x0*sinB+y0*cosB 这样我们就得到了2-D迪卡尔坐标下向量围绕圆点的逆时针旋转公式。
35、顺时针旋转就把角度变为负: 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] [co
36、sA-sinA][-sinAcosA]或者[sinAcosA] 我们对点进行旋转变换可以通过矩阵完成,比如我要点(x,y)绕原点逆时针旋转: [cosA sinA][x,y]x [-sinAcosA]=[x*cosA-y*sinA x*sinA+y*cosA]为了编程方便,我们把它写成两个方阵[x,y] [cosA sinA] [x*cosA-y*sinA x*sinA+y*cosA][0,0]x[-sinAcosA]=[0 0 ]也可以写
37、成 [cosA-sinA] [x0] [x*cosA-y*sinA 0][sinA cosA]x[y0]=[x*sinA+y*cosA 0]三、2-D的绕任一点旋转 下面我们深入一些,思考另一种情况:求一个点围绕任一个非原点的中心点旋转。 我们刚刚导出的公式是围绕原点旋转的公式,所以我们要想继续使用它,就要把想要围绕的那个非原点的中心点移动到原点上来。按照这个思路,我们先将该中心点通过一个位移向量移动到原点,而围绕点要保持与中心点相对位置不变,也相应的按照这个位移向量位移,此时由于中心点已经移动到
38、了圆点,就可以让同样位移后的围绕点使用上面的公式来计算旋转后的位置了,计算完后,再让计算出的点按刚才的位移向量逆位移,就得到围绕点绕中心点旋转一定角度后的新位置了。看下面的图现在求左下方的蓝色点围绕红色点旋转一定角度后的新位置。由于红色点不在原点,所以可以通过红色向量把它移动到原点,此时蓝色的点也按照这个向量移动,可见,红色和蓝色点的相对位置没有变。现在红色点在原点,蓝色点可以用上面旋转变换矩阵进行旋转,旋转后的点在通过红色向量的的逆向量回到它实际围绕下方红色点旋转后的位置。在这个过程中,我们对围绕点进行
39、了三次线性变换:位移变换-旋转变换-位移变换,我们把它写成矩阵形式:设红色向量为(rtx,rty)[xy1] [1 0 0] [cosA sinA0] [1 0 0] [x'y'-][010]x[0 1 0]x[-sinAcosA0]x[0 1 0]=[- - -][001] [rtxrty1] [0 0 1] [-rtx-rty1] [- - -] 最后得到的矩阵的x'和y'就是我们旋转后的点坐标。分类: ACM绿色通道: 好文要顶 关注我 收藏该文与
40、我联系 woodfish关注-0粉丝-4+加关注20(请您对文章做出评价)« 上一篇:我自己写的一点sgu题解» 下一篇:[转载]世上没有B/S系统,只有B系统和S系统.postedon 2007-09-1014:01 woodfish 阅读(4280)评论(2) 编辑 收藏评论#1楼 [xy1][100][cosAsinA0][100][x'y'-][010]x[010]x[-sinAcosA0]x[010]=[---]
此文档下载收益归作者所有