参考资料:1、 [美] 邓恩(Dunn F.)著. 3D数学基础——图形设计与开发. 史银雪,陈洪,王荣静 译 清华大学出版社 p57-65
2、http://www.2cto.com/kf/201311/260139.html
编程环境 QT4.8.4 + VS2010
本文用 C++实现一个简单的Vector3类的功能,已经实现的功能有:
1、重载赋值运算符“=”
2、重载“==”和“!=”操作符
3、置为零向量
4、重载一元运算符“-”
5、重载二元预算法“+”“-”
6、标量的乘除法
7、重载自反运算符
8、向量单位化
9、向量的数量积,又叫:点乘
10、向量的向量积,又加:叉乘
11、计算两点间的距离
12、打印向量
程序清单
1、vector3.h
#ifndef VECTOR3_H
#define VECTOR3_H
class Vector3
{
public:
float x, y, z;
//构造函数
//默认构造函数,初始一个零向量
Vector3();
//复制构造函数
Vector3(const Vector3 &a);
//带参数的构造函数,用三个值完成初始化
Vector3(float nx, float ny, float nz);
//析构函数
~Vector3();
//标准对象操作
//重载赋值运算符,并返回引用,以实现左值。
Vector3& operator=(const Vector3 &a);
//重载"=="操作符
bool operator==(const Vector3 &a) const ;
//重载"!="操作符
bool operator!=(const Vector3 &a) const ;
//向量运算
//置为零向量
void Zero();
//重载一元"-"运算符
Vector3 operator-()const;
//重载二元"+"和"-"运算符
Vector3 operator+(const Vector3 &a) const;
Vector3 operator-(const Vector3 &a) const;
//标量的乘、除法
Vector3 operator*(float a) const;
Vector3 operator/(float a) const;
//重载自反运算符
Vector3& operator+=(const Vector3 &a);
Vector3& operator-=(const Vector3 &a);
Vector3& operator*=(float a);
Vector3& operator/=(float a);
//向量标准化