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 + -
显示快捷键?