從仿射矩陣得到旋轉量平移量縮放量

仿射變換原理

仿射變換是一種線性變換,可以包括平移、旋轉、縮放和剪切等操作。其一般公式可以表示為:
$$\mathbf{x’} = A \mathbf{x} + \mathbf{b} ]
其中:

  • (\mathbf{x}) 是輸入向量,通常表示一個點在二維或三維空間中的坐標。
  • (\mathbf{x’}) 是輸出向量,表示經過仿射變換后的點。
  • (A) 是一個矩陣,稱為仿射變換矩陣,它包含了線性變換的部分。
  • (\mathbf{b}) 是一個向量,稱為平移向量,它包含了平移的部分。

具體來說,對于二維空間中的點 ((x, y)),仿射變換可以表示為:
( x ′ y ′ ) = ( a b c d ) ( x y ) + ( e f ) \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} e \\ f \end{pmatrix} (xy?)=(ac?bd?)(xy?)+(ef?)
其中:

  • (a, b, c, d) 是仿射變換矩陣 (A) 的元素。
  • (e, f) 是平移向量 (\mathbf{b}) 的元素。

齊次坐標下:
( x ′ y ′ 1 ) = ( a b e c d f 0 0 1 ) ( x y 1 ) \begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} ?xy1? ?= ?ac0?bd0?ef1? ? ?xy1? ?

仿射變換是一種在二維或三維空間中保持點之間相對位置的幾何變換。它包括平移、旋轉、縮放和剪切等基本變換。仿射變換可以用矩陣表示,并且可以通過矩陣乘法進行組合。在計算機圖形學和圖像處理中,仿射變換是常用的技術。

齊次坐標

齊次坐標是一種將二維或三維坐標擴展到更高維度的方法,以便于表示平移變換。在二維空間中,齊次坐標是將 ( x , y ) (x, y) (x,y) 擴展為 ( x , y , 1 ) (x, y, 1) (x,y,1)。這使得平移、旋轉、縮放等變換都可以用矩陣乘法表示,從而簡化了變換的組合和計算。

例如,二維平移的齊次坐標表示為:
[ x ′ y ′ 1 ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix}=\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x \\ y \\ 1 \end{bmatrix} ?xy1? ?= ?100?010?tx?ty?1? ? ?xy1? ?

通過使用齊次坐標,我們可以將所有的仿射變換統一表示為矩陣乘法,從而簡化了變換的組合和計算。

基本變換

仿射變換的公式可以通過線性代數的基本原理推導出來。例如,旋轉矩陣的推導基于三角函數和線性組合。

組合所有基本仿射變換(平移、旋轉、縮放和剪切)的總變換可以通過矩陣乘法來實現。為了簡化計算,我們使用齊次坐標。在二維空間中,每個變換都可以表示為一個 3x3 矩陣。組合這些變換時,我們需要按照特定的順序應用這些矩陣。

假設我們有一個點 P ( x , y ) P(x, y) P(x,y),我們想要先對其進行縮放,然后旋轉,接著平移,最后進行剪切。變換的順序很重要,因為它會影響最終結果。

  1. 縮放矩陣 S S S
    S = [ s x 0 0 0 s y 0 0 0 1 ] S = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} S= ?sx?00?0sy?0?001? ?

  2. 旋轉矩陣 R R R
    R = [ cos ? θ ? sin ? θ 0 sin ? θ cos ? θ 0 0 0 1 ] R = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} R= ?cosθsinθ0??sinθcosθ0?001? ?

  3. 平移矩陣 T T T
    T = [ 1 0 t x 0 1 t y 0 0 1 ] T = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} T= ?100?010?tx?ty?1? ?

  4. 斜切矩陣 H H H

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908476.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908476.shtml

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

相關文章

C++課設:通訊錄管理系統(vector、map協作實現)

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 專欄介紹:《編程項目實戰》 目錄 一、為什么選擇C++開發通訊錄系統?1. C++的現狀2. STL標準模板庫的威力二、系統架構設計與STL容器選型1. 三層架構…

Spring Boot 常用注解面試題深度解析

🤟致敬讀者 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺 📘博主相關 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息 文章目錄 Spring Boot 常用注解面試題深度解析一、核心…

黃曉明新劇《潛淵》定檔 失憶三面間諜開啟諜戰新維度

據悉,黃曉明領銜主演的諜戰劇《潛淵》已于近日正式定檔6月9日,該劇以“失憶三面間諜”梁朔為核心,打破傳統諜戰劇的框架和固有角度,以一種特別的視角將懸疑感推向極致。劇中,梁朔因頭部受傷失去記憶,陷入身…

【自動駕駛避障開發】如何讓障礙物在 RViz 中‘顯形’?呈現感知數據轉 Polygon 全流程

【自動駕駛避障開發】如何讓障礙物在 RViz 中"顯形"?呈現感知數據轉 Polygon 全流程 自動駕駛系統中的障礙物可視化是開發調試過程中至關重要的一環。本文將詳細介紹如何將自動駕駛感知模塊檢測到的障礙物數據轉換為RViz可顯示的Polygon(多邊形)形式,實現障礙物…

#16 學習日志軟件測試

#16 #13布置的任務都沒有wanc 反思一下 一個是貪玩 一個是懶 還有一個原因是學習方式 單看視頻容易困 然后是一個進度寶貝 java ai 編程 完 挑著看的 廖雪峰教程 完 速看 很多過時 javaweb ai筆記 見到13.aop 小林coding 看到4.并發 java guide 還沒開始 若依框架 筆…

在Linux查看電腦的GPU型號

VGA 是指 Video Graphics Array,這是 IBM 于 1987 年推出的一種視頻顯示標準。 lspci | grep vga 📌 lspci | grep -i vga 的含義 lspci:列出所有連接到 PCI 總線的設備。 grep -i vga:過濾輸出,僅顯示包含“VGA”字…

daz3d + PBRSkin (MDL)+ SSS

好的,我們來解釋一下 Daz3D 中的 PBRSkin (MDL) Shader。 簡單來說,PBRSkin (MDL) 是 Daz Studio 中一種基于物理渲染(PBR)技術、專門用于創建高度逼真人物皮膚效果的著色器(Shader)。 它利用 NVIDIA 的材…

會計 - 合并1- 業務、控制、合并日

一、業務 1.1 業務的定義以及構成要素 業務,是指企業內部某些生產經營活動或資產的組合,該組合一般具有投入、加工處理過程和產出能力,能夠獨立計算其成本費用或所產生的收入。 (1)投入,指原材料、人工、必要的生產技術等無形資產以及構成產出能力的機器設備等其他長期資…

uni-app 項目支持 vue 3.0 詳解及版本升級方案?

uni-app 支持 Vue 3.0 詳解及升級方案 一、uni-app 對 Vue 3.0 的支持現狀 uni-app 從 3.0 版本 開始支持 Vue 3.0,主要變化包括: 核心框架升級: 基于 Vue 3.0 的 Composition API 和 Options API 雙模式支持提供 vueuse/core 等組合式 API…

Java高級 | 【實驗三】Springboot 靜態資源訪問

隸屬文章: Java高級 | (二十二)Java常用類庫-CSDN博客 系列文章: Java高級 | 【實驗一】Spring Boot安裝及測試 最新-CSDN博客 Java高級 | 【實驗二】Springboot 控制器類相關注解知識-CSDN博客 目錄 一、Thymeleaf 1.1 是什么&…

12、企業應收賬款(AR)全流程解析:從發票開具到回款完成

在商業活動中,現金流如同企業的命脈,而應收管理則是維系這條命脈正常運轉的重要保障。許多企業由于對應收賬款缺乏有效管理,常常面臨資金周轉困難的問題。實踐證明,建立科學的應收管理體系能夠顯著提升資金回籠效率,為…

Python訓練營打卡Day46(2025.6.6)

知識點回顧: 不同CNN層的特征圖:不同通道的特征圖什么是注意力:注意力家族,類似于動物園,都是不同的模塊,好不好試了才知道。通道注意力:模型的定義和插入的位置通道注意力后的特征圖和熱力圖 i…

ASP.NET MVC添加視圖示例

ASP.NET MVC高效構建Web應用- 商品搜索 - 京東 視圖(V)是一個動態生成HTML頁面的模板,它負責通過用戶界面展示內容。本節將修改HelloWorldController類,并使用視圖模板文件,以干凈地封裝生成對客戶端的HTML響應的過程…

12.6Swing控件4 JSplitPane JTabbedPane

JSplitPane JSplitPane 是 Java Swing 中用于創建分隔面板的組件,支持兩個可調整大小組件的容器。它允許用戶通過拖動分隔條來調整兩個組件的相對大小,適合用于需要動態調整視圖比例的場景。 常用方法: setLeftComponent(Component comp)&a…

Spark 單機模式部署與啟動

🚀 Spark 單機模式部署與啟動教程(適配 Hadoop 3.1.1) 本文記錄了在 Linux 環境中部署 Spark 的完整過程,使用 Standalone 單機模式,適配 Hadoop 3.1.1,最終可通過 Web 頁面訪問 Spark Master 狀態界面。 …

JAVA學習 DAY2 java程序運行、注意事項、轉義字符

本系列可作為JAVA學習系列的筆記,文中提到的一些練習的代碼,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 點贊關注不迷路!您的點贊、關注和收藏是對小編最大的支持和鼓勵! 系列文章目錄…

Visual Studio 中的 MD、MTD、MDD、MT 選項詳解

在Visual Studio中開發C++項目時,正確選擇運行時庫(runtime library)對于確保應用程序的性能、穩定性和兼容性至關重要。本文將詳細介紹/MD, /MT, /MDd, 和 /MTd這些編譯器選項的意義、應用場景及其區別。 MSVCRT.dll MSVCRT.dll 是 Microsoft Visual C++ Runtime Library …

EasyRTC嵌入式音視頻通信SDK助力物聯網/視頻物聯網音視頻打造全場景應用

一、方案概述? 隨著物聯網技術的飛速發展,視頻物聯網在各行業的應用日益廣泛。實時音視頻通信技術作為視頻物聯網的核心支撐,其性能直接影響著系統的交互體驗和信息傳遞效率。EasyRTC作為一款成熟的音視頻框架,具備低延遲、高畫質、跨平臺等…

棧的概念以及實現

目錄: 一、棧的概念 二、棧的實現 1.棧的初始化 2.棧的銷毀 3.入棧 4.出棧 5.獲取棧頂數據 6.判斷棧是否為空 7.獲取棧的個數 三、代碼 一、棧的概念 棧是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。 進行數據插入和刪除操作的一端…

【Bluedroid】藍牙啟動之 SMP_Init 源碼解析

藍牙(安全管理協議,Security Management Protocol)是藍牙設備安全通信的核心協議,負責配對、密鑰協商和安全等級管理。本文圍繞 Bluedroid SMP 協議的初始化流程展開,系統解析其核心控制塊(tSMP_CB)的狀態管理、與 L2CAP 層的接口注冊,以及 P-256 橢圓曲線參數的初始化…