热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

旋转矩阵推导

一、前言:周而复始的搜索、循环往复的记忆,但终究还是不深刻,不能像老师一样交给一个新人,所谓提纲挈领,名师指导还是相当有必要的,因为所有的坎,名师都遇到过,而且总结了自己的一套方法论

一、前言:
周而复始的搜索、循环往复的记忆,但终究还是不深刻,不能像老师一样交给一个新人,所谓提纲挈领,名师指导还是相当有必要的,因为所有的坎,名师都遇到过,而且总结了自己的一套方法论。这样才能够言简意赅,才能够让一个什么都不懂(有点夸张),略等一些技术背景的人,很容易的就能够理解并且掌握。闲言少叙,下面来看下矩阵变换中的旋转矩阵的推导是怎么推导出来的。本文并不涉及为什么使用四维矩阵表示三维向量的旋转,这些知识将在后面的文章中一一涉及,有兴趣的或者锱铢必较(这里作褒义会意)的读者请关注博主接下来的学习历程。
二、推导过程
2.1二维向量的旋转
这里写图片描述

2.2三维向量的旋转
二维扩展到三维,其实还是蛮简单的,我们不妨将上面的图,再修改下,就可以得到如下图:
这里写图片描述
正如你看到的,添加了一个+z,就变成了三维空间了。上面将OP顺时针绕着z轴旋转了θ角度。这里我们要注意两点:
(1)我们站在xy平面,朝着z轴的正方向看,我们挥舞着手臂,从OP转动θ角度到达了OP’,这里是顺时针沿着z轴旋转了θ角度。
(2)搞清楚坐标系是左手坐标系还是右手坐标系,为什么要搞清楚这个呢?因为为了接下来的同理推导,哈哈为了省事。

2.3如何确定是左手坐标系,还是右手坐标系。
这个问题,我的习惯是用手指模拟。伸出一只手,大拇指是x轴正方向、食指是y轴正方向、中指是z轴正方向。哪只手这样做之后能和坐标轴重合,那只手就是左/右坐标系。如下图所示,可以确定此坐标系为左手坐标系:
这里写图片描述

2.4绕z轴旋转θ角度的矩阵表示
这里写图片描述
好事之徒,这里就会问,哎?这里z’经过矩阵变换之后,z轴结果没有变化,对呀为啥没有变化呢?你觉得会有变化吗?可以这么理解。
这里写图片描述
我们绕着z轴旋转,其实即使向量的在圆锥体上的移动,但是投射到z上的坐标是固定长度的,也可看出,绕某个轴旋转,其实这个点或者是向量的某轴坐标不变。例如,绕x轴旋转,则x轴的坐标不变;绕y轴旋转,y轴坐标不变;绕z轴旋转则z轴不变。

2.5绕x轴、y轴旋转θ角度的矩阵表示
我们此时要做的就是转换坐标轴的位置,使其和我们上面的绕z轴推导进行硬套公式即可。如下所示,我们首先,记住首先,就是讲x轴方针原来z轴的位置。
这里写图片描述
此时到底是(一)还是(二)呢?回顾我们之前写的一句话,就是该坐标系是左手坐标系还是右手坐标系。经过验证(一)是左手坐标系;(二)是右手坐标系。又因为我们之前的坐标系是左手坐标系,所以这里选择(一)。
ok此时,我们有了坐标系,我们只要把对应的变量替换上去即可。如下图所示:
这里写图片描述
推导如下:
这里写图片描述
至此,我们完成了绕x、y、z三个轴旋转的矩阵推导过程。


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • Java内存管理与优化:自动与手动释放策略
    本文深入探讨了Java中的内存管理机制,包括自动垃圾回收和手动释放内存的方法。通过理解这些机制,开发者可以更好地优化程序性能并避免内存泄漏。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
author-avatar
杨子忧愁_347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有