最近在看《3D数学基础:图形与游戏开发》。该书第六章实现了一个简单三维向量类。我看了一下代码,发现有些地方是错的,于是做了一些小修改。该三维向量类实现了一些常用的向量运算,如点乘、叉乘等。对此不熟悉的同学可以参考相关线性代数教材。现把源码贴上:
#include
//@brief 浮点数比较宏,采用VC的浮点数单精度FLT_EPSILON
#define FLOAT_EQ(x,v) (((v - FLT_EPSILON) < x) && (x
namespace TD_Math
{
class Vector3
{
public:
float x;
float y;
float z;
//@brief 默认构造函数,不执行任何操作
Vector3()
{
zero();// 默认为零向量
}
//@brief 复制构造函数
Vector3(const Vector3 &a):x(a.x),y(a.y),z(a.z){}
//@brief 带参数的构造函数,用三个值完成初始化
Vector3(float fx,float fy,float fz):x(fx),y(fy),z(fz){}
//@brief 重载复制运算符,并返回引用,以实现左值
Vector3& operator = (const Vector3 &a)
{
x = a.x;
y =