計算機圖形學筆記----矩陣

矩陣和標量的運算

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.pswp.cn/web/37265.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37265.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37265.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django靚號管理系統:實現用戶列表功能

在本篇博文中,我們將介紹如何在Django靚號管理系統中實現用戶列表功能。這個功能允許管理員查看系統中所有用戶的基本信息。我們將逐步講解如何設置URL路由、創建視圖函數以及設計模板。 1. 設置URL路由 首先,我們需要在??urls.py??文件中添加一個新的URL路徑,以便訪問…

云計算【第一階段(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命令以樹形結構列出…

CentOS系統日志入門

日志清單 系統的引導日志:/var/log/boot.log核心啟動日志:/var/log/dmesg系統報錯日志:/var/log/messages郵件系統日志:/var/log/maillogFTP系統日志:/var/log/xferlog安全信息和系統登錄與網絡連接的信息:/var/log/secureNews日志:/var/log/spoolerRPM軟件包:/var/log/rpmpkg…

Android 常用ADB命令

文章目錄 Android 常用ADB命令概述adb 的工作原理命令adb命令shell命令 使用adb服務器操作設備操作應用文件操作activity操作日志操作 Android 常用ADB命令 概述 Android 調試橋 (adb) 是一種功能多樣的命令行工具,可讓您與設備進行通信。adb 命令可用于執行各種設…

Avue框架學習

Avue框架學習 我們的項目使用的框架是 Avue 在我看來這個框架最大的特點是可以基于JSON配置頁面上的From,Table以及各種各樣的輸入框等,不需要懂前端就可以很快上手,前提是需要多查一下文檔 開發環境搭建 由于我本地的環境全是用docker來搭建的,所以我依然選擇用docker搭建我…

萬字淺析視頻搜索系統中的多模態能力建設

萬字淺析視頻搜索系統中的多模態能力建設 FesianXu 20240331 at Tencent WeChat search team 前言 視頻搜索是天然的富媒體檢索場景,視覺信息占據了視頻的一大部分信息量,在視頻搜索系統中引入多模態能力,對于提高整個系統的能力天花板至關重…

機器人控制系列教程之任務空間運動控制器搭建(1)

任務空間運動控制簡介 任務空間運動控制—位置被指定給控制器作為末端執行器的姿態。然后,控制器驅動機器人的關節配置到使末端執行器移動到指定姿態的值。這有時被稱為操作空間控制。 任務空間運動模型表示機器人在閉環任務空間位置控制下的運動,可使用…

python基礎:高級數據類型:集合

1、集合的定義 集合是一個無序且無重復元素的列表。其定義與數學定義一致。其無序和不重復和字典特征類似,但是無“值”。 2、集合的創建 集合一般由列表創建,在初始化列表時保證其元素唯一性,即為集合。 創建方法:x set(list…

汽車電子工程師入門系列——AUTOSAR通信服務框架(下)

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 屏蔽力是信息過載時代一個人的特殊競爭力,任何消耗你的人和事,多看一眼都是你的不對。非必要不費力證明自己,無利益不試圖說服別人,是精神上的節…

GitHub每周最火火火項目(6.24-6.30)

項目名稱:dortania / OpenCore - Legacy - Patcher 項目介紹:該項目旨在讓用戶體驗如同以前一樣的macOS。它可能提供了一種方式來解決在某些情況下,用戶無法正常使用或升級macOS的問題。通過使用OpenCore - Legacy - Patcher,用戶…

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的官網,當時剛畢業半年多,由于歷史局限性導…

Java有沒有goto語句

一、技術細節 Java作為一種廣泛使用的編程語言,其設計哲學強調清晰、簡潔和易于維護。在技術細節層面,Java確實支持goto語句作為關鍵字,但在實際編程中,goto語句并不被推薦使用。Java中的goto是保留字,主要用于兩個場…

chrome-base源碼分析(1)macros模塊

Chrome-base源碼分析(2)之Macros模塊 Author:Once Day Date:2024年6月29日 漫漫長路,才剛剛開始… 全系列文章請查看專欄: 源碼分析_Once-Day的博客-CSDN博客 參考文檔: macros - Chromium Code SearchChrome base 庫詳解:工…

安全架構概述_2.安全架構的定義和范圍

安全架構是架構面向安全性方向上的一種細分,比如細分領域含有運維架構、數據庫架構等。如果安全性體現在產品上,那么,通常的產品安全架構、安全技術體系架構和審計架構可組成三道防線。 (1)產品安全架構:構…

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應用程序,實現了真正的無縫切換。 二…