计算机图形学笔记----矩阵

矩阵和标量的运算

M = \begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix},则kM = k\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \\ \end{bmatrix}=\begin{bmatrix} km_{11} & km_{12} & km_{13} \\ km_{21} & km_{22} & km_{23} \\ km_{31} & km_{32} & km_{33} \\ \end{bmatrix}

矩阵与矩阵相乘

r\times n的矩阵A,n\times c的矩阵B。两矩阵A\times B,结果为r\times c的矩阵,第一个矩阵的列数必须和第二个矩阵的行数相同,否则不能相乘

C=A\times BC中的每个元素等于A的第i行所对应的矢量和B的第j列所对应的矢量进行矢量点乘的结果

c_{ij}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdot \cdot \cdot +a_{im}b_{nj}

注意:矩阵乘法不满足交换律AB\neq BA

矩阵乘法满足结合律\left ( AB \right )C=A\left ( BC \right )

Shader中常用矩阵

1.方块矩阵(方阵)(square matrix):行数和列数相等的矩阵。

2.对角矩阵:如果一个方阵除了对角元素外的所有元素都为0,那么这个方阵为对角矩阵。

3.单位矩阵:特殊的对角矩阵,用I_n表示,例如3\times 3的单位矩阵为I_3=\begin{bmatrix} 1 & 0 & 0\\ 0&1 &0 \\ 0&0 & 1 \end{bmatrix}。 

4.转置矩阵:原矩阵i\times jM_{ij},它的转置表示为M_{ij}^T,转置矩阵的运算为原矩阵的第i行变成第i列,第j列变成第j行。

M_{ij}^T =M_{ji},示例\begin{bmatrix} 1 & 2 & 3 &4 \\ 5& 6 & 7 & 8 \end{bmatrix}^T=\begin{bmatrix} 1 & 5 \\ 2 & 6 \\ 3 & 7 \\ 4 & 8 \\ \end{bmatrix}

转置矩阵常用性质

性质一:矩阵转置的转置等于原矩阵        (M^T)^T=M

性质二:矩阵串接的转置等于反向串接各个矩阵的转置        (AB)^T=B^TA^T

5.逆矩阵

给定一个矩阵M,它的逆矩阵为M^{-1},把MM^{-1}相乘,结果为一个单位矩阵,即M\times M^{-1}=I

矩阵有逆矩阵的前提为该矩阵为方阵且并非所有元素都为0。

逆矩阵的常用性质

性质一:逆矩阵的逆矩阵是原矩阵本身,即(M^{-1})^{-1}=M

性质二:单位矩阵的逆矩阵是它本身,即I^{-1}=I

性质三:转置矩阵的逆矩阵是逆矩阵的转置,即(M^T)^{-1}=(M^{-1})^T

性质四:矩阵串接相乘后的逆矩阵等于反向串接各个矩阵的逆矩阵,即(ABC)^{-1}=C^{-1}B^{-1}A^{-1}

三维变换与投影

现实世界是三维的,要在二维屏幕上绘制出三维场景需要通过投影变换降低维数。

三维变换矩阵

三维变换引入齐次坐标,在四维空间内进行研究。

三维变换可表示为某一变换矩阵与物体顶点集合的齐次坐标矩阵相乘的形式,三维变换矩阵是4\times 4的方阵。

例如:

M=\begin{bmatrix} a &b &c &l \\ d &e &f &m \\ g &h &i &n \\ p &q &r &s \end{bmatrix}

M_1=\begin{bmatrix} a &b &c \\ d &e &f \\ g &h &i \end{bmatrix}3\times3的子矩阵,用于对物体进行比例、旋转、反射、错切变换

M_2=\begin{bmatrix} l \\ m\\ n \end{bmatrix}3\times 1的子矩阵,用于对物体进行平移变换。

M_3=\begin{bmatrix} p &q &r \end{bmatrix}1\times 3子矩阵,用于对物体进行投影变换

M_4=\begin{bmatrix} s \end{bmatrix}1\times 1子矩阵,用于对物体进行整体比例变换

三维变换形式

三维变换的基本方法是把矩阵作为算子,作用到变换前的物体顶点集合的齐次坐标矩阵上,得到变换后新的顶点集合的齐次坐标矩阵,连接新的物体顶点,可绘制出变换后的三维物体模型。

设变换前的物体顶点矩阵

P=\begin{bmatrix} x_0 &x_1 &... &x_{n-1} \\ y_0 &y_1 &... &y_{n-1} \\ z_0 &z_1 &... &z_{n-1} \\ 1 &1 &... &1 \end{bmatrix}

变换后的物体顶点矩阵

P^{'} = \begin{bmatrix} x_0^{'} &x_1^{'} &... &x_{n-1}^{'} \\ y_0^{'} &y_1^{'} &... &y_{n-1}^{'} \\ z_0^{'} &z_1^{'} &... &z_{n-1}^{'} \\ 1 &1 &... &1 \end{bmatrix}

则三维变换公式为P^{'}=M\cdot P,即

\begin{bmatrix} x_0^{'} &x_1^{'} &... &x_{n-1}^{'} \\ y_0^{'} &y_1^{'} &... &y_{n-1}^{'} \\ z_0^{'} &z_1^{'} &... &z_{n-1}^{'} \\ 1 &1 &... &1 \end{bmatrix}= \begin{bmatrix} a &b &c &l \\ d &e &f &m \\ g &h &i &n \\ p &q &r &s \end{bmatrix} \begin{bmatrix} x_0 &x_1 &... &x_{n-1} \\ y_0 &y_1 &... &y_{n-1} \\ z_0 &z_1 &... &z_{n-1} \\ 1 &1 &... &1 \end{bmatrix}

三维基本变换

三维基本变换是指将P(x,y,z)点从一个坐标位置变换到另一个坐标位置P^{'}(x^{'},y^{'},z^{'})的过程,是相对于坐标系或坐标轴进行的几何变换

平移变换

T_xT_yT_z为平移参数

平移变换的坐标表示为\left\{\begin{matrix} x^{'}=x+T_x\\ y^{'}=y+T_y\\ z^{'}=z+T_z \end{matrix}\right.

三维平移变换矩阵为M=\begin{bmatrix} 1 &0 &0 &T_x \\ 0 &1 &0 &T_y \\ 0 &0 &1 &T_z \\ 0 &0 &0 &1 \end{bmatrix}

比例变换

S_xS_yS_z为比例系数

比例变换的坐标表示为\left\{\begin{matrix} x^{'}=xS_x\\ y^{'}=yS_y\\ z^{'}=zS_z \end{matrix}\right.

三维比例变换矩阵为M=\begin{bmatrix} S_x &0 &0 &0\\ 0 &S_y &0 &0 \\ 0 &0 &S_z &0 \\ 0 &0 &0 &1 \end{bmatrix}

旋转变换

三维旋转变换一般看作二维旋转变换的组合,可分为绕x轴旋转、绕y轴旋转、绕z轴旋转,绕坐标轴旋转角用\beta表示,\beta正向定义符合右手螺旋定则,大拇指指向旋转轴正向,其余四指的转向为转角的正向。

x轴旋转

\beta为正向旋转角

x轴旋转变换的坐标表示为\left\{\begin{matrix} x^{'}=x\\ y^{'}=y\cos\beta -z\sin \beta \\ z^{'}=y\sin\beta+z\cos\beta\end{matrix}\right.

x轴旋转三维变换矩阵为M=\begin{bmatrix} 1 &0 &0 &0\\ 0 &\cos\beta &-\sin\beta &0 \\ 0 &\sin\beta &\cos\beta &0 \\ 0 &0 &0 &1 \end{bmatrix}

y轴旋转

\beta为正向旋转角

y轴旋转变换的坐标表示为\left\{\begin{matrix} x^{'}=x\cos\beta+z\sin\beta\\ y^{'}=y \\ z^{'}=-x\sin\beta+z\cos\beta\end{matrix}\right.

y轴旋转三维变换矩阵为M=\begin{bmatrix} \cos\beta &0 &\sin\beta &0\\ 0 &1 &0 &0 \\ -\sin\beta &0 &\cos\beta &0 \\ 0 &0 &0 &1 \end{bmatrix}

z轴旋转

\beta为正向旋转角

z轴旋转变换的坐标表示为\left\{\begin{matrix} x^{'}=x\cos\beta-y\sin\beta\\ y^{'}=x\sin\beta+y\cos\beta \\ z^{'}=z \end{matrix}\right.

z轴旋转三维变换矩阵为M=\begin{bmatrix} \cos\beta &-\sin\beta &0 &0\\ \sin\beta &\cos\beta &0 &0 \\ 0 &0 &1&0 \\ 0 &0 &0 &1 \end{bmatrix}

反射变换

三维反射分为关于坐标轴的反射和关于坐标平面的反射两类

关于x轴的反射

关于x轴反射变换的坐标表示为\left\{\begin{matrix} x^{'}=x\\ y^{'}=-y \\ z^{'}=-z \end{matrix}\right.

关于x轴的三维反射变换矩阵为M=\begin{bmatrix} 1 &0 &0 &0\\ 0 &-1 &0 &0 \\ 0 &0 &-1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

关于y轴的反射

关于y轴反射变换的坐标表示为\left\{\begin{matrix} x^{'}=-x\\ y^{'}=y \\ z^{'}=-z \end{matrix}\right.

关于y轴的三维反射变换矩阵为M=\begin{bmatrix} -1 &0 &0 &0\\ 0 &1 &0 &0 \\ 0 &0 &-1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

关于z轴的反射

关于z轴反射变换的坐标表示为\left\{\begin{matrix} x^{'}=-x\\ y^{'}=-y \\ z^{'}=z \end{matrix}\right.

关于z轴的三维反射变换矩阵为M=\begin{bmatrix} -1 &0 &0 &0\\ 0 &-1 &0 &0 \\ 0 &0 &1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

关于xOy平面的反射

关于xOy平面反射变换的坐标表示为\left\{\begin{matrix} x^{'}=x\\ y^{'}=y \\ z^{'}=-z \end{matrix}\right.

关于xOy平面的三维反射变换矩阵为M=\begin{bmatrix} 1 &0 &0 &0\\ 0 &1 &0 &0 \\ 0 &0 &-1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

关于yOz平面的反射

关于yOz平面反射变换的坐标表示为\left\{\begin{matrix} x^{'}=-x\\ y^{'}=y \\ z^{'}=z \end{matrix}\right.

关于yOz平面的三维反射变换矩阵为M=\begin{bmatrix} -1 &0 &0 &0\\ 0 &1 &0 &0 \\ 0 &0 &1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

关于zOx平面的反射

关于zOx平面反射变换的坐标表示为\left\{\begin{matrix} x^{'}=x\\ y^{'}=-y \\ z^{'}=z \end{matrix}\right.

关于zOx平面的三维反射变换矩阵为M=\begin{bmatrix} 1 &0 &0 &0\\ 0 &-1 &0 &0 \\ 0 &0 &1 &0 \\ 0 &0 &0 &1 \end{bmatrix}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算【第一阶段(22)】Linux的进程和计划任务管理

目录 一、查看进程 1.1、程序和进程的关系 1.2、查看进程 1.2.1、静态查看进程信息ps ​编辑 1.2.1.1、实验 1.2.2、动态查看进程信息top 1.2.2.1、实验 1.2.2.2、top 命令全屏操作界面快捷键 1.2.3、pgrep根据特定条件查询进程pid信息 1.2.4、pstree命令以树形结构列出…

Avue框架学习

Avue框架学习 我们的项目使用的框架是 Avue 在我看来这个框架最大的特点是可以基于JSON配置页面上的From,Table以及各种各样的输入框等,不需要懂前端就可以很快上手,前提是需要多查一下文档 开发环境搭建 由于我本地的环境全是用docker来搭建的,所以我依然选择用docker搭建我…

万字浅析视频搜索系统中的多模态能力建设

万字浅析视频搜索系统中的多模态能力建设 FesianXu 20240331 at Tencent WeChat search team 前言 视频搜索是天然的富媒体检索场景,视觉信息占据了视频的一大部分信息量,在视频搜索系统中引入多模态能力,对于提高整个系统的能力天花板至关重…

机器人控制系列教程之任务空间运动控制器搭建(1)

任务空间运动控制简介 任务空间运动控制—位置被指定给控制器作为末端执行器的姿态。然后,控制器驱动机器人的关节配置到使末端执行器移动到指定姿态的值。这有时被称为操作空间控制。 任务空间运动模型表示机器人在闭环任务空间位置控制下的运动,可使用…

汽车电子工程师入门系列——AUTOSAR通信服务框架(下)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

python格式文件

python小白考后复习 CSV格式文件ini格式文件我们可以读取所有节点还可以输出一个节点下所有键值对组成的元组获取节点下的键对应的值判断节点是否存在添加节点还可以添加键值还可以删除节点 XML格式文件读取若是文件格式存在的xml若是以字符串形式存在的xml获取子标签还有获取子…

【分布式计算框架 MapReduce】高级编程—搜索日志数据分析

目录 一、对于 sogou_500w_utf 数据,使用 MapReduce 编程模型完成对以下数据的分析任务 1. 统计 2011-12-30 日搜索记录,每个时间段的搜索次数 (1)运行截图 (2) 源代码 2. 统计 2011-12-30 日 3 点至 …

2024最新初级会计职称题库来啦!!!

16.根据增值税法律制度的规定,下列各项中,属于"提供加工、修理修配劳务"的是()。 A.修理小汽车 B.修缮办公楼 C.爆破 D.矿山穿孔 答案:A 解析:选项AB:修理有形动产(…

【PL理论深化】(13) 变量与环境:文法结构 | 真假表达式:isZero E | let 表达式叠放 | 定义的规则 | 条件语句的使用

💬 写在前面:从现在开始,让我们正式设计和实现编程语言。首先,让我们扩展在之前定义的整数表达式语言,以便可以使用变量和条件表达式。 目录 0x00 文法结构 0x01 真假表达式:isZero E 0x02 let 表达式叠…

Elasticsearch 第四期:搜索和过滤

序 2024年4月,小组计算建设标签平台,使用ES等工具建了一个demo,由于领导变动关系,项目基本夭折。其实这两年也陆陆续续接触和使用过ES,两年前也看过ES的官网,当时刚毕业半年多,由于历史局限性导…

ArtTS系统能力-通知的学习(3.1)

上篇回顾: ArtTS语言基础类库-容器类库内容的学习(2.10.2) 本篇内容: ArtTS系统能力-通知的学习(3.1) 一、 知识储备 1. 基础类型通知 按内容分成四类: 类型描述NOTIFICATION_CONTENT_BASIC_TEXT普通文…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件,它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持,用户无需重新启动电脑即可在Mac上运行Windows应用程序,实现了真正的无缝切换。 二…

普元EOS学习笔记-创建精简应用

前言 本文依旧基于EOS8.3进行描述。 在上一篇文章《EOS8.3精简版安装》中,我们了解到普元预编译好的EOS的精简版压缩包,安装后,只能进行低开,而无法高开。 EOS精简版的高开方式是使用EOS开发工具提供的IDE,创建一个…

东软睿驰总裁兼CTO杜强受邀出席 CICV 2024智能网联汽车技术首脑(CTO)闭门峰会

近日,第十一届国际智能网联汽车技术年会(CICV 2024)在北京举办,会议期间组织智能网联汽车技术首脑(CTO)闭门峰会,邀请40余位技术领袖围绕智能网联汽车产业生态建设以及智能网联汽车数据、算力和…

Python的numpy简单使用

1.可以调用引入numpy里面的函数,如add可以把俩数相加,也可以创建一个数组arr,arr.shape是数组arr的属性,如果后有跟()就是里面的一个函数 type()函数可以知道里面是什么类型 变量.shape可以知道这个变量是…

基于决策树的旋转机械故障诊断(Python)

前置文章: 将一维机械振动信号构造为训练集和测试集(Python) https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋转机械振动信号特征提取(Python) https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

菲尔兹奖得主测试GPT-4o,经典过河难题未能破解!最强Claude 3.5回答离谱!

目录 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题? 02 加大难度:100只鸡、1000只鸡如何? 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题? 最近,菲尔兹奖得主Timothy Gowers分享了他测试GPT-4o的经历&a…

游戏推荐: 植物大战僵尸杂交版

下载地址网上一搜就有. 安装就能玩. 2是显血. 4显示植物血, 5是加速. 都是左手主键盘的按钮, 再按是取消. 比较刺激: ps: 设置里面还能打开自动收集阳光和金币.

视频融合共享平台LntonCVS统一视频接入平台智慧安防应用方案

安防视频监控平台LntonCVS是一款拥有强大拓展性和灵活部署能力的综合管理平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,同时兼容各厂家的私有协议和SDK,如海康Ehome、海大宇等。LntonCVS不仅具备传统安防视频监控功能&…

Django 一对一关系

作用: 两个数据库表建立外键关系当外键表的数据被删除时,主表的数据也会一并删除。 1,添加表模型 Test/app8/views.pyfrom django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email …