【Overload游戏引擎】源码分析之一:OvMaths函数库(上)

2021SC@SDUSC 

目录

1.向量操作函数

1.1 3维向量

1.2 4维向量

2.矩阵操作函数

2.1 3维矩阵

2.2 4维矩阵

纺射变换矩阵


OvMaths函数库主要包含了关于矩阵、向量等操作的函数,同时作为游戏引擎的数学库,OvMaths中还包含了计算机图形渲染所需的转化矩阵等的计算方法。以下是正文部分。

1.向量操作函数

该函数库中的向量操作函数包括2维、3维、4维这三种,以下仅对3维向量进行分析,4维向量由于其在计算机图形学中的特殊性,将会单独分析。

1.1 3维向量

namespace OvMaths
{
	/**
	* Mathematic representation of a 3D vector of floats
	*/
	struct FVector3
	{
		static const FVector3 One;
		static const FVector3 Zero;
		static const FVector3 Forward;
		static const FVector3 Right;
		static const FVector3 Up;

		float x;
		float y;
		float z;

首先简单看看,3维向量定义了一个全1向量与一个全0向量,方便在下文的函数中直接调用。

然后是3个比较重要的向量:forward,up,right。下文简单介绍一下相关的图形学知识。

#include <utility>
#include <stdexcept>
#include <cmath>

#include "OvMaths/FVector3.h"

const OvMaths::FVector3 OvMaths::FVector3::One(1.0f, 1.0f, 1.0f);
const OvMaths::FVector3 OvMaths::FVector3::Zero(0.0f, 0.0f, 0.0f);
const OvMaths::FVector3 OvMaths::FVector3::Forward(0.0f, 0.0f, 1.0f);
const OvMaths::FVector3 OvMaths::FVector3::Right(1.0f, 0.0f, 0.0f);
const OvMaths::FVector3 OvMaths::FVector3::Up(0.0f, 1.0f, 0.0f);

在计算机图形学中,LookAt矩阵被用于定义摄像机的视角坐标系,而LookAt矩阵就是由forward,up,right这三个向量构成的。

其中forward向量为摄像机当前朝向的反方向,在初始世界坐标系中指向z轴的正半轴,因为摄像机会朝向z轴负半轴。

而right向量一般会由y轴叉乘forward向量获得,指明摄像机右侧方向。

最后将right向量与forward叉乘得到up向量。

(上图来自于LearnOpenGL官网) 

往后是一系列的运算符重载函数与3维向量的基本运算法则,涉及基础的线性代数知识,这里不作详细讲解。

顺带一提,这部分计算的函数先定义了基础操作函数,例如Add,之后在运算符重载中直接复用,极大精简了代码。


OvMaths::FVector3 OvMaths
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值