引擎-关于旋转矩阵计算的一些数学杂谈

内容目录

在自研引擎中,我添加了旋转矩阵,原理有点多正在写。

[nodiscard]] inline constexpr Matrix Rotate(const Vector3<T>& Axis, const float Degrees) requires (M == 4 && N == 4 && CArithmetic<T>)
{
    const float Radians = Degrees * (PI / 180.0f);
    Matrix Result = *this;
    Result[0][0] = std::cos(Radians) + (1 - std::cos(Radians)) * Axis.X * Axis.X;
    Result[0][1] = (1 - std::cos(Radians)) * Axis.X * Axis.Y - std::sin(Radians) * Axis.Z;
    Result[0][2] = (1 - std::cos(Radians)) * Axis.X * Axis.Z + std::sin(Radians) * Axis.Y;
    Result[1][0] = (1 - std::cos(Radians)) * Axis.X * Axis.Y + std::sin(Radians) * Axis.Z;
    Result[1][1] = std::cos(Radians) + (1 - std::cos(Radians)) * Axis.Y * Axis.Y;
    Result[1][2] = (1 - std::cos(Radians)) * Axis.Y * Axis.Z - std::sin(Radians) * Axis.X;
    Result[2][0] = (1 - std::cos(Radians)) * Axis.X * Axis.Z - std::sin(Radians) * Axis.Y;
    Result[2][1] = (1 - std::cos(Radians)) * Axis.Y * Axis.Z - std::sin(Radians) * Axis.X;
    Result[2][2] = std::cos(Radians) + (1 - std::cos(Radians)) * Axis.Z * Axis.Z;
    return Result;
}
同步Sch

Recent Posts

UE-Rider 无法解析 SDK 解决方案

无法解析 SDK“Micros…

5 天 ago

杂项 – 关于Ascii字符画生成相关网站

网站 如果想实现这样的注释效果…

2 周 ago

C++-分数泛型模板类实现

前言 在引擎库中,有时候可能会…

3 周 ago

C++-HashMap 数据结构的实现

前要说明 HashMap 是一…

1 月 ago

杂项 – Markdown

跳转到 Markdown – …

1 月 ago

杂谈-我都玩过什么游戏

在面试的过程中,我发现游戏公司…

3 月 ago