⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tray.h

📁 本代码演示了在3D游戏编程中经常要使用的碰撞检测
💻 H
字号:
// CTray.h: interface for the CTray class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CTray_H__A30C8297_00F2_11D6_95F2_93B9C68FDF74__INCLUDED_)
#define AFX_CTray_H__A30C8297_00F2_11D6_95F2_93B9C68FDF74__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <iostream.h>
#include "mathex.h"
#include "vector.h"

class CTray  
{
private:
	CVector _P; // 直线上任意点
	CVector _V; // 直线的方向
	// 输入和输出
	ostream &write(ostream &out) const;
	istream &read(istream &in);

public:
	CTray();
	virtual ~CTray();
		// 两点的直线或点与一个方向
		CTray(const CVector &point1, const CVector &point2);
		// 两条直线的交点
		bool adjacentPoints(const CTray &ray, CVector &point1, CVector &point2) const;
		// 一元运算符
		static CTray &invert(const CTray &r, CTray &result) { result._P = r._P; CVector::invert(r._V, result._V); return result; }
		CTray operator-() const { return invert(*this, CTray()); }
		CVector P() const { return _P; }
		CVector V() const { return _V; }
		int isValid() const { return V().isUnit() && P().isValid(); }
		// 距离
		double dist(const CTray &ray) const;
		double dist(const CVector &point) const;
		// 输入输出
		friend ostream &operator<<(ostream &out, const CTray &o) { return o.write(out); }
		friend istream &operator>>(istream &in, CTray &o) { return o.read(in); }
};

#endif // !defined(AFX_CTray_H__A30C8297_00F2_11D6_95F2_93B9C68FDF74__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -