ogre 数学Word文档下载推荐.docx
- 文档编号:16488634
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:19
- 大小:39.26KB
ogre 数学Word文档下载推荐.docx
《ogre 数学Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ogre 数学Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
POS_INFINITY:
定义如下:
constRealMath:
POS_INFINITY=std:
numeric_limits<
Real>
infinity();
NEG_INFINITY:
NEG_INFINITY=-std:
PI:
通过用汇编实现的tan函数(atan)计算出来的圆周率。
PI=Real(4.0*atan(1.0));
TWO_PI:
TWO_PI=Real(2.0*PI);
HALF_PI:
PI的二分之一:
HALF_PI=Real(0.5*PI);
数学函数速查表
取整数绝对值。
intMath:
IAbs(intiValue)
取大于参数的最小整数。
ICeil(floatfValue)
取小于参数的最大整数。
IFloor(floatfValue)
取整数的符号,如果为正数取1,为负数取-1,为0取0。
ISign(intiValue)
取实数绝对值
RealMath:
Abs(RealfValue)
求反余弦函数,结果在0到PI之间。
实际上通过调用asm_arccos函数实现。
RealMath:
ACos(RealfValue)
求反正弦函数,结果在-PI/2到PI/2之间。
实际上通过asm_arcsin函数实现。
ASin(RealfValue)
求反正切函数,结果在-PI/2到PI/2之间
ATan(RealfValue)
求2个数之比的反正切值,实际通过C运行库函数实现
ATan2(RealfY,RealfX)
求大于参数的最小整数值,返回值为实数
Ceil(RealfValue)
求根据弧度计算余弦值,第二个参数指定是否使用查表法。
在实现上,如果使用查表法,将被转换为求加90度后的正弦。
查表法的缺省精度为将圆分为4096份,忽略更小的差别。
如果需要更改精度,给Math类的构造函数传参。
如果不使用查表法,将转换为通过汇编实现的asm_cos函数求结果。
Cos(RealfValue,booluseTables)
计算指数函数值,结果为e的fValue次方。
e为自然对数2.7182818。
通过C运行库的exp函数实现。
Exp(RealfValue)
取小于参数的最大整数,结果为实数。
Floor(RealfValue)
计算参数的自然对数值,实际通过汇编实现的asm_ln函数完成。
Log(RealfValue)
计算某数的某次方,实际通过C运行库的pow函数实现。
Pow(RealfBase,RealfExponent)
取实数的符号,大于0返回1.0,小于0返回-1.0,等于0返回0。
Sign(RealfValue)
求正弦函数,第二个参数指定是否使用查表法,缺省值为false。
如果不查表,就通过汇编实现的asm_sin函数完成计算。
Sin(RealfValue,booluseTables)
计算实数的平方
Sqr(RealfValue)
计算实数的开平方,实际通过汇编实现的asm_sqrt函数完成计算。
Sqrt(RealfValue)
计算实数开平方后的倒数,例如:
1/Sqrt(x),对于向量归一化很有好处。
InvSqrt(RealfValue)
返回0、1之间的随机数,包括0和1。
通过汇编实现的asm_rand和asm_rand_max函数完成。
UnitRandom()
返回两个指定参数之间的随机数。
RangeRandom(RealfLow,RealfHigh)
返回-1、1之间的随机数,包括-1和1。
SymmetricRandom()
角度转换为弧度
DegreesToRadians(Realdegrees)
弧度转变为角度
RadiansToDegrees(Realradians)
在二维空间里判断一个点是否在一个三角形里,如果是返回真,否则返回假。
boolMath:
pointInTri2D(Realpx,Realpy,Realax,Realay,Realbx,Realby,Realcx,Realcy)
求正切函数,第二个参数指定是否使用查表法,缺省值为false。
如果不查表,就通过汇编实现的asm_tan函数完成计算。
Tan(Realradians,booluseTables)
判断两个值是否相等,第三个参数是允许的误差度,例如:
a=5、b=6、tolerance=2,则结果是a=b。
但tolerance的缺省值为std:
epsilon()。
RealEqual(Reala,Realb,Realtolerance)
Vector3类
表达三维向量V(x,y,z)的类,三维世界中的位置、方向和缩放因子都可以用Vector3来表达,关键看你如何解释与使用它。
为了提高效率,Vector3类的成员函数大部分都实现为内联函数。
又为了将来操作方便,Vector3类的数据成员都实现为public类型。
常量
staticconstVector3ZERO;
staticconstVector3UNIT_X;
staticconstVector3UNIT_Y;
staticconstVector3UNIT_Z;
staticconstVector3UNIT_SCALE;
分别代表零向量、X轴单位向量、Y轴单位向量、Z轴单位向量和单位缩放因子(其实是不缩放),这些向量使用频繁,所以实现为常量。
成员函数
重载[]操作符,通过下标1,2,3可以取x,y,z分量。
inlineRealoperator[](unsignedi)const
重载[]操作符,返回引用,可以做左值。
inlineReal&
operator[](unsignedi)
重载赋值操作符,返回引用,结果可以做左值。
inlineVector3&
operator=(constVector3&
rkVector)
重载等号操作符,判断两个向量是否相等。
inlinebooloperator==(constVector3&
rkVector)const
重载不等号操作符,判断两个向量是否不相等。
inlinebooloperator!
=(constVector3&
重载加号操作符,完成向量相加。
inlineVector3operator+(constVector3&
重载乘法操作符,完成向量与一个数的乘法。
inlineVector3operator*(RealfScalar)const
重载乘法操作符,完成两个向量的相乘。
inlineVector3operator*(constVector3&
rhs)const
重载除法操作符,完成向量除以一个数的运算。
inlineVector3operator/(RealfScalar)const
重载负号操作符,将原向量的每个分量取负。
inlineVector3operator-()const
重载乘法操作符,用友员函数的方式实现,实现一个向量与一个数相乘。
inlinefriendVector3operator*(RealfScalar,constVector3&
重载+=运算符,A+=B。
inlineVector3&
operator+=(constVector3&
重载-=运算符,A-=B。
operator-=(constVector3&
重载*=运算符,A*=B。
operator*=(RealfScalar)
重载/=运算符,A/=B。
operator/=(RealfScalar)
求向量长度,因为求结果用到开方,会消耗CPU时间,所以如果有可能就使用后面的求向量长度平方的函数。
inlineReallength()const
求向量长度的平方,很多时候用它可以代替求向量长度的函数,因为没有开平方,所以可以提高效率。
inlineRealsquaredLength()const
计算向量点积,向量点积有如下应用:
Cos(theta)=DotProduct(v1,v2)/(length(v1)*length(v2))
所以,当知道两个向量的点积和长度之后就可以获得向量之间的夹角的余弦。
如果两个向量都是单位向量的化,则点积的结果就是夹角的余弦。
inlineRealdotProduct(constVector3&
vec)const
向量归一化,转变为方向不变的单位向量。
归一化的方法是每个分量都除以向量的长度。
inlinevoidnormalise(void)
求向量叉积。
向量叉积的结果代表这两个向量所在平面的法向量。
向量叉积遵循右手法则,从第一向量握向第二向量,大拇指指向的向量就是叉积结果。
例如:
屏幕左边线为第一向量,屏幕下边线为第二向量,那么它们的叉积结果就指向屏幕里面。
向量的叉积计算可以用来判断两个向量的拓扑关系(左右之分)。
inlineVector3crossProduct(constVector3&
向量可以表达点的坐标,本函数的功能是计算两个点之间的中点坐标。
inlineVector3midPoint(constVector3&
vec)const
重载小于操作符,如果A向量的各分量都小于B向量,则A向量小于B向量。
inlinebooloperator<
(constVector3&
rhs)const
重载大于操作符,如果A向量的各分量都大于B向量,则A向量大于B向量。
inlinebooloperator>
将A、B两向量中的各分量的小值组合成新的向量。
inlinevoidmakeFloor(constVector3&
cmp)
将A、B两向量中的各分量的大值组合成新的向量。
inlinevoidmakeCeil(constVector3&
计算并返回一个向量的垂直向量,一个向量的垂直向量有无穷多个,这里只返回一个。
用原向量与X正轴向量做叉乘得到的结果向量是原向量与X正轴向量构成的平面的法向量,肯定垂直于原向量,函数返回这个结果向量。
如果发现得到的结果向量的长度为0,又因为Length(VectorC)=Length(Vector1)*Length(Vector2)*sin(theta),证明原向量与X正轴重合(sin(theta)为0),那么就改为求原向量与Y正轴叉乘作为结果向量。
inlineVector3perpendicular(void)
得到偏离原向量一定角度的随机向量。
本函数要求随机数种子已设定好。
当然Math类的构造函数设定了随机数种子。
如果在调用本函数之前,初始化了Math类,就可以正常使用本函数。
第一个参数是允许偏移的最大角度。
第二个参数是向量,有缺省值。
要求是原向量的一个垂直向量。
inlineVector3randomDeviant(
Realangle,
constVector3&
up=Vector3:
ZERO)
得到能将当前向量用最小路径旋转到目的向量的四元组。
QuaterniongetRotationTo(constVector3&
dest)const
重载输出流操作符。
inline_OgreExportfriendstd:
ostream&
operator<
<
(std:
o,constVector3&
v)
Vector4类
包含x,y,z,w四个分量的向量。
构造函数
缺省构造函数
inlineVector4()
接收四个实数的构造函数
inlineVector4(RealfX,RealfY,RealfZ,RealfW)
接收四个元素的实数数组的构造函数
inlineVector4(RealafCoordinate[4])
接受四个int的数组的构造函数
inlineVector4(intafCoordinate[4])
接受实数指针的构造函数
inlineVector4(constReal*constr)
拷贝构造函数
inlineVector4(constVector4&
操作符重载
inlineRealoperator[](unsignedi)const
inlineVector4&
operator=(constVector4&
inlinebooloperator==(constVector4&
=(constVector4&
用Vector3对Vector4赋值,其中w为1。
operator=(constVector3&
rhs)
Vector4乘以Matrix4
inlineVector4operator*(constMatrix4&
mat)
inline_OgreExportfriendstd:
(std:
o,constVector4&
Matrix3类
3*3矩阵类。
constRealMatrix3:
EPSILON=1e-06;
constMatrix3Matrix3:
ZERO(0,0,0,0,0,0,0,0,0);
IDENTITY(1,0,0,0,1,0,0,0,1);
constRealMatrix3:
ms_fSvdEpsilon=1e-04;
constintMatrix3:
ms_iSvdMaxIterations=32;
Matrix3();
Matrix3(constRealarr[3][3]);
Matrix3(constMatrix3&
rkMatrix);
Matrix3(RealfEntry00,RealfEntry01,RealfEntry02,
RealfEntry10,RealfEntry11,RealfEntry12,
RealfEntry20,RealfEntry21,RealfEntry22);
下标操作符
Real*operator[](intiRow)const;
指针操作符
operatorReal*();
Matrix3&
operator=(constMatrix3&
booloperator==(constMatrix3&
rkMatrix)const;
booloperator!
=(constMatrix3&
Matrix3operator+(constMatrix3&
Matrix3operator-(constMatrix3&
Matrix3operator*(constMatrix3&
负号操作符
Matrix3operator-()const;
Matrix3乘Vector3,结果是3*1的Vector3。
Vector3operator*(constVector3&
rkVector)const;
以友员方式重载的乘号操作符,Vector3乘Matrix3,结果是1*3的Vector3。
friendVector3operator*(constVector3&
rkVector,constMatrix3&
Matrix3乘以一个标量。
Matrix3operator*(RealfScalar)const;
友员方式重载的标量乘Matrix3。
friendMatrix3operator*(RealfScalar,constMatrix3&
取得Matrix3中的指定列。
Vector3GetColumn(intiCol)const;
设定Matrix3中的指定列。
voidSetColumn(intiCol,constVector3&
vec);
指定三个轴向量,构成一个Matrix3,注意:
每个轴在Matrix3表现为一列。
voidMatrix3:
FromAxes(constVector3&
xAxis,constVector3&
yAxis,constVector3&
zAxis)
求当前矩阵的转置
Matrix3Transpose()const;
求当前矩阵的逆矩阵,注意返回值是bool型的,得到的结果矩阵在第一个参数里。
boolMatrix3:
Inverse(Matrix3&
rkInverse,RealfTolerance)const
求当前矩阵的逆矩阵,返回值是结果矩阵。
Matrix3Matrix3:
Inverse(RealfTolerance)const
求本矩阵代表行列式的值
RealMatrix3:
Determinant()const
还有一些成员函数功能不明,且未被使用过。
Matrix4类
4*4矩阵。
Matrix4:
ZERO零矩阵
IDENTITY单位矩阵
构造函数:
inlineMatrix4()
inlineMatrix4(Realm00,Realm01,Realm02,Realm03,
Realm10,Realm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ogre 数学