aboutsummaryrefslogtreecommitdiff
path: root/docs/source_docs/files/_float_math_8h-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source_docs/files/_float_math_8h-source.html')
-rw-r--r--docs/source_docs/files/_float_math_8h-source.html552
1 files changed, 552 insertions, 0 deletions
diff --git a/docs/source_docs/files/_float_math_8h-source.html b/docs/source_docs/files/_float_math_8h-source.html
new file mode 100644
index 0000000..af1354d
--- /dev/null
+++ b/docs/source_docs/files/_float_math_8h-source.html
@@ -0,0 +1,552 @@
+<html>
+ <head>
+ <title>NVIDIA(R) Blast(R) SDK 1.1 Source Reference: sdk/extensions/authoring/source/VHACD/inc/FloatMath.h Source File</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK HREF="NVIDIA.css" REL="stylesheet" TYPE="text/css">
+ </head>
+
+ <body bgcolor="#FFFFFF">
+ <div id="header">
+ <hr class="first">
+ <img alt="" src="blast_logo.png">
+ <br>
+ <center>
+ <a class="qindex" href="main.html">Main Page</a> &nbsp;
+ <!-- <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; //-->
+ <a class="qindex" href="annotated.html">Class List</a> &nbsp;
+ <a class="qindex" href="functions.html">Class Members</a> &nbsp;
+ </center>
+ <hr class="second">
+ </div>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>User's&nbsp;Guide</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+<h1>sdk/extensions/authoring/source/VHACD/inc/FloatMath.h</h1><a href="_float_math_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef FLOAT_MATH_LIB_H</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span>
+<a name="l00003"></a>00003 <span class="preprocessor">#define FLOAT_MATH_LIB_H</span>
+<a name="l00004"></a>00004 <span class="preprocessor"></span>
+<a name="l00005"></a>00005
+<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;float.h&gt;</span>
+<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html">00009</a> <span class="keyword">namespace </span>FLOAT_MATH
+<a name="l00010"></a>00010 {
+<a name="l00011"></a>00011
+<a name="l00012"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9af">00012</a> <span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9af">FM_ClipState</a>
+<a name="l00013"></a>00013 {
+<a name="l00014"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9af9df27601d6ae82936064ca3010b80a5f">00014</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9af9df27601d6ae82936064ca3010b80a5f">FMCS_XMIN</a> = (1&lt;&lt;0),
+<a name="l00015"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afe45bdfb2c4086bde450b8af70d756585">00015</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afe45bdfb2c4086bde450b8af70d756585">FMCS_XMAX</a> = (1&lt;&lt;1),
+<a name="l00016"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afd03a9eb1a839f2cb34508a7233906175">00016</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afd03a9eb1a839f2cb34508a7233906175">FMCS_YMIN</a> = (1&lt;&lt;2),
+<a name="l00017"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afae2ee30933040ceaba04d40a1eb098fd">00017</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afae2ee30933040ceaba04d40a1eb098fd">FMCS_YMAX</a> = (1&lt;&lt;3),
+<a name="l00018"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afc8adc6db98a363354407d4eb1df66a87">00018</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9afc8adc6db98a363354407d4eb1df66a87">FMCS_ZMIN</a> = (1&lt;&lt;4),
+<a name="l00019"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9aff6824c785aa66d10c8b39b8fa86375cb">00019</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e3424939e23d0f14e1a0c1745e43f9aff6824c785aa66d10c8b39b8fa86375cb">FMCS_ZMAX</a> = (1&lt;&lt;5),
+<a name="l00020"></a>00020 };
+<a name="l00021"></a>00021
+<a name="l00022"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78">00022</a> <span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a>
+<a name="l00023"></a>00023 {
+<a name="l00024"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78cf27da21bcf3eb6bbaa8c5f24254dcef">00024</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78cf27da21bcf3eb6bbaa8c5f24254dcef">FM_XAXIS</a> = (1&lt;&lt;0),
+<a name="l00025"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c786d608e9c6b6761a8cfbcdc7470d4e894">00025</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c786d608e9c6b6761a8cfbcdc7470d4e894">FM_YAXIS</a> = (1&lt;&lt;1),
+<a name="l00026"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78c78cb90c59826b6320fd1891088b1c07">00026</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78c78cb90c59826b6320fd1891088b1c07">FM_ZAXIS</a> = (1&lt;&lt;2)
+<a name="l00027"></a>00027 };
+<a name="l00028"></a>00028
+<a name="l00029"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9">00029</a> <span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a>
+<a name="l00030"></a>00030 {
+<a name="l00031"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9fb71f22022e7b20c1cffe0d767794516">00031</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9fb71f22022e7b20c1cffe0d767794516">LS_START</a>,
+<a name="l00032"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9eddaa7664a1a0987313b33a7991dabc9">00032</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9eddaa7664a1a0987313b33a7991dabc9">LS_MIDDLE</a>,
+<a name="l00033"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9e1972ba2d53acc5b40a7186e9463724f">00033</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9e1972ba2d53acc5b40a7186e9463724f">LS_END</a>
+<a name="l00034"></a>00034 };
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036
+<a name="l00037"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bb8140d5d40ac95d14d060b3df484650">00037</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bb8140d5d40ac95d14d060b3df484650">FM_PI</a> = 3.1415926535897932384626433832795028841971693993751f;
+<a name="l00038"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e0d9cd328d51cec3b434cc0a5ac1aa76">00038</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e0d9cd328d51cec3b434cc0a5ac1aa76">FM_DEG_TO_RAD</a> = ((2.0f * FM_PI) / 360.0f);
+<a name="l00039"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7bf8c2dde51efeefb5212bf855aa29f9">00039</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7bf8c2dde51efeefb5212bf855aa29f9">FM_RAD_TO_DEG</a> = (360.0f / (2.0f * FM_PI));
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="comment">//***************** Float versions</span>
+<a name="l00042"></a>00042 <span class="comment">//***</span>
+<a name="l00043"></a>00043 <span class="comment">//*** vectors are assumed to be 3 floats or 3 doubles representing X, Y, Z</span>
+<a name="l00044"></a>00044 <span class="comment">//*** quaternions are assumed to be 4 floats or 4 doubles representing X,Y,Z,W</span>
+<a name="l00045"></a>00045 <span class="comment">//*** matrices are assumed to be 16 floats or 16 doubles representing a standard D3D or OpenGL style 4x4 matrix</span>
+<a name="l00046"></a>00046 <span class="comment">//*** bounding volumes are expressed as two sets of 3 floats/double representing bmin(x,y,z) and bmax(x,y,z)</span>
+<a name="l00047"></a>00047 <span class="comment">//*** Plane equations are assumed to be 4 floats or 4 doubles representing Ax,By,Cz,D</span>
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b0e6f3d995aaa137c6811be7da8b1f57">fm_getDominantAxis</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="namespace_nv_1_1_blast_1_1_vec_math.html#1c8d1bbcf531b04e6ff52f5357987794">normal</a>[3]);
+<a name="l00050"></a>00050 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b0e6f3d995aaa137c6811be7da8b1f57">fm_getDominantAxis</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="namespace_nv_1_1_blast_1_1_vec_math.html#1c8d1bbcf531b04e6ff52f5357987794">normal</a>[3]);
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#518c9e9f1a383ae51f1400e00168b04d">fm_decomposeTransform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> local_transform[16],<span class="keywordtype">float</span> trans[3],<span class="keywordtype">float</span> rot[4],<span class="keywordtype">float</span> scale[3]);
+<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#518c9e9f1a383ae51f1400e00168b04d">fm_decomposeTransform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> local_transform[16],<span class="keywordtype">double</span> trans[3],<span class="keywordtype">double</span> rot[4],<span class="keywordtype">double</span> scale[3]);
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cbed8443ddbc88cc4408363938cb9b90">fm_multiplyTransform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *pA,<span class="keyword">const</span> <span class="keywordtype">float</span> *pB,<span class="keywordtype">float</span> *pM);
+<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cbed8443ddbc88cc4408363938cb9b90">fm_multiplyTransform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *pA,<span class="keyword">const</span> <span class="keywordtype">double</span> *pB,<span class="keywordtype">double</span> *pM);
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#459b88458014177d8945f6e8b269730c">fm_inverseTransform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> inverse_matrix[16]);
+<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#459b88458014177d8945f6e8b269730c">fm_inverseTransform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> inverse_matrix[16]);
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#475707467603b8b04da3692140ab438b">fm_identity</a>(<span class="keywordtype">float</span> matrix[16]); <span class="comment">// set 4x4 matrix to identity.</span>
+<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#475707467603b8b04da3692140ab438b">fm_identity</a>(<span class="keywordtype">double</span> matrix[16]); <span class="comment">// set 4x4 matrix to identity.</span>
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afb68480d229fd7dabd59dea38dff21c">fm_inverseRT</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16], <span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keywordtype">float</span> t[3]); <span class="comment">// inverse rotate translate the point.</span>
+<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afb68480d229fd7dabd59dea38dff21c">fm_inverseRT</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keywordtype">double</span> t[3]); <span class="comment">// inverse rotate translate the point.</span>
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5e7bcf0c2005abcdfb3b983befdba6e0">fm_transform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16], <span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keywordtype">float</span> t[3]); <span class="comment">// rotate and translate this point.</span>
+<a name="l00068"></a>00068 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5e7bcf0c2005abcdfb3b983befdba6e0">fm_transform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keywordtype">double</span> t[3]); <span class="comment">// rotate and translate this point.</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1507bf2ee9f33cc24aae9f3be4169e39">fm_getDeterminant</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16]);
+<a name="l00071"></a>00071 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1507bf2ee9f33cc24aae9f3be4169e39">fm_getDeterminant</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16]);
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#955922bac08140d8027099632304d507">fm_getSubMatrix</a>(int32_t ki,int32_t kj,<span class="keywordtype">float</span> pDst[16],<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16]);
+<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#955922bac08140d8027099632304d507">fm_getSubMatrix</a>(int32_t ki,int32_t kj,<span class="keywordtype">double</span> pDst[16],<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16]);
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9709ed7da00dd74d859b47c48d824eeb">fm_rotate</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3],<span class="keywordtype">float</span> t[3]); <span class="comment">// only rotate the point by a 4x4 matrix, don't translate.</span>
+<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9709ed7da00dd74d859b47c48d824eeb">fm_rotate</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matri[16],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keywordtype">double</span> t[3]); <span class="comment">// only rotate the point by a 4x4 matrix, don't translate.</span>
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#21696a79d14003a743b2b1ff40894b70">fm_eulerToMatrix</a>(<span class="keywordtype">float</span> ax,<span class="keywordtype">float</span> ay,<span class="keywordtype">float</span> az,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert euler (in radians) to a dest 4x4 matrix (translation set to zero)</span>
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#21696a79d14003a743b2b1ff40894b70">fm_eulerToMatrix</a>(<span class="keywordtype">double</span> ax,<span class="keywordtype">double</span> ay,<span class="keywordtype">double</span> az,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert euler (in radians) to a dest 4x4 matrix (translation set to zero)</span>
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1defa5e1cac1adb9265c5f0a3d4c9645">fm_getAABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]);
+<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1defa5e1cac1adb9265c5f0a3d4c9645">fm_getAABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]);
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#c9c372bec084a96bb461107edb5d01c4">fm_getAABBCenter</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keywordtype">float</span> center[3]);
+<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#c9c372bec084a96bb461107edb5d01c4">fm_getAABBCenter</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keywordtype">double</span> center[3]);
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bf97767bcddaed89a04998a225044262">fm_transformAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> tbmin[3],<span class="keywordtype">float</span> tbmax[3]);
+<a name="l00089"></a>00089 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bf97767bcddaed89a04998a225044262">fm_transformAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> tbmin[3],<span class="keywordtype">double</span> tbmax[3]);
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert euler angles to quaternion.</span>
+<a name="l00092"></a>00092 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert euler angles to quaternion.</span>
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fd1c4745cc5047b78dc32a107ce1b227">fm_quatToEuler</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> quat[4],<span class="keywordtype">float</span> &amp;ax,<span class="keywordtype">float</span> &amp;ay,<span class="keywordtype">float</span> &amp;az);
+<a name="l00095"></a>00095 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fd1c4745cc5047b78dc32a107ce1b227">fm_quatToEuler</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> quat[4],<span class="keywordtype">double</span> &amp;ax,<span class="keywordtype">double</span> &amp;ay,<span class="keywordtype">double</span> &amp;az);
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> euler[3],<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert euler angles to quaternion. Angles must be radians not degrees!</span>
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> euler[3],<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert euler angles to quaternion.</span>
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8e5d1da135d36933bfae6ec7a4e16dc">fm_scale</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// apply scale to the matrix.</span>
+<a name="l00101"></a>00101 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8e5d1da135d36933bfae6ec7a4e16dc">fm_scale</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// apply scale to the matrix.</span>
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4aeae548e32c6b3fd7b042880853668a">fm_eulerToQuatDX</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method</span>
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4aeae548e32c6b3fd7b042880853668a">fm_eulerToQuatDX</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method</span>
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#c80feefbeefd17402f51317b7d545ebb">fm_eulerToMatrixDX</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method.</span>
+<a name="l00107"></a>00107 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#c80feefbeefd17402f51317b7d545ebb">fm_eulerToMatrixDX</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method.</span>
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b363d3868e88b3760f8295f213652242">fm_quatToMatrix</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> quat[4],<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert quaterinion rotation to matrix, translation set to zero.</span>
+<a name="l00110"></a>00110 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b363d3868e88b3760f8295f213652242">fm_quatToMatrix</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> quat[4],<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert quaterinion rotation to matrix, translation set to zero.</span>
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b1dbaf174472d60724ab64af30e05223">fm_quatRotate</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> quat[4],<span class="keyword">const</span> <span class="keywordtype">float</span> v[3],<span class="keywordtype">float</span> r[3]); <span class="comment">// rotate a vector directly by a quaternion.</span>
+<a name="l00113"></a>00113 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b1dbaf174472d60724ab64af30e05223">fm_quatRotate</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> quat[4],<span class="keyword">const</span> <span class="keywordtype">double</span> v[3],<span class="keywordtype">double</span> r[3]); <span class="comment">// rotate a vector directly by a quaternion.</span>
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a83944760275782e7436df8b53a0c36c">fm_getTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> t[3]);
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a83944760275782e7436df8b53a0c36c">fm_getTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> t[3]);
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9e7b6b20e5d995bbe4be9cda48f5f590">fm_setTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *translation,<span class="keywordtype">float</span> matrix[16]);
+<a name="l00119"></a>00119 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9e7b6b20e5d995bbe4be9cda48f5f590">fm_setTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *translation,<span class="keywordtype">double</span> matrix[16]);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9053918ec3894e3fb079e932fd54b647">fm_multiplyQuat</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *qa,<span class="keyword">const</span> <span class="keywordtype">float</span> *qb,<span class="keywordtype">float</span> *quat);
+<a name="l00122"></a>00122 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9053918ec3894e3fb079e932fd54b647">fm_multiplyQuat</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *qa,<span class="keyword">const</span> <span class="keywordtype">double</span> *qb,<span class="keywordtype">double</span> *quat);
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#672d75bf66999a3d1a6de125e85c5265">fm_matrixToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert the 3x3 portion of a 4x4 matrix into a quaterion as x,y,z,w</span>
+<a name="l00125"></a>00125 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#672d75bf66999a3d1a6de125e85c5265">fm_matrixToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert the 3x3 portion of a 4x4 matrix into a quaterion as x,y,z,w</span>
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1a34d0ebad3b1971c131e6549b06cdd0">fm_sphereVolume</a>(<span class="keywordtype">float</span> radius); <span class="comment">// return's the volume of a sphere of this radius (4/3 PI * R cubed )</span>
+<a name="l00128"></a>00128 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1a34d0ebad3b1971c131e6549b06cdd0">fm_sphereVolume</a>(<span class="keywordtype">double</span> radius); <span class="comment">// return's the volume of a sphere of this radius (4/3 PI * R cubed )</span>
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#243023211b7a4e5ab60bdb10c4a9db0f">fm_cylinderVolume</a>(<span class="keywordtype">float</span> radius,<span class="keywordtype">float</span> h);
+<a name="l00131"></a>00131 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#243023211b7a4e5ab60bdb10c4a9db0f">fm_cylinderVolume</a>(<span class="keywordtype">double</span> radius,<span class="keywordtype">double</span> h);
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#890be2a1715cda687e5d3e63d5f59e56">fm_capsuleVolume</a>(<span class="keywordtype">float</span> radius,<span class="keywordtype">float</span> h);
+<a name="l00134"></a>00134 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#890be2a1715cda687e5d3e63d5f59e56">fm_capsuleVolume</a>(<span class="keywordtype">double</span> radius,<span class="keywordtype">double</span> h);
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bcb99669f70be380f66d9a1fde599fab">fm_distance</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3]);
+<a name="l00137"></a>00137 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bcb99669f70be380f66d9a1fde599fab">fm_distance</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3]);
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1721515731405ff0444d53ce4a0ab227">fm_distanceSquared</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3]);
+<a name="l00140"></a>00140 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#1721515731405ff0444d53ce4a0ab227">fm_distanceSquared</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3]);
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ef966a4f85a8067ed36c020e036b401">fm_distanceSquaredXZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3]);
+<a name="l00143"></a>00143 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ef966a4f85a8067ed36c020e036b401">fm_distanceSquaredXZ</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3]);
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e16f6af28acc944aa4307b55208ef0ce">fm_computePlane</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3],<span class="keywordtype">float</span> *n); <span class="comment">// return D</span>
+<a name="l00146"></a>00146 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e16f6af28acc944aa4307b55208ef0ce">fm_computePlane</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3],<span class="keywordtype">double</span> *n); <span class="comment">// return D</span>
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#f91f007d37b043bd7e70b4d2de1fbd25">fm_distToPlane</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3]); <span class="comment">// computes the distance of this point from the plane.</span>
+<a name="l00149"></a>00149 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#f91f007d37b043bd7e70b4d2de1fbd25">fm_distToPlane</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3]); <span class="comment">// computes the distance of this point from the plane.</span>
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#194f9efd2bb057b2209327630dec652e">fm_dot</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3]);
+<a name="l00152"></a>00152 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#194f9efd2bb057b2209327630dec652e">fm_dot</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3]);
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8646830ccfdaad8014442e1e502e85bc">fm_cross</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#be07352e9e8ada8dda9ead8a0c9c20d0" title="Return the cross product between this and another vector.">cross</a>[3],<span class="keyword">const</span> <span class="keywordtype">float</span> a[3],<span class="keyword">const</span> <span class="keywordtype">float</span> b[3]);
+<a name="l00155"></a>00155 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8646830ccfdaad8014442e1e502e85bc">fm_cross</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#be07352e9e8ada8dda9ead8a0c9c20d0" title="Return the cross product between this and another vector.">cross</a>[3],<span class="keyword">const</span> <span class="keywordtype">double</span> a[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b[3]);
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bedf4d35d4d7f1cd6f5ef3ce30b99169">fm_computeNormalVector</a>(<span class="keywordtype">float</span> n[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3]); <span class="comment">// as P2-P1 normalized.</span>
+<a name="l00158"></a>00158 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bedf4d35d4d7f1cd6f5ef3ce30b99169">fm_computeNormalVector</a>(<span class="keywordtype">double</span> n[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3]); <span class="comment">// as P2-P1 normalized.</span>
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a44a0e6887abf9d22e27e79f38cf0b7c">fm_computeWindingOrder</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3]); <span class="comment">// returns true if the triangle is clockwise.</span>
+<a name="l00161"></a>00161 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a44a0e6887abf9d22e27e79f38cf0b7c">fm_computeWindingOrder</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3]); <span class="comment">// returns true if the triangle is clockwise.</span>
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fe19fb5409155a1b100555ae8b27e042">fm_normalize</a>(<span class="keywordtype">float</span> n[3]); <span class="comment">// normalize this vector and return the distance</span>
+<a name="l00164"></a>00164 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fe19fb5409155a1b100555ae8b27e042">fm_normalize</a>(<span class="keywordtype">double</span> n[3]); <span class="comment">// normalize this vector and return the distance</span>
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ff088a0e1dfb0fc72cd8e890b5ae39a2">fm_normalizeQuat</a>(<span class="keywordtype">float</span> n[4]); <span class="comment">// normalize this quat</span>
+<a name="l00167"></a>00167 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ff088a0e1dfb0fc72cd8e890b5ae39a2">fm_normalizeQuat</a>(<span class="keywordtype">double</span> n[4]); <span class="comment">// normalize this quat</span>
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#38037bcca3e6efebe64714e1fa93a253">fm_matrixMultiply</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> A[16],<span class="keyword">const</span> <span class="keywordtype">float</span> B[16],<span class="keywordtype">float</span> dest[16]);
+<a name="l00170"></a>00170 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#38037bcca3e6efebe64714e1fa93a253">fm_matrixMultiply</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> A[16],<span class="keyword">const</span> <span class="keywordtype">double</span> B[16],<span class="keywordtype">double</span> dest[16]);
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cb3c8d61dfb35df6685ace736d7c61af">fm_composeTransform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> position[3],<span class="keyword">const</span> <span class="keywordtype">float</span> quat[4],<span class="keyword">const</span> <span class="keywordtype">float</span> scale[3],<span class="keywordtype">float</span> matrix[16]);
+<a name="l00173"></a>00173 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cb3c8d61dfb35df6685ace736d7c61af">fm_composeTransform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> position[3],<span class="keyword">const</span> <span class="keywordtype">double</span> quat[4],<span class="keyword">const</span> <span class="keywordtype">double</span> scale[3],<span class="keywordtype">double</span> matrix[16]);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#62f6d3e26092170ccc5c90ffdbeffd8e">fm_computeArea</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3]);
+<a name="l00176"></a>00176 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#62f6d3e26092170ccc5c90ffdbeffd8e">fm_computeArea</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3]);
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9621fb749969501979e6db6cf2decb58">fm_lerp</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keywordtype">float</span> dest[3],<span class="keywordtype">float</span> lerpValue);
+<a name="l00179"></a>00179 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9621fb749969501979e6db6cf2decb58">fm_lerp</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keywordtype">double</span> dest[3],<span class="keywordtype">double</span> lerpValue);
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ca4cef6af901b8de71c71535369229e">fm_insideTriangleXZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> test[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3]);
+<a name="l00182"></a>00182 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ca4cef6af901b8de71c71535369229e">fm_insideTriangleXZ</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> test[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3]);
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#45c52a87f81bba0ed935d83ff9582de1">fm_insideAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3]);
+<a name="l00185"></a>00185 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#45c52a87f81bba0ed935d83ff9582de1">fm_insideAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3]);
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#45c52a87f81bba0ed935d83ff9582de1">fm_insideAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> obmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> obmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> tbmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> tbmax[3]); <span class="comment">// test if bounding box tbmin/tmbax is fully inside obmin/obmax</span>
+<a name="l00188"></a>00188 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#45c52a87f81bba0ed935d83ff9582de1">fm_insideAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> obmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> obmax[3],<span class="keyword">const</span> <span class="keywordtype">double</span> tbmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> tbmax[3]); <span class="comment">// test if bounding box tbmin/tmbax is fully inside obmin/obmax</span>
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#3fb4f3f21c789ffc5369154820c30472">fm_clipTestPoint</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3]);
+<a name="l00191"></a>00191 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#3fb4f3f21c789ffc5369154820c30472">fm_clipTestPoint</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3]);
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#955f588e9f1c54ae05b315c5c1b57c29">fm_clipTestPointXZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3]); <span class="comment">// only tests X and Z, not Y</span>
+<a name="l00194"></a>00194 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#955f588e9f1c54ae05b315c5c1b57c29">fm_clipTestPointXZ</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3]); <span class="comment">// only tests X and Z, not Y</span>
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#f49bf6eedc01255120d2c91f04ccffcc">fm_clipTestAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3],uint32_t &amp;andCode);
+<a name="l00198"></a>00198 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#f49bf6eedc01255120d2c91f04ccffcc">fm_clipTestAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3],uint32_t &amp;andCode);
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e54daa385d845bcb2e27dfd0340bb920">fm_lineTestAABBXZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keywordtype">float</span> &amp;time);
+<a name="l00202"></a>00202 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e54daa385d845bcb2e27dfd0340bb920">fm_lineTestAABBXZ</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keywordtype">double</span> &amp;time);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fb8afe3f925d308fc0d8d3e6e99e521f">fm_lineTestAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keywordtype">float</span> &amp;time);
+<a name="l00205"></a>00205 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#fb8afe3f925d308fc0d8d3e6e99e521f">fm_lineTestAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax[3],<span class="keywordtype">double</span> &amp;time);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p[3],<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]);
+<a name="l00209"></a>00209 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p[3],<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]);
+<a name="l00212"></a>00212 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]);
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#696d64ea8806b47c3f9a7a015ba0e304">fm_minmax</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p[3],<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]); <span class="comment">// accumulate to a min-max value</span>
+<a name="l00215"></a>00215 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#696d64ea8806b47c3f9a7a015ba0e304">fm_minmax</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p[3],<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]); <span class="comment">// accumulate to a min-max value</span>
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 <span class="comment">// Computes the diagonal length of the bounding box and then inflates the bounding box on all sides</span>
+<a name="l00218"></a>00218 <span class="comment">// by the ratio provided.</span>
+<a name="l00219"></a>00219 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cbd7a02b1c968f46338a96cf6d2bf9a7">fm_inflateMinMax</a>(<span class="keywordtype">float</span> bmin[3], <span class="keywordtype">float</span> bmax[3], <span class="keywordtype">float</span> ratio);
+<a name="l00220"></a>00220 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cbd7a02b1c968f46338a96cf6d2bf9a7">fm_inflateMinMax</a>(<span class="keywordtype">double</span> bmin[3], <span class="keywordtype">double</span> bmax[3], <span class="keywordtype">double</span> ratio);
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8946aab872f6d90d17b51685fd3b7c1b">fm_solveX</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>); <span class="comment">// solve for X given this plane equation and the other two components.</span>
+<a name="l00223"></a>00223 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8946aab872f6d90d17b51685fd3b7c1b">fm_solveX</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>); <span class="comment">// solve for X given this plane equation and the other two components.</span>
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2fd9365eecfffd704a661d8e4975ad4d">fm_solveY</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>); <span class="comment">// solve for Y given this plane equation and the other two components.</span>
+<a name="l00226"></a>00226 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2fd9365eecfffd704a661d8e4975ad4d">fm_solveY</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#49dd8d4770be4de32dd57f9b926aa396" title="Return the z value.">z</a>); <span class="comment">// solve for Y given this plane equation and the other two components.</span>
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#0c57a6810cb46d53c66807a83f24b7f8">fm_solveZ</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>); <span class="comment">// solve for Z given this plane equation and the other two components.</span>
+<a name="l00229"></a>00229 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#0c57a6810cb46d53c66807a83f24b7f8">fm_solveZ</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#0d05bb202a57e1c47ae0eeeec2502c1b" title="Return the x value.">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#88617d2888b444b2ad2384b17b0eeadf" title="Return the y value.">y</a>); <span class="comment">// solve for Z given this plane equation and the other two components.</span>
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9a5fc6e07fe7bd2a6794df97c94ea32e">fm_computeBestFitPlane</a>(uint32_t vcount, <span class="comment">// number of input data points</span>
+<a name="l00232"></a>00232 <span class="keyword">const</span> <span class="keywordtype">float</span> *points, <span class="comment">// starting address of points array.</span>
+<a name="l00233"></a>00233 uint32_t vstride, <span class="comment">// stride between input points.</span>
+<a name="l00234"></a>00234 <span class="keyword">const</span> <span class="keywordtype">float</span> *weights, <span class="comment">// *optional point weighting values.</span>
+<a name="l00235"></a>00235 uint32_t wstride, <span class="comment">// weight stride for each vertex.</span>
+<a name="l00236"></a>00236 <span class="keywordtype">float</span> plane[4]);
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9a5fc6e07fe7bd2a6794df97c94ea32e">fm_computeBestFitPlane</a>(uint32_t vcount, <span class="comment">// number of input data points</span>
+<a name="l00239"></a>00239 <span class="keyword">const</span> <span class="keywordtype">double</span> *points, <span class="comment">// starting address of points array.</span>
+<a name="l00240"></a>00240 uint32_t vstride, <span class="comment">// stride between input points.</span>
+<a name="l00241"></a>00241 <span class="keyword">const</span> <span class="keywordtype">double</span> *weights, <span class="comment">// *optional point weighting values.</span>
+<a name="l00242"></a>00242 uint32_t wstride, <span class="comment">// weight stride for each vertex.</span>
+<a name="l00243"></a>00243 <span class="keywordtype">double</span> plane[4]);
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#18df4ec9f73845649b49c9a984f6c52e">fm_computeCentroid</a>(uint32_t vcount, <span class="comment">// number of input data points</span>
+<a name="l00246"></a>00246 <span class="keyword">const</span> <span class="keywordtype">float</span> *points, <span class="comment">// starting address of points array.</span>
+<a name="l00247"></a>00247 uint32_t vstride, <span class="comment">// stride between input points.</span>
+<a name="l00248"></a>00248 <span class="keywordtype">float</span> *center);
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#18df4ec9f73845649b49c9a984f6c52e">fm_computeCentroid</a>(uint32_t vcount, <span class="comment">// number of input data points</span>
+<a name="l00251"></a>00251 <span class="keyword">const</span> <span class="keywordtype">double</span> *points, <span class="comment">// starting address of points array.</span>
+<a name="l00252"></a>00252 uint32_t vstride, <span class="comment">// stride between input points.</span>
+<a name="l00253"></a>00253 <span class="keywordtype">double</span> *center);
+<a name="l00254"></a>00254
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#d449806042368d819f7e5e3e05b390a0">fm_computeBestFitAABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]); <span class="comment">// returns the diagonal distance</span>
+<a name="l00257"></a>00257 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#d449806042368d819f7e5e3e05b390a0">fm_computeBestFitAABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]); <span class="comment">// returns the diagonal distance</span>
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#121beb08ccdf7b92b405f3a7fee2e1d1">fm_computeBestFitSphere</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> center[3]);
+<a name="l00260"></a>00260 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#121beb08ccdf7b92b405f3a7fee2e1d1">fm_computeBestFitSphere</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> center[3]);
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#add3751eaa131cd3fd3007c456a1be1b">fm_lineSphereIntersect</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> center[3],<span class="keywordtype">float</span> radius,<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keywordtype">float</span> intersect[3]);
+<a name="l00263"></a>00263 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#add3751eaa131cd3fd3007c456a1be1b">fm_lineSphereIntersect</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> center[3],<span class="keywordtype">double</span> radius,<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keywordtype">double</span> intersect[3]);
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#80e7d3a77fae86473625be5a63425d90">fm_intersectRayAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3],<span class="keyword">const</span> <span class="keywordtype">float</span> dir[3],<span class="keywordtype">float</span> intersect[3]);
+<a name="l00266"></a>00266 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#72afa3a5fc5c9cf16835bd0bee3d890d">fm_intersectLineSegmentAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keywordtype">float</span> intersect[3]);
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#6b725c6d345f76e759f091e528250c6c">fm_lineIntersectsTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> rayStart[3],<span class="keyword">const</span> <span class="keywordtype">float</span> rayEnd[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3],<span class="keywordtype">float</span> sect[3]);
+<a name="l00269"></a>00269 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#6b725c6d345f76e759f091e528250c6c">fm_lineIntersectsTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> rayStart[3],<span class="keyword">const</span> <span class="keywordtype">double</span> rayEnd[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3],<span class="keywordtype">double</span> sect[3]);
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a70a27c3d146e66e393606b4c48fc37a">fm_rayIntersectsTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> origin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> dir[3],<span class="keyword">const</span> <span class="keywordtype">float</span> v0[3],<span class="keyword">const</span> <span class="keywordtype">float</span> v1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> v2[3],<span class="keywordtype">float</span> &amp;t);
+<a name="l00272"></a>00272 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a70a27c3d146e66e393606b4c48fc37a">fm_rayIntersectsTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> origin[3],<span class="keyword">const</span> <span class="keywordtype">double</span> dir[3],<span class="keyword">const</span> <span class="keywordtype">double</span> v0[3],<span class="keyword">const</span> <span class="keywordtype">double</span> v1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> v2[3],<span class="keywordtype">double</span> &amp;t);
+<a name="l00273"></a>00273
+<a name="l00274"></a>00274 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1ca791e15419dff5d3ee0948b090219">fm_raySphereIntersect</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> center[3],<span class="keywordtype">float</span> radius,<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3],<span class="keyword">const</span> <span class="keywordtype">float</span> dir[3],<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#b699912662dfd1bd647fe45513a04792" title="Return the distance between the ends of this and another vector This is symantically...">distance</a>,<span class="keywordtype">float</span> intersect[3]);
+<a name="l00275"></a>00275 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1ca791e15419dff5d3ee0948b090219">fm_raySphereIntersect</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> center[3],<span class="keywordtype">double</span> radius,<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keyword">const</span> <span class="keywordtype">double</span> dir[3],<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#b699912662dfd1bd647fe45513a04792" title="Return the distance between the ends of this and another vector This is symantically...">distance</a>,<span class="keywordtype">double</span> intersect[3]);
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#010b32a67e0a6823c0f48c6ff9d37fb2">fm_catmullRom</a>(<span class="keywordtype">float</span> out_vector[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3],<span class="keyword">const</span> <span class="keywordtype">float</span> *p4, <span class="keyword">const</span> <span class="keywordtype">float</span> s);
+<a name="l00278"></a>00278 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#010b32a67e0a6823c0f48c6ff9d37fb2">fm_catmullRom</a>(<span class="keywordtype">double</span> out_vector[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3],<span class="keyword">const</span> <span class="keywordtype">double</span> *p4, <span class="keyword">const</span> <span class="keywordtype">double</span> s);
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bc2bf48dcc098618366fa76bf0c2a75a">fm_intersectAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> bmin1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmin2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> bmax2[3]);
+<a name="l00281"></a>00281 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#bc2bf48dcc098618366fa76bf0c2a75a">fm_intersectAABB</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> bmin1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmin2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> bmax2[3]);
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 <span class="comment">// computes the rotation quaternion to go from unit-vector v0 to unit-vector v1</span>
+<a name="l00285"></a>00285 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#44b109dcdaf358908f56f4d388642f58">fm_rotationArc</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> v0[3],<span class="keyword">const</span> <span class="keywordtype">float</span> v1[3],<span class="keywordtype">float</span> quat[4]);
+<a name="l00286"></a>00286 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#44b109dcdaf358908f56f4d388642f58">fm_rotationArc</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> v0[3],<span class="keyword">const</span> <span class="keywordtype">double</span> v1[3],<span class="keywordtype">double</span> quat[4]);
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7a4c8c9a53e6eabd8c92860358eac481">fm_distancePointLineSegment</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> Point[3],<span class="keyword">const</span> <span class="keywordtype">float</span> LineStart[3],<span class="keyword">const</span> <span class="keywordtype">float</span> LineEnd[3],<span class="keywordtype">float</span> intersection[3],<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a> &amp;type,<span class="keywordtype">float</span> epsilon);
+<a name="l00289"></a>00289 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7a4c8c9a53e6eabd8c92860358eac481">fm_distancePointLineSegment</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> Point[3],<span class="keyword">const</span> <span class="keywordtype">double</span> LineStart[3],<span class="keyword">const</span> <span class="keywordtype">double</span> LineEnd[3],<span class="keywordtype">double</span> intersection[3],<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a> &amp;type,<span class="keywordtype">double</span> epsilon);
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ffeeea97b9e77a30c72ce0e9b4e3896">fm_colinear</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p3[3],<span class="keywordtype">double</span> epsilon=0.999); <span class="comment">// true if these three points in a row are co-linear</span>
+<a name="l00293"></a>00293 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ffeeea97b9e77a30c72ce0e9b4e3896">fm_colinear</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p3[3],<span class="keywordtype">float</span> epsilon=0.999f);
+<a name="l00294"></a>00294
+<a name="l00295"></a>00295 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ffeeea97b9e77a30c72ce0e9b4e3896">fm_colinear</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> a1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> a2[3],<span class="keyword">const</span> <span class="keywordtype">float</span> b1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> b2[3],<span class="keywordtype">float</span> epsilon=0.999f); <span class="comment">// true if these two line segments are co-linear.</span>
+<a name="l00296"></a>00296 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2ffeeea97b9e77a30c72ce0e9b4e3896">fm_colinear</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> a1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> a2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b2[3],<span class="keywordtype">double</span> epsilon=0.999); <span class="comment">// true if these two line segments are co-linear.</span>
+<a name="l00297"></a>00297
+<a name="l00298"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">00298</a> <span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a>
+<a name="l00299"></a>00299 {
+<a name="l00300"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441982692d82fda113c3844e3d5cd7737e7">00300</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441982692d82fda113c3844e3d5cd7737e7">IR_DONT_INTERSECT</a>,
+<a name="l00301"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441c65d828299272a2173a708a08a6a9ecf">00301</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441c65d828299272a2173a708a08a6a9ecf">IR_DO_INTERSECT</a>,
+<a name="l00302"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441e3934decbf14b762bf1fb688a8bf888e">00302</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441e3934decbf14b762bf1fb688a8bf888e">IR_COINCIDENT</a>,
+<a name="l00303"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441e4e33ac5bb9efd259e1804e12fb4df7f">00303</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441e4e33ac5bb9efd259e1804e12fb4df7f">IR_PARALLEL</a>,
+<a name="l00304"></a>00304 };
+<a name="l00305"></a>00305
+<a name="l00306"></a>00306 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7180da587c645ab12754120132d54263">fm_intersectLineSegments2d</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> a1[3], <span class="keyword">const</span> <span class="keywordtype">float</span> a2[3], <span class="keyword">const</span> <span class="keywordtype">float</span> b1[3], <span class="keyword">const</span> <span class="keywordtype">float</span> b2[3], <span class="keywordtype">float</span> intersectionPoint[3]);
+<a name="l00307"></a>00307 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7180da587c645ab12754120132d54263">fm_intersectLineSegments2d</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> a1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> a2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b2[3],<span class="keywordtype">double</span> intersectionPoint[3]);
+<a name="l00308"></a>00308
+<a name="l00309"></a>00309 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2a82702380cd9bd0469ee8663b3facdd">fm_intersectLineSegments2dTime</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> a1[3], <span class="keyword">const</span> <span class="keywordtype">float</span> a2[3], <span class="keyword">const</span> <span class="keywordtype">float</span> b1[3], <span class="keyword">const</span> <span class="keywordtype">float</span> b2[3],<span class="keywordtype">float</span> &amp;t1,<span class="keywordtype">float</span> &amp;t2);
+<a name="l00310"></a>00310 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#2a82702380cd9bd0469ee8663b3facdd">fm_intersectLineSegments2dTime</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> a1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> a2[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> b2[3],<span class="keywordtype">double</span> &amp;t1,<span class="keywordtype">double</span> &amp;t2);
+<a name="l00311"></a>00311
+<a name="l00312"></a>00312 <span class="comment">// Plane-Triangle splitting</span>
+<a name="l00313"></a>00313
+<a name="l00314"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">00314</a> <span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a>
+<a name="l00315"></a>00315 {
+<a name="l00316"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607cf1e58b50ed4444c0a2a0a2726395c430">00316</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607cf1e58b50ed4444c0a2a0a2726395c430">PTR_ON_PLANE</a>,
+<a name="l00317"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607cb7d607fd4a4b559b23e0432b32d3ad31">00317</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607cb7d607fd4a4b559b23e0432b32d3ad31">PTR_FRONT</a>,
+<a name="l00318"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c04dee1498613f2b82ff56fb995b9df9e">00318</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c04dee1498613f2b82ff56fb995b9df9e">PTR_BACK</a>,
+<a name="l00319"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c82a429ed76868ef18cf4919b44b48cea">00319</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c82a429ed76868ef18cf4919b44b48cea">PTR_SPLIT</a>,
+<a name="l00320"></a>00320 };
+<a name="l00321"></a>00321
+<a name="l00322"></a>00322 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#698eb52eed0586a33b43a9caf1faea4a">fm_planeTriIntersection</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4], <span class="comment">// the plane equation in Ax+By+Cz+D format</span>
+<a name="l00323"></a>00323 <span class="keyword">const</span> <span class="keywordtype">float</span> *triangle, <span class="comment">// the source triangle.</span>
+<a name="l00324"></a>00324 uint32_t tstride, <span class="comment">// stride in bytes of the input and output *vertices*</span>
+<a name="l00325"></a>00325 <span class="keywordtype">float</span> epsilon, <span class="comment">// the co-planer epsilon value.</span>
+<a name="l00326"></a>00326 <span class="keywordtype">float</span> *front, <span class="comment">// the triangle in front of the</span>
+<a name="l00327"></a>00327 uint32_t &amp;fcount, <span class="comment">// number of vertices in the 'front' triangle</span>
+<a name="l00328"></a>00328 <span class="keywordtype">float</span> *back, <span class="comment">// the triangle in back of the plane</span>
+<a name="l00329"></a>00329 uint32_t &amp;bcount); <span class="comment">// the number of vertices in the 'back' triangle.</span>
+<a name="l00330"></a>00330
+<a name="l00331"></a>00331
+<a name="l00332"></a>00332 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#698eb52eed0586a33b43a9caf1faea4a">fm_planeTriIntersection</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4], <span class="comment">// the plane equation in Ax+By+Cz+D format</span>
+<a name="l00333"></a>00333 <span class="keyword">const</span> <span class="keywordtype">double</span> *triangle, <span class="comment">// the source triangle.</span>
+<a name="l00334"></a>00334 uint32_t tstride, <span class="comment">// stride in bytes of the input and output *vertices*</span>
+<a name="l00335"></a>00335 <span class="keywordtype">double</span> epsilon, <span class="comment">// the co-planer epsilon value.</span>
+<a name="l00336"></a>00336 <span class="keywordtype">double</span> *front, <span class="comment">// the triangle in front of the</span>
+<a name="l00337"></a>00337 uint32_t &amp;fcount, <span class="comment">// number of vertices in the 'front' triangle</span>
+<a name="l00338"></a>00338 <span class="keywordtype">double</span> *back, <span class="comment">// the triangle in back of the plane</span>
+<a name="l00339"></a>00339 uint32_t &amp;bcount); <span class="comment">// the number of vertices in the 'back' triangle.</span>
+<a name="l00340"></a>00340
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5818d6dc249cc90d8ff4b8d1533b64e3">fm_intersectPointPlane</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[3],<span class="keywordtype">float</span> *split,<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4]);
+<a name="l00343"></a>00343 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5818d6dc249cc90d8ff4b8d1533b64e3">fm_intersectPointPlane</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[3],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[3],<span class="keywordtype">double</span> *split,<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4]);
+<a name="l00344"></a>00344
+<a name="l00345"></a>00345 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cfb3009ad74719bf7240567fedd43ead">fm_getSidePlane</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p[3],<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> epsilon);
+<a name="l00346"></a>00346 <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cfb3009ad74719bf7240567fedd43ead">fm_getSidePlane</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p[3],<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> epsilon);
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348
+<a name="l00349"></a>00349 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60e918c2ee5358ed7fd566623f18f566">fm_computeBestFitOBB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> *sides,<span class="keywordtype">float</span> matrix[16],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00350"></a>00350 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60e918c2ee5358ed7fd566623f18f566">fm_computeBestFitOBB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> *sides,<span class="keywordtype">double</span> matrix[16],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00351"></a>00351
+<a name="l00352"></a>00352 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60e918c2ee5358ed7fd566623f18f566">fm_computeBestFitOBB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> *sides,<span class="keywordtype">float</span> pos[3],<span class="keywordtype">float</span> quat[4],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00353"></a>00353 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60e918c2ee5358ed7fd566623f18f566">fm_computeBestFitOBB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> *sides,<span class="keywordtype">double</span> pos[3],<span class="keywordtype">double</span> quat[4],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4719b5216a887947c4c98e3b06844d9b">fm_computeBestFitABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> *sides,<span class="keywordtype">float</span> pos[3]);
+<a name="l00356"></a>00356 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#4719b5216a887947c4c98e3b06844d9b">fm_computeBestFitABB</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> *sides,<span class="keywordtype">double</span> pos[3]);
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358
+<a name="l00359"></a>00359 <span class="comment">//** Note, if the returned capsule height is less than zero, then you must represent it is a sphere of size radius.</span>
+<a name="l00360"></a>00360 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cb48dcc76450c14ccb5cf133c2d02b54">fm_computeBestFitCapsule</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> &amp;radius,<span class="keywordtype">float</span> &amp;height,<span class="keywordtype">float</span> matrix[16],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00361"></a>00361 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#cb48dcc76450c14ccb5cf133c2d02b54">fm_computeBestFitCapsule</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">float</span> &amp;radius,<span class="keywordtype">float</span> &amp;height,<span class="keywordtype">double</span> matrix[16],<span class="keywordtype">bool</span> bruteForce=<span class="keyword">true</span>);
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363
+<a name="l00364"></a>00364 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9624b57c4b00648ed09e15b1ec266c32">fm_planeToMatrix</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert a plane equation to a 4x4 rotation matrix. Reference vector is 0,1,0</span>
+<a name="l00365"></a>00365 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a885c49a2b1b1cb2be57b88c567d6cc2">fm_planeToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> plane[4],<span class="keywordtype">float</span> quat[4],<span class="keywordtype">float</span> pos[3]); <span class="comment">// convert a plane equation to a quaternion and translation</span>
+<a name="l00366"></a>00366
+<a name="l00367"></a>00367 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#9624b57c4b00648ed09e15b1ec266c32">fm_planeToMatrix</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert a plane equation to a 4x4 rotation matrix</span>
+<a name="l00368"></a>00368 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a885c49a2b1b1cb2be57b88c567d6cc2">fm_planeToQuat</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> plane[4],<span class="keywordtype">double</span> quat[4],<span class="keywordtype">double</span> pos[3]); <span class="comment">// convert a plane equation to a quaternion and translation</span>
+<a name="l00369"></a>00369
+<a name="l00370"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7d9d7f616ab8179bef4ded2167ce5050">00370</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7d9d7f616ab8179bef4ded2167ce5050">fm_doubleToFloat3</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p[3],<span class="keywordtype">float</span> t[3]) { t[0] = (float) p[0]; t[1] = (float)p[1]; t[2] = (float)p[2]; };
+<a name="l00371"></a><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#13583f8cd7fc965e170e52c7e8590c57">00371</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#13583f8cd7fc965e170e52c7e8590c57">fm_floatToDouble3</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p[3],<span class="keywordtype">double</span> t[3]) { t[0] = (double)p[0]; t[1] = (double)p[1]; t[2] = (double)p[2]; };
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373
+<a name="l00374"></a>00374 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#099943af57cdcf6f5d70249dac806205">fm_eulerMatrix</a>(<span class="keywordtype">float</span> ax,<span class="keywordtype">float</span> ay,<span class="keywordtype">float</span> az,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert euler (in radians) to a dest 4x4 matrix (translation set to zero)</span>
+<a name="l00375"></a>00375 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#099943af57cdcf6f5d70249dac806205">fm_eulerMatrix</a>(<span class="keywordtype">double</span> ax,<span class="keywordtype">double</span> ay,<span class="keywordtype">double</span> az,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert euler (in radians) to a dest 4x4 matrix (translation set to zero)</span>
+<a name="l00376"></a>00376
+<a name="l00377"></a>00377
+<a name="l00378"></a>00378 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#01f6b76a126b8ddb6bc75fcb24d56b63">fm_computeMeshVolume</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *indices);
+<a name="l00379"></a>00379 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#01f6b76a126b8ddb6bc75fcb24d56b63">fm_computeMeshVolume</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *indices);
+<a name="l00380"></a>00380
+<a name="l00381"></a>00381
+<a name="l00382"></a><a class="code" href="_float_math_8h.html#9da2fa07f097e59a3697d603b2c2f541">00382</a> <span class="preprocessor">#define FM_DEFAULT_GRANULARITY 0.001f // 1 millimeter is the default granularity</span>
+<a name="l00383"></a>00383 <span class="preprocessor"></span>
+<a name="l00384"></a><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">00384</a> <span class="keyword">class </span><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">fm_VertexIndex</a>
+<a name="l00385"></a>00385 {
+<a name="l00386"></a>00386 <span class="keyword">public</span>:
+<a name="l00387"></a>00387 <span class="keyword">virtual</span> uint32_t <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#f0a76c201e908058e0565fb589d5c8ec">getIndex</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3],<span class="keywordtype">bool</span> &amp;newPos) = 0; <span class="comment">// get welded index for this float vector[3]</span>
+<a name="l00388"></a>00388 <span class="keyword">virtual</span> uint32_t <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#f0a76c201e908058e0565fb589d5c8ec">getIndex</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3],<span class="keywordtype">bool</span> &amp;newPos) = 0; <span class="comment">// get welded index for this double vector[3]</span>
+<a name="l00389"></a>00389 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#bfe5370a180b9df682e22968618c493d">getVerticesFloat</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;
+<a name="l00390"></a>00390 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">double</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#228633b9540532db6c15b7a27db85531">getVerticesDouble</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;
+<a name="l00391"></a>00391 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#116ff6211b3875be4f6959e9bfc3f52a">getVertexFloat</a>(uint32_t index) <span class="keyword">const</span> = 0;
+<a name="l00392"></a>00392 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">double</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#d6917c7d9b0af0fbb6de0bbfc822b2a4">getVertexDouble</a>(uint32_t index) <span class="keyword">const</span> = 0;
+<a name="l00393"></a>00393 <span class="keyword">virtual</span> uint32_t <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#4e440ed85cbfd3f02790a346dc448d91">getVcount</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;
+<a name="l00394"></a>00394 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#7d546cd3a301fd47bfde8cdd8f9ff950">isDouble</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;
+<a name="l00395"></a>00395 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#c0d22736210b88c849562c30481437d0">saveAsObj</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,uint32_t tcount,uint32_t *indices) = 0;
+<a name="l00396"></a>00396 };
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">fm_VertexIndex</a> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5ca83507e14e16aae1d3d49f43fcbf48">fm_createVertexIndex</a>(<span class="keywordtype">double</span> granularity,<span class="keywordtype">bool</span> snapToGrid); <span class="comment">// create an indexed vertex system for doubles</span>
+<a name="l00399"></a>00399 <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">fm_VertexIndex</a> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#5ca83507e14e16aae1d3d49f43fcbf48">fm_createVertexIndex</a>(<span class="keywordtype">float</span> granularity,<span class="keywordtype">bool</span> snapToGrid); <span class="comment">// create an indexed vertext system for floats</span>
+<a name="l00400"></a>00400 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#7e401fb5f8d705ba7726af2c0beea70d">fm_releaseVertexIndex</a>(<a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">fm_VertexIndex</a> *vindex);
+<a name="l00401"></a>00401
+<a name="l00402"></a>00402
+<a name="l00403"></a><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">00403</a> <span class="keyword">class </span><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">fm_Triangulate</a>
+<a name="l00404"></a>00404 {
+<a name="l00405"></a>00405 <span class="keyword">public</span>:
+<a name="l00406"></a>00406 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">double</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html#995315805c698e94bd4dd85409d042c3">triangulate3d</a>(uint32_t pcount,
+<a name="l00407"></a>00407 <span class="keyword">const</span> <span class="keywordtype">double</span> *points,
+<a name="l00408"></a>00408 uint32_t vstride,
+<a name="l00409"></a>00409 uint32_t &amp;tcount,
+<a name="l00410"></a>00410 <span class="keywordtype">bool</span> consolidate,
+<a name="l00411"></a>00411 <span class="keywordtype">double</span> epsilon) = 0;
+<a name="l00412"></a>00412
+<a name="l00413"></a>00413 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html#995315805c698e94bd4dd85409d042c3">triangulate3d</a>(uint32_t pcount,
+<a name="l00414"></a>00414 <span class="keyword">const</span> <span class="keywordtype">float</span> *points,
+<a name="l00415"></a>00415 uint32_t vstride,
+<a name="l00416"></a>00416 uint32_t &amp;tcount,
+<a name="l00417"></a>00417 <span class="keywordtype">bool</span> consolidate,
+<a name="l00418"></a>00418 <span class="keywordtype">float</span> epsilon) = 0;
+<a name="l00419"></a>00419 };
+<a name="l00420"></a>00420
+<a name="l00421"></a>00421 <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">fm_Triangulate</a> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#f2757653a894b33ffa13feef4e931a69">fm_createTriangulate</a>(<span class="keywordtype">void</span>);
+<a name="l00422"></a>00422 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#6235a78977f152249b51e3b7095e8bb1">fm_releaseTriangulate</a>(<a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">fm_Triangulate</a> *t);
+<a name="l00423"></a>00423
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <span class="keyword">const</span> <span class="keywordtype">float</span> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#51e027555f4bfefcd4b3f516b0d7c25a">fm_getPoint</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,uint32_t index);
+<a name="l00426"></a>00426 <span class="keyword">const</span> <span class="keywordtype">double</span> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#51e027555f4bfefcd4b3f516b0d7c25a">fm_getPoint</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,uint32_t index);
+<a name="l00427"></a>00427
+<a name="l00428"></a>00428 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#437d2da1a476dd4f020e57dd8ad3803c">fm_insideTriangle</a>(<span class="keywordtype">float</span> Ax, <span class="keywordtype">float</span> Ay,<span class="keywordtype">float</span> Bx, <span class="keywordtype">float</span> By,<span class="keywordtype">float</span> Cx, <span class="keywordtype">float</span> Cy,<span class="keywordtype">float</span> Px, <span class="keywordtype">float</span> Py);
+<a name="l00429"></a>00429 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#437d2da1a476dd4f020e57dd8ad3803c">fm_insideTriangle</a>(<span class="keywordtype">double</span> Ax, <span class="keywordtype">double</span> Ay,<span class="keywordtype">double</span> Bx, <span class="keywordtype">double</span> By,<span class="keywordtype">double</span> Cx, <span class="keywordtype">double</span> Cy,<span class="keywordtype">double</span> Px, <span class="keywordtype">double</span> Py);
+<a name="l00430"></a>00430 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8022779a39f2d98d0d1e59dc9e0ff382">fm_areaPolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride);
+<a name="l00431"></a>00431 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8022779a39f2d98d0d1e59dc9e0ff382">fm_areaPolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride);
+<a name="l00432"></a>00432
+<a name="l00433"></a>00433 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#6143f60040a0bb5d1dcf7ad2dc19b192">fm_pointInsidePolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keyword">const</span> <span class="keywordtype">float</span> *point,uint32_t xindex=0,uint32_t yindex=1);
+<a name="l00434"></a>00434 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#6143f60040a0bb5d1dcf7ad2dc19b192">fm_pointInsidePolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keyword">const</span> <span class="keywordtype">double</span> *point,uint32_t xindex=0,uint32_t yindex=1);
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8d49d5613f198a6c4be6f32dbb1ad7d5">fm_consolidatePolygon</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,<span class="keywordtype">float</span> *dest,<span class="keywordtype">float</span> epsilon=0.999999f); <span class="comment">// collapses co-linear edges.</span>
+<a name="l00437"></a>00437 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#8d49d5613f198a6c4be6f32dbb1ad7d5">fm_consolidatePolygon</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,<span class="keywordtype">double</span> *dest,<span class="keywordtype">double</span> epsilon=0.999999); <span class="comment">// collapses co-linear edges.</span>
+<a name="l00438"></a>00438
+<a name="l00439"></a>00439
+<a name="l00440"></a>00440 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e6c3d39e600a5a6588a12c0df1bc180b">fm_computeSplitPlane</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *indices,<span class="keywordtype">double</span> *plane);
+<a name="l00441"></a>00441 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#e6c3d39e600a5a6588a12c0df1bc180b">fm_computeSplitPlane</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *indices,<span class="keywordtype">float</span> *plane);
+<a name="l00442"></a>00442
+<a name="l00443"></a>00443 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab1bd86fa8cba57940d8de52aa5a4c07">fm_nearestPointInTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *pos,<span class="keyword">const</span> <span class="keywordtype">float</span> *p1,<span class="keyword">const</span> <span class="keywordtype">float</span> *p2,<span class="keyword">const</span> <span class="keywordtype">float</span> *p3,<span class="keywordtype">float</span> *nearest);
+<a name="l00444"></a>00444 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab1bd86fa8cba57940d8de52aa5a4c07">fm_nearestPointInTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *pos,<span class="keyword">const</span> <span class="keywordtype">double</span> *p1,<span class="keyword">const</span> <span class="keywordtype">double</span> *p2,<span class="keyword">const</span> <span class="keywordtype">double</span> *p3,<span class="keywordtype">double</span> *nearest);
+<a name="l00445"></a>00445
+<a name="l00446"></a>00446 <span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#3c2c25509bb923e3a67f2f4229a0c524">fm_areaTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *p1,<span class="keyword">const</span> <span class="keywordtype">float</span> *p2,<span class="keyword">const</span> <span class="keywordtype">float</span> *p3);
+<a name="l00447"></a>00447 <span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#3c2c25509bb923e3a67f2f4229a0c524">fm_areaTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *p1,<span class="keyword">const</span> <span class="keywordtype">double</span> *p2,<span class="keyword">const</span> <span class="keywordtype">double</span> *p3);
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60de5964eed515c5785fcad85a0a7efa">fm_subtract</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *A,<span class="keyword">const</span> <span class="keywordtype">float</span> *B,<span class="keywordtype">float</span> *diff); <span class="comment">// compute A-B and store the result in 'diff'</span>
+<a name="l00450"></a>00450 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#60de5964eed515c5785fcad85a0a7efa">fm_subtract</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *A,<span class="keyword">const</span> <span class="keywordtype">double</span> *B,<span class="keywordtype">double</span> *diff); <span class="comment">// compute A-B and store the result in 'diff'</span>
+<a name="l00451"></a>00451
+<a name="l00452"></a>00452 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#d94a34778edfa8266a2cf5c3a9aecd7d">fm_multiply</a>(<span class="keywordtype">float</span> *A,<span class="keywordtype">float</span> scaler);
+<a name="l00453"></a>00453 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#d94a34778edfa8266a2cf5c3a9aecd7d">fm_multiply</a>(<span class="keywordtype">double</span> *A,<span class="keywordtype">double</span> scaler);
+<a name="l00454"></a>00454
+<a name="l00455"></a>00455 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#950524c52471990ccd5ab8ffd2fdace4">fm_add</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *A,<span class="keyword">const</span> <span class="keywordtype">float</span> *B,<span class="keywordtype">float</span> *sum);
+<a name="l00456"></a>00456 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#950524c52471990ccd5ab8ffd2fdace4">fm_add</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *A,<span class="keyword">const</span> <span class="keywordtype">double</span> *B,<span class="keywordtype">double</span> *sum);
+<a name="l00457"></a>00457
+<a name="l00458"></a>00458 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ec4465fd7d2f2b8c93db8949a7c5a68e">fm_copy3</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *source,<span class="keywordtype">float</span> *dest);
+<a name="l00459"></a>00459 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ec4465fd7d2f2b8c93db8949a7c5a68e">fm_copy3</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *source,<span class="keywordtype">double</span> *dest);
+<a name="l00460"></a>00460
+<a name="l00461"></a>00461 <span class="comment">// re-indexes an indexed triangle mesh but drops unused vertices. The output_indices can be the same pointer as the input indices.</span>
+<a name="l00462"></a>00462 <span class="comment">// the output_vertices can point to the input vertices if you desire. The output_vertices buffer should be at least the same size</span>
+<a name="l00463"></a>00463 <span class="comment">// is the input buffer. The routine returns the new vertex count after re-indexing.</span>
+<a name="l00464"></a>00464 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#66660b41c914e7f74dfeb7a63ae577bb">fm_copyUniqueVertices</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *input_vertices,<span class="keywordtype">float</span> *output_vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *input_indices,uint32_t *output_indices);
+<a name="l00465"></a>00465 uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#66660b41c914e7f74dfeb7a63ae577bb">fm_copyUniqueVertices</a>(uint32_t vcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *input_vertices,<span class="keywordtype">double</span> *output_vertices,uint32_t tcount,<span class="keyword">const</span> uint32_t *input_indices,uint32_t *output_indices);
+<a name="l00466"></a>00466
+<a name="l00467"></a>00467 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#06301f8df72d582ed0504a42d7a63d09">fm_isMeshCoplanar</a>(uint32_t tcount,<span class="keyword">const</span> uint32_t *indices,<span class="keyword">const</span> <span class="keywordtype">float</span> *vertices,<span class="keywordtype">bool</span> doubleSided); <span class="comment">// returns true if this collection of indexed triangles are co-planar!</span>
+<a name="l00468"></a>00468 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#06301f8df72d582ed0504a42d7a63d09">fm_isMeshCoplanar</a>(uint32_t tcount,<span class="keyword">const</span> uint32_t *indices,<span class="keyword">const</span> <span class="keywordtype">double</span> *vertices,<span class="keywordtype">bool</span> doubleSided); <span class="comment">// returns true if this collection of indexed triangles are co-planar!</span>
+<a name="l00469"></a>00469
+<a name="l00470"></a>00470 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b7f413a7722f01daa020b05ea6cf000c">fm_samePlane</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> p1[4],<span class="keyword">const</span> <span class="keywordtype">float</span> p2[4],<span class="keywordtype">float</span> normalEpsilon=0.01f,<span class="keywordtype">float</span> dEpsilon=0.001f,<span class="keywordtype">bool</span> doubleSided=<span class="keyword">false</span>); <span class="comment">// returns true if these two plane equations are identical within an epsilon</span>
+<a name="l00471"></a>00471 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#b7f413a7722f01daa020b05ea6cf000c">fm_samePlane</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> p1[4],<span class="keyword">const</span> <span class="keywordtype">double</span> p2[4],<span class="keywordtype">double</span> normalEpsilon=0.01,<span class="keywordtype">double</span> dEpsilon=0.001,<span class="keywordtype">bool</span> doubleSided=<span class="keyword">false</span>);
+<a name="l00472"></a>00472
+<a name="l00473"></a>00473 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#44b5172cfcadc77e68e1886cc5a33d4a">fm_OBBtoAABB</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> obmin[3],<span class="keyword">const</span> <span class="keywordtype">float</span> obmax[3],<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> abmin[3],<span class="keywordtype">float</span> abmax[3]);
+<a name="l00474"></a>00474
+<a name="l00475"></a>00475 <span class="comment">// a utility class that will tessellate a mesh.</span>
+<a name="l00476"></a><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">00476</a> <span class="keyword">class </span><a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">fm_Tesselate</a>
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 <span class="keyword">public</span>:
+<a name="l00479"></a>00479 <span class="keyword">virtual</span> <span class="keyword">const</span> uint32_t * <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html#2709e4a7d794f0d2ac23d077bc22629b">tesselate</a>(<a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">fm_VertexIndex</a> *vindex,uint32_t tcount,<span class="keyword">const</span> uint32_t *indices,<span class="keywordtype">float</span> longEdge,uint32_t maxDepth,uint32_t &amp;outcount) = 0;
+<a name="l00480"></a>00480 };
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 <a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">fm_Tesselate</a> * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#24043d9e6a8342127bda2d663e91c2a9">fm_createTesselate</a>(<span class="keywordtype">void</span>);
+<a name="l00483"></a>00483 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#538e188095ec76178ab7cfe067b8fad4">fm_releaseTesselate</a>(<a class="code" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">fm_Tesselate</a> *t);
+<a name="l00484"></a>00484
+<a name="l00485"></a>00485 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#09bbac02b2d9b71ee13de5b8affe1830">fm_computeMeanNormals</a>(uint32_t vcount, <span class="comment">// the number of vertices</span>
+<a name="l00486"></a>00486 <span class="keyword">const</span> <span class="keywordtype">float</span> *vertices, <span class="comment">// the base address of the vertex position data.</span>
+<a name="l00487"></a>00487 uint32_t vstride, <span class="comment">// the stride between position data.</span>
+<a name="l00488"></a>00488 <span class="keywordtype">float</span> *normals, <span class="comment">// the base address of the destination for mean vector normals</span>
+<a name="l00489"></a>00489 uint32_t nstride, <span class="comment">// the stride between normals</span>
+<a name="l00490"></a>00490 uint32_t tcount, <span class="comment">// the number of triangles</span>
+<a name="l00491"></a>00491 <span class="keyword">const</span> uint32_t *indices); <span class="comment">// the triangle indices</span>
+<a name="l00492"></a>00492
+<a name="l00493"></a>00493 <span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#09bbac02b2d9b71ee13de5b8affe1830">fm_computeMeanNormals</a>(uint32_t vcount, <span class="comment">// the number of vertices</span>
+<a name="l00494"></a>00494 <span class="keyword">const</span> <span class="keywordtype">double</span> *vertices, <span class="comment">// the base address of the vertex position data.</span>
+<a name="l00495"></a>00495 uint32_t vstride, <span class="comment">// the stride between position data.</span>
+<a name="l00496"></a>00496 <span class="keywordtype">double</span> *normals, <span class="comment">// the base address of the destination for mean vector normals</span>
+<a name="l00497"></a>00497 uint32_t nstride, <span class="comment">// the stride between normals</span>
+<a name="l00498"></a>00498 uint32_t tcount, <span class="comment">// the number of triangles</span>
+<a name="l00499"></a>00499 <span class="keyword">const</span> uint32_t *indices); <span class="comment">// the triangle indices</span>
+<a name="l00500"></a>00500
+<a name="l00501"></a>00501
+<a name="l00502"></a>00502 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#141c1e360636067eae8247cf7bcb7e22">fm_isValidTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *p1,<span class="keyword">const</span> <span class="keywordtype">float</span> *p2,<span class="keyword">const</span> <span class="keywordtype">float</span> *p3,<span class="keywordtype">float</span> epsilon=0.00001f);
+<a name="l00503"></a>00503 <span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#141c1e360636067eae8247cf7bcb7e22">fm_isValidTriangle</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *p1,<span class="keyword">const</span> <span class="keywordtype">double</span> *p2,<span class="keyword">const</span> <span class="keywordtype">double</span> *p3,<span class="keywordtype">double</span> epsilon=0.00001f);
+<a name="l00504"></a>00504
+<a name="l00505"></a>00505 }; <span class="comment">// end of namespace</span>
+<a name="l00506"></a>00506
+<a name="l00507"></a>00507 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<!-- start footer part -->
+<div class="footer">
+Copyright &copy; 2015-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. <a href="http://www.nvidia.com ">www.nvidia.com</a>
+</div>
+</body>
+</html>