- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 282字
- 2021-06-30 14:45:56
Matrix storage
Now that you know that the matrix layout is going to be column matrices, the next question is how to store the actual matrix. Matrix storage is a confusing topic.
Since a matrix is stored in memory as a linear array, let's figure out what elements should be placed where. A row-major matrix is stored in memory one row at a time. A column-major matrix is stored one column at a time.
Since both row- and column-major matrices contain the same vectors, the final linear mapping ends up being the same, regardless of the major of the matrix. The following Figure 3.3 demonstrates this:

Figure 3.3: Matrix storage mapping to a linear array
The matrix class you will be building is a column-major matrix with column storage; this means there will be a discrepancy between the physical memory layout of the matrix and the logical placement of its elements. It's easy to treat a matrix with a linear memory layout as a row matrix but remember that each of those rows is actually a column.
Important note
The typical mapping of a two-dimensional grid to linear storage is "row * numberOfColumns + column". This mapping won't work for storing a column-major matrix. When looking at a matrix, the element in column 2, row 3 should have a linear index of 7, but the previous mapping yields 14. Instead, to account for the column-major storage, the mapping formula is "column * numberOfRows + row".
Understanding how a matrix is stored in memory is important, it's going to affect how data is stored and how APIs can access that data. In the next section, you will start to implement a matrix structure.
- Spring Cloud Alibaba核心技術與實戰案例
- JSP網絡編程(學習筆記)
- Getting Started with CreateJS
- 面向STEM的Scratch創新課程
- UML+OOPC嵌入式C語言開發精講
- 零基礎學Java程序設計
- 從學徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- 實戰Java高并發程序設計(第3版)
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- Node.js應用開發
- Spring Boot學習指南:構建云原生Java和Kotlin應用程序
- C#教程
- 程序員的算法趣題2
- D Cookbook
- Mastering Rust