dl
dl_matrix.h 文件参考

矩阵(列存储) 更多...

#include <array>
#include "dl_type.h"
#include "dl_math.h"
#include "base/dl_string.h"

浏览该文件的源代码.

class  dl::Matrix< T, M, N >
 矩阵 更多...
 

命名空间

namespace  dl
 
namespace  dl::Mat
 矩阵操作
 

类型定义

using dl::Matrix4 = Matrix<Float, 4, 4>
 
using dl::Matrix3 = Matrix<Float, 3, 3>
 

函数

template<typename T, size_t M, size_t N>
bool dl::operator== (const Matrix< T, M, N > &a, const Matrix< T, M, N > &b)
 判断相等
 
template<typename T, size_t M, size_t N, size_t P>
Matrix< T, M, Ndl::operator* (const Matrix< T, M, P > &a, const Matrix< T, P, N > &b)
 矩阵乘法
 
template<typename T, size_t M, size_t N>
Array< T, Mdl::operator* (const Matrix< T, M, N > &a, const Array< T, N > &v)
 矩阵 乘 向量
 
Matrix4 dl::Mat::CreateIdentity ()
 创建单位矩阵
 
Matrix4 dl::Mat::CreateTranslation (const Position3 &t)
 创建平移矩阵
 
void dl::Mat::ApplyTranslation (Matrix4 &m, const Position3 &t)
 平移矩阵
 
Matrix4 dl::Mat::CreateRotation (const Position3 &axis, Float angle)
 创建旋转矩阵
 
Matrix4 dl::Mat::CreateRotation (const Position4 &q)
 创建旋转矩阵(四元数)
 
Matrix4 dl::Mat::CreateScaling (const Position3 &s)
 创建缩放矩阵
 
Matrix4 dl::Mat::CreateLookTo (const Position3 &eye, const Position3 &dir, const Position3 &up)
 创建LookTo矩阵
 
Matrix4 dl::Mat::CreateLookAt (const Position3 &eye, const Position3 &target, const Position3 &up)
 创建LookAt矩阵
 
Matrix4 dl::Mat::CreatePerspective (Float fovy, Float aspect, Float z_near, Float z_far)
 创建透视投影矩阵 [0, 1]
 
Matrix4 dl::Mat::CreateOrthogonal (Float left, Float top, Float right, Float bottom, Float z_near, Float z_far)
 创建正交投影矩阵 [0, 1]
 
Matrix4 dl::Mat::GetInverse (const Matrix4 &m)
 获得逆矩阵
 
Position3 dl::Mat::ApplyDot (const Matrix4 &mat, const Position3 &dot)
 变换点
 
Position3 dl::Mat::ApplyDir (const Matrix4 &mat, const Position3 &dir)
 变换向量
 
Matrix3 dl::Mat::ToMatrix3 (const Matrix4 &mat)
 
void dl::Mat::Test ()
 验证正确性
 

变量

constexpr Position3 dl::AXIS_X = { 1.0f, 0.0f, 0.0f }
 
constexpr Position3 dl::AXIS_Y = { 0.0f, 1.0f, 0.0f }
 
constexpr Position3 dl::AXIS_Z = { 0.0f, 0.0f, 1.0f }
 
constexpr Position3 dl::AXIS_UP = AXIS_Z
 
constexpr Position3 dl::AXIS_FORWARD = AXIS_X
 

详细描述

矩阵(列存储)

版本
1.0
作者
lveyou
日期
22-10-17
注解
使用列优先存储(一列一列的内存分布,主要是可以直接传给glsl)
数学定义:m X n矩阵是由,m行、n列组成的矩阵,对应ij
右边矩阵先变换
  • - - - n(j,x) |11 12 13 14 |21 22 23 24 |31 32 33 34 |41 42 43 44 m(i,y)

在文件 dl_matrix.h 中定义.