vector3.cpp
来自「在程序中根据3D地形的高度图动态地生成光照图,其中已包含了3D地形混合纹理生成的」· C++ 代码 · 共 57 行
CPP
57 行
#include "Vector3.h"
// 重载赋值运算符,并返回引用,以实现左值
Vector3 &Vector3::operator =(const Vector3 &rhs)
{
x = rhs.x;
y = rhs.y;
z = rhs.z;
return *this;
}
// 重载自反运算符
Vector3 &Vector3::operator +=(const Vector3 &rhs)
{
x += rhs.x;
y += rhs.y;
z += rhs.z;
return *this;
}
Vector3 &Vector3::operator -=(const Vector3 &rhs)
{
x -= rhs.x;
y -= rhs.y;
z -= rhs.z;
return *this;
}
Vector3 &Vector3::operator *=(GLfloat a)
{
x *= a;
y *= a;
z *= a;
return *this;
}
Vector3 &Vector3::operator /=(GLfloat a)
{
GLfloat fOneOverA = 1.0f/a;
x *= fOneOverA;
y *= fOneOverA;
z *= fOneOverA;
return *this;
}
// 向量标准化
GLvoid Vector3::Normalize()
{
GLfloat fMagSq = x*x + y*y + z*z;
if (fMagSq > 0.0f) // 检查除零
{
GLfloat fOneOverMag = 1.0f/sqrt(fMagSq);
x *= fOneOverMag;
y *= fOneOverMag;
z *= fOneOverMag;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?