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

📄 frustum.h

📁 《光线引擎演示程序》执行程序+源代码,《光线引擎演示程序》执行程序+源代码
💻 H
字号:
/*==========================================================================;
 *
 *  光线游戏引擎(Light Game Engine)
 *
 *  版权所有 (C) 2005-2007 康 旭。 保留所有权利。
 *  Copyright (C) KangXu.  All Rights Reserved.
 *
 *  文件:   frustum.h
 *  内容:   视锥体函数
 *
 ****************************************************************************/


/*! \file frustum.h * 视锥体函数. * 此文件是视锥体函数头文件. */
/*! \class LightFrustum * \brief 视锥体类 * *  本类负责视锥体的可见性测试,支持点、立方体、长方体和球体的测试。 *  每个 LightFrustum 实例都必须通过 LightEngine 类的 NewFrustum 方法分配。   */

class LightFrustum
{

public:
	
	/*! \fn void CalculateFrustum() = 0	 *  \brief 根据投影矩阵和模型视矩阵计算视锥体(每当摄像机旋转和移动时调用)	 *	 *  根据投影矩阵和模型视矩阵计算视锥体(每当摄像机旋转和移动时调用)	 *	 *  \param 无	 *		 *  \return 无	 *	 *  \see 
	 */
	virtual void CalculateFrustum() = 0;

	/*! \fn bool PointInFrustum( float x, float y, float z ) = 0	 *  \brief 检测指定点是否在视锥体中(如果是返回 TRUE,否则返回 FALSE )	 *	 *  检测指定点是否在视锥体中(如果是返回 TRUE,否则返回 FALSE )	 *	 *  \param float x 要检测点的 x 坐标	 *	 *  \param float y 要检测点的 y 坐标	 *	 *  \param float z 要检测点的 z 坐标	 *	 *  \return 如果是返回 TRUE,否则返回 FALSE	 *	 *  \see 
	 */
	virtual bool PointInFrustum( float x, float y, float z ) = 0;

	/*! \fn bool SphereInFrustum( float x, float y, float z, float radius ) = 0	 *  \brief 检测指定球体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  检测指定球体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  \param float x 球体圆心的 x 坐标	 *	 *  \param float y 球体圆心的 y 坐标	 *	 *  \param float z 球体圆心的 z 坐标	 *	 *  \param float radius 球体的半径	 *	 *  \return 如果是返回 TRUE,否则返回 FALSE	 *	 *  \see 
	 */
	virtual bool SphereInFrustum( float x, float y, float z, float radius ) = 0;

	/*! \fn bool CubeInFrustum( float x, float y, float z, float size ) = 0	 *  \brief 检测指定立方体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  检测指定立方体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  \param float x 立方体中心的 x 坐标	 *	 *  \param float y 立方体中心的 y 坐标	 *	 *  \param float z 立方体中心的 z 坐标	 *	 *  \param float size 立方体边长	 *	 *  \return 如果是返回 TRUE,否则返回 FALSE	 *	 *  \see 
	 */
	virtual bool CubeInFrustum( float x, float y, float z, float size ) = 0;

	/*! \fn bool BoxInFrustum( float x, float y, float z, float sizeX, float sizeY, float sizeZ ) = 0	 *  \brief 检测指定长方体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  检测指定长方体是否与视锥体相交(如果是返回 TRUE,否则返回 FALSE )	 *	 *  \param float x 长方体中心的 x 坐标	 *	 *  \param float y 长方体中心的 y 坐标	 *	 *  \param float z 长方体中心的 z 坐标	 *	 *  \param float sizeX 长方体 x 轴方向的边长	 *	 *  \param float sizeY 长方体 y 轴方向的边长	 *	 *  \param float sizeZ 长方体 z 轴方向的边长	 *	 *  \return 如果是返回 TRUE,否则返回 FALSE	 *	 *  \see 
	 */
	virtual bool BoxInFrustum( float x, float y, float z, float sizeX, float sizeY, float sizeZ ) = 0;

};

⌨️ 快捷键说明

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