zoukankan      html  css  js  c++  java
  • 本地坐标转世界坐标为什么是 先缩放后旋转再平移

    为了进行坐标转换的简单性,特地加了一个过渡坐标-惯性坐标,惯性坐标的特点是 与世界坐标的方向一样,与本地坐标的原点位置一样,本地坐标系先转换成惯性坐标系,此时方向和世界坐标一致了,然后在平移到世界坐标中,完成了转换。 举例说明,比如 一个矩形M原点在世界坐标的位置为(10,10),然后矩形的锚点就是原点(这样考虑简单),然后顺时针旋转45度,里面有一点A,坐标也为(10,10),现在要得到点A在世界坐标中的位置。A在M中的坐标永远为(10,10),第一步首先转到惯性坐标下的位置,乘以 旋转矩阵,得到A相对于惯性坐标的坐标为(a,b), 惯性坐标和实际坐标的差别就是差一个平移,所以A再乘以平移矩阵 得到世界坐标下的坐标(c,d)

    同理又比如一点A在世界坐标下的坐标为(100,100),同时这一点又在M中,求A在M本地坐标下的坐标,首先A先乘以平移矩阵转为惯性坐标下的坐标(a,b),然后乘以旋转矩阵,得到在M中的坐标

    综上,世界坐标转本地坐标和本地坐标转世界坐标,是一个相反的过程,按照矩阵的思路来说,前者的矩阵是后者矩阵的逆矩阵。

    通过上面我们知道了 世界坐标转本地坐标,是先平移,在旋转 ,本地坐标转世界坐标是先旋转,再平移,那么平移的方向和旋转的方向如何确定呢,这里有个技巧。

    当把A坐标系下的点的坐标转到B坐标系下,我们把B坐标系连同需要转换的那个点移动回A,就可以看出方向了(世界坐标系转换成相机坐标系就是这种思路,在这里其实照相机坐标系也可以看做本地坐标系了)。比如A为世界坐标系,a点知道了在世界坐标下的坐标(c,d) ,求 a点在本地坐标系B中的坐标。首先先把B坐标系平移到坐标系A,

    比如平移了(-100,-100),同时让a点跟着平移,也就是(-100,-100),此时世界坐标系和本地坐标系原点重合了,接下来,让B旋转至和A重合,比如逆时针旋转30度,同时我们就让a也跟着逆时针旋转30度,此时得出的位置就是a点在 B坐标系下的坐标,那么这个位置怎么求出呢,因为现在A和B坐标系重合了,a点在A中的坐标就是在B中的坐标,所以只要求出当前a在A中的坐标即可,根据之前的操作步骤得出新的坐标为新的a坐标= 旋转矩阵*平移矩阵*老的a坐标,得出的新的a坐标就是在以B为基底坐标系中的坐标。

  • 相关阅读:
    Spring相关知识点
    动态代理jdk和cglib的区别
    keepalived+nginx+tomcat+redis集群环境部署
    MongoDB_4.4 安装和配置
    vsCode 账号间同步 配置,插件
    vue 全局导航 router.beforeEach()
    网页左右两边元素高度自适应,两个元素高度一致,一面高度跟随另一面的高度变化而变化
    git 中 ssh key 的生成
    vscode html 自定义模板
    vscode vue 定义 单文件模板
  • 原文地址:https://www.cnblogs.com/xiaonanxia/p/9109263.html
Copyright © 2011-2022 走看看