目录
前言
本节内容用于transform功能的实现
一、主要工作
渲染器包括了基础的模型信息系统,因此图形学中关键的坐标系变化相关的功能是必要的。本节主要讲解平移、旋转、缩放的相关函数与数据结构的实现。
二、具体代码
1、头文件包含了transform类,包括translate、scale、rotate等,并且编写了将欧拉角转化为四元数的功能,此外还包括了基础的lookat视锥体变化函数。
class FALCOR_API Transform
{
public:
Transform();
const float3& getTranslation() const { return mTranslation; }
void setTranslation(const float3& translation);
const float3& getScaling() const { return mScaling; }
void setScaling(const float3& scaling);
const glm::quat& getRotation() const { return mRotation; }
void setRotation(const glm::quat& rotation);
float3 getRotationEuler() const;
void setRotationEuler(const float3& angles);
float3 getRotationEulerDeg() const;
void setRotationEulerDeg(const float3& angles);
void lookAt(const float3& position, const float3& target, const float3& up);
const glm::float4x4& getMatrix() const;
bool operator==(const Transform& other) const;
bool operator!=(const Transform& other) const { return !((*this) == other); }
private:
float3 mTranslation = f