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

📄 mathutil.h

📁 3D赛车游戏源代码-用Visual Studio 2005
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
//
// 各种实用的数学常量和函数
//
// MathUtil.h - Declarations for miscellaneous math utilities
//
/////////////////////////////////////////////////////////////////////////////

#ifndef __MATHUTIL_H_INCLUDED__
#define __MATHUTIL_H_INCLUDED__

//-------------------------------------------------------------------------------
// 定义一些 pi 相关的常量
//-------------------------------------------------------------------------------
const float kPi = 3.14159265f;			// PI
const float k2Pi = kPi * 2.0f;			// 2PI
const float kPiOver2 = kPi / 2.0f;		// PI/2
const float k1OverPi = 1.0f / kPi;		// 1/PI
const float k1Over2Pi = 1.0f / k2Pi;	// 1/2PI
const float kPiOver180 = kPi / 180.0f;	// PI/180
const float k180OverPi = 180.0f / kPi;	// 180/PI

// 把角度控制在 -pi 和 pi 之间(通过加减2pi)
extern float wrapPi(float theta);
// 安全的acos函数,处理了x超出范围的情况
extern float safeAcos(float x);

//-------------------------------------------------------------------------------
// 转换角度和弧度。
//-------------------------------------------------------------------------------
// 1.角度到弧度
inline float	degToRad(float deg) { return deg * kPiOver180; }
// 2.弧度到角度
inline float	radToDeg(float rad) { return rad * k180OverPi; }

// 同时计算sin和con的值,在有些平台会有优化的方法。
inline void sinCos(float *returnSin, float *returnCos, float theta) 
{
	*returnSin = sin(theta);
	*returnCos = cos(theta);
}
 
//-------------------------------------------------------------------------------
// 从视野角度转换到zoom,FOV角度为弧度
//-------------------------------------------------------------------------------
inline float	fovToZoom(float fov) { return 1.0f / tan(fov * .5f); }
inline float	zoomToFov(float zoom) { return 2.0f * atan(1.0f / zoom); }

#endif 

⌨️ 快捷键说明

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