📄 vector.h
字号:
// Vector.h: interface for the CVector class.
//
// 说明:
// 功能: 三维向量类
// 用于描述空间点,RGB颜色值等
// 创建时间: 2004.5
// 作者: 悦鑫 0004170140
// 目的: 南京理工大学毕业设计 基于光线跟踪算法的场景绘制研究
// 参考书目: <<VC++绘图程序设计技巧与实例>>
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_)
#define AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CVector : public CListNode //三维向量类
{
public:
//默认构造函数
CVector( double x=0.0, double y=0.0, double z=0.0 );
CVector( const CVector &vec);
virtual ~CVector();
void Rotate_X(double alpha); //向量绕X轴旋转alpha角
void Rotate_Y(double alpha); //向量绕Y轴旋转alpha角
void Rotate_Z(double alpha); //向量绕Z轴旋转alpha角
void Rotate(CVector rotate); //向量分别绕向量rotate的三分量旋转
void Translate(CVector offset); //向量沿offset方向平移,平移长度是|offset|
void ElemMult(const CVector &vec);//各元素叉乘
double GetDistance(const CVector &vec);//计算this与vec之间的距离
double GetZ();//获取分量值
double GetY();
double GetX();
double SetZ(double z) { m_dZ = z; } //设置分量值
double SetY(double y) { m_dY = y; }
double SetX(double x) { m_dX = x; }
void GetOffset(double &x,double &y,double &z);//获取分量值
void SetOffset(double x,double y,double z);//设置分量值
void Empty(); //置空
void Reverse(); //反转
double GetLength(); //计算长度(模)
void Normalize(); //归一化
void print(); //输出
//重载运算符
CVector operator + (const CVector &vec) const; //重载+
CVector operator - (const CVector &vec) const; //重载-
CVector operator * (double dnum) const; //重载*,数乘
CVector operator * (const CMatrix &mat) const; //重载*,乘矩阵
CVector operator / (const CVector &vec) const; //重载/,叉乘
double operator * (const CVector &vec) const; //重载*,点乘
void operator += (const CVector &vec); //重载+=
void operator -= (const CVector &vec); //重载-=
void operator *= (double dnum); //重载*=,数乘
void operator *= (const CMatrix &mat); //重载*=,乘矩阵
void operator /= (const CVector &vec); //重载/=,叉乘
void operator = (const CVector &vec); //重载=,赋值
private:
double m_dX; //三分量
double m_dY;
double m_dZ;
friend class CMatrix;
};
typedef CVector CRTPoint; //三维空间中的点
#endif // !defined(AFX_VECTOR_H__4DC1F5E3_373C_4C0B_AAF6_F0560B98F76D__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -