📄 xmathdoc.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>XMath文档</title>
<style type="text/css">
body
{
font-family:"MS Sans Serif" "Courier New" 宋体 ;
font-size:1em;
text-align:left;
}
a:link
{
font-weight:bold;
text-decoration:none;
color:rgb(0,0,255);
}
a:visited
{
font-weight:bold;
text-decoration:none;
color:rgb(0,0,255);
}
a:hover
{
text-decoration:underline;
color:rgb(0,0,255);
}
table
{
max-width:70%;
border-collapse:separate;
border-spacing:1em 0.5em;
}
</style>
</head>
<body>
<h2>XMath文档</h2>
<table>
<tr><td><strong>作者:</strong></td><td>Blackbird</td></tr>
<tr><td><strong>联系:</strong></td><td>wang_yong_cong@msn.com(E-Mail)</td></tr>
<tr><td><strong>最后更新:</strong></td><td>2006年2月6日</td></tr>
<tr><td><strong>出处:</strong></td><td><a href="http://greatsorcerer.icpcn.com/">友善之臂旅店</a></td></tr>
</table><hr/>
<h3 id="content">目录</h3>
<ul>
<p><a href="#variable">全局变量和常量</a></p>
<p>
<strong>全局函数和宏</strong>
<table>
<tr><td><a href="#macro">常用宏</a></td></tr>
<tr><td><a href="#mathfun">常用数学函数</a></td></tr>
<tr><td><a href="#coordfun">坐标转换函数</a></td></tr>
<tr><td><a href="#anglefun">角度转换函数</a></td></tr>
<tr><td><a href="#vecmulmat">向量与矩阵的乘法运算</a></td></tr>
</table>
</p>
<p>
<strong>结构(struct)</strong>
<table>
<tr><td><a href="#CPolar">CPolar</a></td><td>向量(点)的极坐标表示</td></tr>
<tr><td><a href="#CCylindrical">CCylindrical</a></td><td>向量(点)的柱面坐标表示</td></tr>
<tr><td><a href="#CSpherical">CSpherical</a></td><td>向量(点)的球坐标表示</td></tr>
<tr><td><a href="#CEuler">CEuler</a></td><td>欧拉角</td></tr>
</table>
</p>
<p>
<strong>类(class)</strong>
<table>
<tr><td><a href="#CVector">CVector</a></td><td>向量(点)</td></tr>
<tr><td><a href="#CHomoVector">CHomoVector4D</a></td><td>4D齐次向量(点)</td></tr>
<tr><td><a href="#CMatrix">CMatrix</a></td><td>矩阵</td></tr>
<tr><td><a href="#CQuaternion">CQuaternion</a></td><td>四元数</td></tr>
</table>
</p>
<p><a href="#typedef">类型定义(typedef)</a></p>
</ul><hr/>
<h3 id="variable">全局变量和常量</h3>
<table>
<tr><td><strong>PI</strong></td><td>3.141592654</td></tr>
<tr><td><strong>PI2</strong></td><td>PI乘以2</td></tr>
<tr><td><strong>PI_DIV_2</strong></td><td>PI除以2</td></tr>
<tr><td><strong>PI_DIV_4</strong></td><td>PI除以4</td></tr>
<tr><td><strong>PI_INV</strong></td><td>PI的倒数</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="macro">常用宏</h3>
<table>
<tr><td><strong>MIN(a,b)</strong></td><td>返回a,b中较大的一个</td></tr>
<tr><td><strong>MAX(a,b)</strong></td><td>返回a,b中较小的一个</td></tr>
<tr><td><strong>SWAP(a,b,t)</strong></td><td>交换a,b的值,t为临时变量</td></tr>
<tr><td><strong>DEG_TO_RAD(ang)</strong></td><td>将角度转换为弧度</td></tr>
<tr><td><strong>RAD_TO_DEG(rad)</strong></td><td>将弧度转换为角度</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="mathfun">常用数学函数</h3>
<table>
<tr><td><strong>void BuildSinCosTable ()</strong></td><td>构建正弦/余弦函数查找表,在调用<strong>FastSin</strong>和<strong>FastCos</strong>前必须调用该函数来构建查找表</td></tr>
<tr><td><strong>float FastSin (float ang)</strong></td><td>基于查找表的快速正弦函数,以角度为参数</td></tr>
<tr><td><strong>float FastCos (float ang)</strong></td><td>基于查找表的快速余弦函数,以角度为参数</td></tr>
<tr><td><strong>float InvSqrt (float x)</strong></td><td>快速计算x的平方根的倒数</td></tr>
<tr><td><strong>float FastSqrt (float x)</strong></td><td>快速计算x的平方根</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="coordfun">坐标转换函数</h3>
<table>
<tr><td><strong>void PolarToCart (const CPolar<T> &p, CVector<T,2> &v)</strong></td><td>将极坐标转换为2D笛卡尔坐标</td></tr>
<tr><td><strong>void CartToPolar (const CVector<T,2> &v, CPolar<T> &p)</strong></td><td>将2D笛卡尔坐标转换为极坐标</td></tr>
<tr><td><strong>void CylindricalToCart (const CCylindrical<T> &c, CVector<T,3> &v)</strong></td><td>将柱面坐标转换为3D笛卡尔坐标</td></tr>
<tr><td><strong>void CartToCylindrical (const CVector<T,3> &v, CCylindrical<T> &c)</strong></td><td>将3D笛卡尔坐标转换为柱面坐标</td></tr>
<tr><td><strong>void CylindricalToCart (const CCylindrical<T> &c, CHomoVector4D<T> &v)</strong></td><td>将柱面坐标转换为4D齐次坐标</td></tr>
<tr><td><strong>void CartToCylindrical (const CHomoVector4D<T> &v, CCylindrical<T> &c)</strong></td><td>将4D齐次坐标转换为柱面坐标</td></tr>
<tr><td><strong>void SphericalToCart (const CSpherical<T> &c, CVector<T,3> &v)</strong></td><td>将球坐标转换为3D笛卡尔坐标</td></tr>
<tr><td><strong>void CartToSpherical (const CVector<T,3> &v, CSpherical<T> &c)</strong></td><td>将3D笛卡尔坐标转换为球坐标</td></tr>
<tr><td><strong>void SphericalToCart (const CSpherical<T> &c, CHomoVector4D<T> &v)</strong></td><td>将球坐标转换为4D齐次坐标</td></tr>
<tr><td><strong>void CartToSpherical (const CHomoVector4D<T> &v, CSpherical<T> &c)</strong></td><td>将4D齐次坐标转换为球坐标</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="anglefun">角度转换函数</h3>
<table>
<tr><td><strong>void EulerToMatrix3D (const CEuler<T> &euler, CMatrix<T, 3, 3> &mat)</strong></td><td>将欧拉转角转换为等价的3D旋转矩阵</td></tr>
<tr><td><strong>void Matrix3DToEuler (const CMatrix<T, 3, 3> &mat, CEuler<T> &euler)</strong></td><td>将3D旋转矩阵转换为等价的欧拉转角</td></tr>
<tr><td><strong>void EulerToMatrix4D (const CEuler<T> &euler, CMatrix<T, 4, 4> &mat)</strong></td><td>将欧拉转角转换为等价的4D旋转矩阵</td></tr>
<tr><td><strong>void Matrix4DToEuler (const CMatrix<T, 4, 4> &mat, CEuler<T> &euler)</strong></td><td>将4D旋转矩阵转换为等价的欧拉转角</td></tr>
<tr><td><strong>void Matrix3DToQuat (const CMatrix<T, 3, 3> &mat, CQuaternion<T> &quat)</strong></td><td>将3D旋转矩阵转换为等价的四元数</td></tr>
<tr><td><strong>void QuatToMatrix3D (const CQuaternion<T> &quat, CMatrix<T, 3, 3> &mat)</strong></td><td>将四元数转换为等价的3D旋转矩阵</td></tr>
<tr><td><strong>void Matrix4DToQuat (const CMatrix<T, 4, 4> &mat, CQuaternion<T> &quat)</strong></td><td>将4D旋转矩阵转换为等价的四元数</td></tr>
<tr><td><strong>void QuatToMatrix4D (const CQuaternion<T> &quat, CMatrix<T, 4, 4> &mat)</strong></td><td>将四元数转换为等价的4D旋转矩阵</td></tr>
<tr><td><strong>void EulerToQuat (const CEuler<T> &euler, CQuaternion<T> &quat)</strong></td><td>将欧拉转角转换为等价的四元数</td></tr>
<tr><td><strong>void QuatToEuler (const CQuaternion<T> &quat, CEuler<T> &euler)</strong></td><td>将四元数转换为等价的欧拉转角</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="vecmulmat">向量与矩阵的乘法运算</h3>
<table>
<tr><td><strong>template<class T, int R, int C> <br/>void vec_mul_mat(const CVector<T,R> &v, const CMatrix<T,R,C> &m, CVector<T,C> &r)</strong></td><td>向量与矩阵相乘,r=v*m</td></tr>
<tr><td><strong>template<class T> <br/>void vec_mul_mat(const CVector<T,2> &v, const CMatrix<T,3,2> &m, CVector<T,2> &r)</strong></td><td>2D向量与3D齐次矩阵相乘,结果保存在v中。3D齐次矩阵使用压缩的存储方式,假定最后一列为[0 0 1]T。</td></tr>
<tr><td><strong>template<class T> <br/>void vec_mul_mat(const CVector<T,2> &v, const CMatrix<T,3,3> &m, CVector<T,2> &r)</strong></td><td>2D向量与3D齐次矩阵相乘,结果保存在v中。</td></tr>
<tr><td><strong>template<class T> <br/>void vec_mul_mat(const CVector<T,3> &v, const CMatrix<T,4,3> &m, CVector<T,3> &r)</strong></td><td>3D向量与4D齐次矩阵相乘,结果保存在v中。4D齐次矩阵使用压缩的存储方式,假定最后一列为[0 0 0 1]T。</td></tr>
<tr><td><strong>template<class T> <br/>void vec_mul_mat(const CVector<T,3> &v, const CMatrix<T,4,4> &m, CVector<T,3> &r)</strong></td><td>3D向量与4D齐次矩阵相乘,结果保存在v中。</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="CPolar">template <class T><br/>struct CPolar</h3>
<p><strong>描述</strong></p>
<p>模板类,表示2D向量(点)的极坐标。</p>
<p><strong>模板参数</strong></p>
<table>
<tr><td><strong>T</strong></td><td>数据类型</td></tr>
</table>
<p><strong>成员</strong></p>
<table>
<tr><td><strong>T r</strong></td><td>坐标半径</td></tr>
<tr><td><strong>T theta</strong></td><td>与x轴的夹角(弧度)</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="CCylindrical">template <class T><br/>struct CCylindrical</h3>
<p><strong>描述</strong></p>
<p>模板类,表示3D向量(点)的柱面坐标。</p>
<p><strong>模板参数</strong></p>
<table>
<tr><td><strong>T</strong></td><td>数据类型</td></tr>
</table>
<p><strong>成员</strong></p>
<table>
<tr><td><strong>T r</strong></td><td>x-y面上的极坐标半径</td></tr>
<tr><td><strong>T theta</strong></td><td>x-y面上的极坐标角度(弧度)</td></tr>
<tr><td><strong>T z</strong></td><td>z坐标</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="CSpherical">template <class T><br/>struct CSpherical</h3>
<p><strong>描述</strong></p>
<p>模板类,表示3D向量(点)的球坐标。</p>
<p><strong>模板参数</strong></p>
<table>
<tr><td><strong>T</strong></td><td>数据类型</td></tr>
</table>
<p><strong>成员</strong></p>
<table>
<tr><td><strong>T r</strong></td><td>球坐标半径</td></tr>
<tr><td><strong>T theta</strong></td><td>在x-y面上的投影与x轴的夹角(弧度)</td></tr>
<tr><td><strong>T phi</strong></td><td>与z轴的夹角(弧度)</td></tr>
</table>
<p><a href="#content">返回目录</a></p><hr/>
<h3 id="CEuler">template <class T><br/>struct CEuler</h3>
<p><strong>描述</strong></p>
<p>模板类,表示欧拉转角。</p>
<p><strong>模板参数</strong></p>
<table>
<tr><td><strong>T</strong></td><td>数据类型</td></tr>
</table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -