从内旋到外旋(一)--例说相似变换 目录场景步骤1步骤2结论得出结论在使用OpenGL编程的过程里难免要处理刚体转动的问题。而处理此类问题往往要用到欧拉角。欧拉角的转动分为3步进动、章动、自转见前面的博客阐述欧拉角概念-CSDN博客而且都是绕着附着于刚体的内部坐标系的轴转动所以转动的第二、第三步里的转轴指向是受第一步转动影响的。所以处理这类问题最棘手的点在于虽然一开始附着于刚体的内部坐标系或者叫刚体坐标系与世界坐标系或者叫外部坐标系、固定坐标系重合。但是完成进动也就是第一步以后内部坐标系就不再与世界坐标系重合了这就让后面的转动很难被描述清楚。假如能够把绕内部坐标轴的转动等价为绕世界坐标系的转动问题就变得容易处理的多因为世界坐标系是固定的。我们把绕内部坐标系的转轴做的旋转叫做内旋把绕着外部坐标系的坐标轴的旋转叫做外旋。神奇的是利用线性代数知识我们可以通过相似变换把内旋转换成效果等价的外旋。从一个例子入手介绍什么是相似变换。场景假设一个人站在潜水艇的中央目光直视前方。而潜水艇坐标系与世界坐标系重合。此时人的视线用一个世界坐标系的矢量表示步骤1人移动目光到别处让他注视潜艇里某个固定位置。这相当于矢量做了一个旋转变换LL既等于内部坐标系下的旋转变换又等于世界坐标系下的旋转变换因为此时潜水艇坐标系与世界坐标系重合。假设变换后矢量变为也是世界坐标系下的矢量,则 L *(1)步骤2保持人的视线在潜艇内部不动继续注视潜艇内同一个位置。让潜艇转动。那么潜艇将经历旋转变换用矩阵R表示。显然在世界坐标系下人的视线也旋转了而且这个旋转的操作同样用R表示。用表示潜艇旋转后人的视线在世界坐标系下的矢量。 R *换言之*(2)假如此时人仍然平视的话平视矢量将变为 R *换言之*(3)把(2)3代入(1)* L **两边同时乘以R R * L **结论已知两个矢量在内部坐标系里的表示是(a1,a2,a3,.....)--这里指的就是,(b1,b2,b3......)--这里指的就是且已知(a1,a2,a3,.....)可以通过与矩阵L的旋转变换乘法得到(b1,b2,b3......)也即那么这两个矢量在世界坐标系的表示(c1,c2,c3,.....)--这里指的就是,和(d1,d2,d3......)--这里指的就是之间也可以通过旋转矩阵乘法完成旋转变换且 R * L *R是局部坐标系相对于世界坐标系的转动矩阵是其逆矩阵。形如 R * L *的变换就是相似变换。
💡
读完这篇文章,你可以带走什么

本文来自编程新知一线开发与建站实战沉淀:讲清原理、给出可复现步骤、标注避坑要点。看完后可以直接在你的项目或网站中落地验证。

编
编程新知内容团队
一线开发 · 建站实施 · 持续更新
由资深前端工程师、后端架构师与建站实施人员共同维护,坚持"真实案例 + 完整步骤 + 避坑指南"的内容准则。如果你在落地中遇到问题,欢迎联系我们交流。

想把这套方案用到自己的项目上?

编程新知提供技术答疑与网站建设一站式服务,欢迎联系我们获取针对性建议。

联系工程师
📚

系统学习该技术

进入对应栏目,从基础到进阶完整学习,配套案例与避坑指南。

前往栏目 →
🏗️

需要落地实施

企业建站、SEO 优化、服务器部署等需求,交给工程师一步到位。

了解服务 →
💬

还有疑问

技术难题或方案咨询,联系编程新知获取一对一的专业建议。

联系我们 →