当前位置: 首页 > backend >正文

齐次变换矩阵相乘的复合变换:左乘与右乘的深度解析

在三维几何变换中,齐次变换矩阵相乘是实现复杂变换的核心方法。本文将通过一个包含四个变换步骤的完整示例,深入探讨齐次变换矩阵左乘和右乘的区别,并结合 Python sympy 库的代码实现,详细阐述变换过程和结果差异。

二维齐次坐标的旋转变换

在二维齐次坐标系中,一个点可以表示为 [\begin{bmatrix}x\ y\ 1\end{bmatrix}]。为了实现旋转变换,可以使用扩展后的旋转矩阵。假设绕原点逆时针旋转 θ 角度,旋转矩阵为:

[ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix}\cosθ & -\sinθ & 0 \\ \sinθ & \cosθ & 0 \\ 0 & 0 & 1\end{bmatrix} cosθsinθ0sinθcosθ0001

当我们用这个矩阵作用于齐次坐标点 [\begin{bmatrix}x\ y\ 1\end{bmatrix}] 时,可以得到旋转后的点:

[ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ x y 1 ] = [ x cos ⁡ θ − y sin ⁡ θ x sin ⁡ θ + y cos ⁡ θ 1 ] \begin{bmatrix}\cosθ & -\sinθ & 0 \\ \sinθ & \cosθ & 0 \\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\ y\\ 1\end{bmatrix} = \begin{bmatrix}x\cosθ - y\sinθ\\ x\sinθ + y\cosθ\\ 1\end{bmatrix} cosθsinθ0sinθcosθ0001 xy1 = xcosθysinθxsinθ+ycosθ1

如果是顺时针旋转 θ 角度,只需要将 θ 替换为 -θ,得到的旋转矩阵为:

[ cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix}\cosθ & \sinθ & 0 \\ -\sinθ & \cosθ & 0 \\ 0 & 0 & 1\end{bmatrix} cosθsinθ0sinθcosθ0001

三维齐次坐标的旋转变换

在三维齐次坐标系中,一个点可以表示为 [\begin{bmatrix}x\ y\ z\ 1\end{bmatrix}]。对于绕不同轴的旋转:

绕 x 轴旋转(逆时针方向)

旋转矩阵为:

[ 1 0 0 0 0 cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 ] \begin{bmatrix}1 & 0 & 0 & 0 \\ 0 & \cosθ & -\sinθ & 0 \\ 0 & \sinθ & \cosθ & 0 \\ 0 & 0 & 0 & 1\end{bmatrix} 10000cosθsinθ00sinθcosθ00001

旋转后的点为:

[ 1 0 0 0 0 cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 ] [ x y z 1 ] = [ x y cos ⁡ θ − z sin ⁡ θ y sin ⁡ θ + z cos ⁡ θ 1 ] \begin{bmatrix}1 & 0 & 0 & 0 \\ 0 & \cosθ & -\sinθ & 0 \\ 0 & \sinθ & \cosθ & 0 \\ 0 & 0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\ y\\ z\\ 1\end{bmatrix} = \begin{bmatrix}x\\ y\cosθ - z\sinθ\\ y\sinθ + z\cosθ\\ 1\end{bmatrix} 10000cosθsinθ00sinθcosθ0

http://www.xdnf.cn/news/14309.html

相关文章:

  • 软件测试之简单基础的安全测试方法(另外包含软测面试题库)
  • 每日学习一道数模题-2024国赛D题-反潜航空深弹命中概率问题
  • 19个一键脚本liux脚本
  • K8S中使用英伟达GPU
  • java 设计模式_行为型_16访问者模式
  • C++继承和多态
  • 基于ssm的老年人健康管理系统
  • 手机验证码自动化处理:从原理到企业级解决方案
  • 从数据孤岛到智能决策:数据编排如何重构企业数据架构?
  • Magentic-ui项目相关整理
  • java 设计模式_行为型_14策略模式
  • Seata如何与Spring Cloud整合?
  • MATLAB交互式贝塞尔曲线演示
  • Softhub软件下载站实战开发(一):项目总览
  • python中判断与循环使用
  • 怎么理解自动驾驶技术中的agent
  • MVVM框架:让前端开发像搭积木一样简单!
  • spring-security5-oauth2系列:密码授权模式
  • Go同步原语与数据竞争:原子操作(atomic)
  • 【LangChain】4 基于文档的问答
  • 【量化】策略交易之动量策略(Momentum)
  • Transformer实战——从词袋模型到Transformer:NLP技术演进
  • Kubernetes镜像拉取认证指南
  • 勇者和魔塔的算法题
  • Linux进程池详解:从入门到理解
  • Vue 3 九宫格抽奖系统,采用优雅的 UI 设计和流畅的动画效果
  • 【工具变量】全国分省数字基础设施水平数据集-含原始数据及处理代码(2005-2024年)
  • LLMs 系列实操科普(6)
  • 网络代理设置
  • leetcode0765. 情侣牵手-hard