aboutsummaryrefslogtreecommitdiff
path: root/docs/source_docs/files/_float_math_8h_source.html
blob: a2282a314ccb9d9e80d9a1584b106781c89fd680 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<html>
	<head>
		<title>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.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_float_math_8h_source.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">FloatMath.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_float_math_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef FLOAT_MATH_LIB_H</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#define FLOAT_MATH_LIB_H</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;float.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html">    9</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html">FLOAT_MATH</a></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;{</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9af">   12</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9af">FM_ClipState</a></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afa9df27601d6ae82936064ca3010b80a5f">   14</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afa9df27601d6ae82936064ca3010b80a5f">FMCS_XMIN</a>       = (1&lt;&lt;0),</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afae45bdfb2c4086bde450b8af70d756585">   15</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afae45bdfb2c4086bde450b8af70d756585">FMCS_XMAX</a>       = (1&lt;&lt;1),</div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afad03a9eb1a839f2cb34508a7233906175">   16</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afad03a9eb1a839f2cb34508a7233906175">FMCS_YMIN</a>       = (1&lt;&lt;2),</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaae2ee30933040ceaba04d40a1eb098fd">   17</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaae2ee30933040ceaba04d40a1eb098fd">FMCS_YMAX</a>       = (1&lt;&lt;3),</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afac8adc6db98a363354407d4eb1df66a87">   18</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afac8adc6db98a363354407d4eb1df66a87">FMCS_ZMIN</a>       = (1&lt;&lt;4),</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaf6824c785aa66d10c8b39b8fa86375cb">   19</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaf6824c785aa66d10c8b39b8fa86375cb">FMCS_ZMAX</a>       = (1&lt;&lt;5),</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;};</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78">   22</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78acf27da21bcf3eb6bbaa8c5f24254dcef">   24</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78acf27da21bcf3eb6bbaa8c5f24254dcef">FM_XAXIS</a>   = (1&lt;&lt;0),</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78a6d608e9c6b6761a8cfbcdc7470d4e894">   25</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78a6d608e9c6b6761a8cfbcdc7470d4e894">FM_YAXIS</a>   = (1&lt;&lt;1),</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78ac78cb90c59826b6320fd1891088b1c07">   26</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78ac78cb90c59826b6320fd1891088b1c07">FM_ZAXIS</a>   = (1&lt;&lt;2)</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;};</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9">   29</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;{</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9afb71f22022e7b20c1cffe0d767794516">   31</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9afb71f22022e7b20c1cffe0d767794516">LS_START</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9aeddaa7664a1a0987313b33a7991dabc9">   32</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9aeddaa7664a1a0987313b33a7991dabc9">LS_MIDDLE</a>,</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9ae1972ba2d53acc5b40a7186e9463724f">   33</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9ae1972ba2d53acc5b40a7186e9463724f">LS_END</a></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#abb8140d5d40ac95d14d060b3df484650">   37</a></span>&#160;<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#abb8140d5d40ac95d14d060b3df484650">FM_PI</a> = 3.1415926535897932384626433832795028841971693993751f;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#ae0d9cd328d51cec3b434cc0a5ac1aa76">   38</a></span>&#160;<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#ae0d9cd328d51cec3b434cc0a5ac1aa76">FM_DEG_TO_RAD</a> = ((2.0f * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abb8140d5d40ac95d14d060b3df484650">FM_PI</a>) / 360.0f);</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a7bf8c2dde51efeefb5212bf855aa29f9">   39</a></span>&#160;<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#a7bf8c2dde51efeefb5212bf855aa29f9">FM_RAD_TO_DEG</a> = (360.0f / (2.0f * <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abb8140d5d40ac95d14d060b3df484650">FM_PI</a>));</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">//***************** Float versions</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//***</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">//*** vectors are assumed to be 3 floats or 3 doubles representing X, Y, Z</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">//*** quaternions are assumed to be 4 floats or 4 doubles representing X,Y,Z,W</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">//*** matrices are assumed to be 16 floats or 16 doubles representing a standard D3D or OpenGL style 4x4 matrix</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<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></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">//*** Plane equations are assumed to be 4 floats or 4 doubles representing Ax,By,Cz,D</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab0e6f3d995aaa137c6811be7da8b1f57">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#a1c8d1bbcf531b04e6ff52f5357987794">normal</a>[3]);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78">FM_Axis</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab0e6f3d995aaa137c6811be7da8b1f57">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#a1c8d1bbcf531b04e6ff52f5357987794">normal</a>[3]);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a518c9e9f1a383ae51f1400e00168b04d">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]);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a518c9e9f1a383ae51f1400e00168b04d">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]);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acbed8443ddbc88cc4408363938cb9b90">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);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acbed8443ddbc88cc4408363938cb9b90">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);</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a459b88458014177d8945f6e8b269730c">fm_inverseTransform</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> inverse_matrix[16]);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a459b88458014177d8945f6e8b269730c">fm_inverseTransform</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> inverse_matrix[16]);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a475707467603b8b04da3692140ab438b">fm_identity</a>(<span class="keywordtype">float</span> matrix[16]); <span class="comment">// set 4x4 matrix to identity.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a475707467603b8b04da3692140ab438b">fm_identity</a>(<span class="keywordtype">double</span> matrix[16]); <span class="comment">// set 4x4 matrix to identity.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafb68480d229fd7dabd59dea38dff21c">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></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafb68480d229fd7dabd59dea38dff21c">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></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a5e7bcf0c2005abcdfb3b983befdba6e0">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></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a5e7bcf0c2005abcdfb3b983befdba6e0">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></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1507bf2ee9f33cc24aae9f3be4169e39">fm_getDeterminant</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16]);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1507bf2ee9f33cc24aae9f3be4169e39">fm_getDeterminant</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16]);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a955922bac08140d8027099632304d507">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]);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a955922bac08140d8027099632304d507">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]);</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9709ed7da00dd74d859b47c48d824eeb">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&#39;t translate.</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9709ed7da00dd74d859b47c48d824eeb">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&#39;t translate.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a21696a79d14003a743b2b1ff40894b70">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></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a21696a79d14003a743b2b1ff40894b70">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></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1defa5e1cac1adb9265c5f0a3d4c9645">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]);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1defa5e1cac1adb9265c5f0a3d4c9645">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]);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ac9c372bec084a96bb461107edb5d01c4">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]);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ac9c372bec084a96bb461107edb5d01c4">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]);</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abf97767bcddaed89a04998a225044262">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]);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abf97767bcddaed89a04998a225044262">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]);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert euler angles to quaternion.</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafae02ac2136cb97fb7683194968f934">fm_eulerToQuat</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert euler angles to quaternion.</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afd1c4745cc5047b78dc32a107ce1b227">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);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afd1c4745cc5047b78dc32a107ce1b227">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);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafae02ac2136cb97fb7683194968f934">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></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aafae02ac2136cb97fb7683194968f934">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></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa8e5d1da135d36933bfae6ec7a4e16dc">fm_scale</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// apply scale to the matrix.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa8e5d1da135d36933bfae6ec7a4e16dc">fm_scale</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// apply scale to the matrix.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4aeae548e32c6b3fd7b042880853668a">fm_eulerToQuatDX</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">float</span> quat[4]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4aeae548e32c6b3fd7b042880853668a">fm_eulerToQuatDX</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">double</span> quat[4]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ac80feefbeefd17402f51317b7d545ebb">fm_eulerToMatrixDX</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">float</span> matrix[16]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method.</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ac80feefbeefd17402f51317b7d545ebb">fm_eulerToMatrixDX</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>,<span class="keywordtype">double</span> matrix[16]); <span class="comment">// convert euler angles to quaternion using the fucked up DirectX method.</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab363d3868e88b3760f8295f213652242">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></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab363d3868e88b3760f8295f213652242">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></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab1dbaf174472d60724ab64af30e05223">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></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab1dbaf174472d60724ab64af30e05223">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></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa83944760275782e7436df8b53a0c36c">fm_getTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> matrix[16],<span class="keywordtype">float</span> t[3]);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa83944760275782e7436df8b53a0c36c">fm_getTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> matrix[16],<span class="keywordtype">double</span> t[3]);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9e7b6b20e5d995bbe4be9cda48f5f590">fm_setTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *translation,<span class="keywordtype">float</span> matrix[16]);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9e7b6b20e5d995bbe4be9cda48f5f590">fm_setTranslation</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *translation,<span class="keywordtype">double</span> matrix[16]);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9053918ec3894e3fb079e932fd54b647">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);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9053918ec3894e3fb079e932fd54b647">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);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a672d75bf66999a3d1a6de125e85c5265">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></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a672d75bf66999a3d1a6de125e85c5265">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></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1a34d0ebad3b1971c131e6549b06cdd0">fm_sphereVolume</a>(<span class="keywordtype">float</span> radius); <span class="comment">// return&#39;s the volume of a sphere of this radius (4/3 PI * R cubed )</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1a34d0ebad3b1971c131e6549b06cdd0">fm_sphereVolume</a>(<span class="keywordtype">double</span> radius); <span class="comment">// return&#39;s the volume of a sphere of this radius (4/3 PI * R cubed )</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a243023211b7a4e5ab60bdb10c4a9db0f">fm_cylinderVolume</a>(<span class="keywordtype">float</span> radius,<span class="keywordtype">float</span> h);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a243023211b7a4e5ab60bdb10c4a9db0f">fm_cylinderVolume</a>(<span class="keywordtype">double</span> radius,<span class="keywordtype">double</span> h);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a890be2a1715cda687e5d3e63d5f59e56">fm_capsuleVolume</a>(<span class="keywordtype">float</span> radius,<span class="keywordtype">float</span> h);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a890be2a1715cda687e5d3e63d5f59e56">fm_capsuleVolume</a>(<span class="keywordtype">double</span> radius,<span class="keywordtype">double</span> h);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abcb99669f70be380f66d9a1fde599fab">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]);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abcb99669f70be380f66d9a1fde599fab">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]);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1721515731405ff0444d53ce4a0ab227">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]);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a1721515731405ff0444d53ce4a0ab227">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]);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ef966a4f85a8067ed36c020e036b401">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]);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ef966a4f85a8067ed36c020e036b401">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]);</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae16f6af28acc944aa4307b55208ef0ce">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></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae16f6af28acc944aa4307b55208ef0ce">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></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#af91f007d37b043bd7e70b4d2de1fbd25">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></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#af91f007d37b043bd7e70b4d2de1fbd25">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></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a194f9efd2bb057b2209327630dec652e">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]);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a194f9efd2bb057b2209327630dec652e">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]);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8646830ccfdaad8014442e1e502e85bc">fm_cross</a>(<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#aa0d71a601765b3ef7dc8c950c6ff762e">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]);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8646830ccfdaad8014442e1e502e85bc">fm_cross</a>(<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#aa0d71a601765b3ef7dc8c950c6ff762e">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]);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abedf4d35d4d7f1cd6f5ef3ce30b99169">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></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abedf4d35d4d7f1cd6f5ef3ce30b99169">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></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa44a0e6887abf9d22e27e79f38cf0b7c">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></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa44a0e6887abf9d22e27e79f38cf0b7c">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></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afe19fb5409155a1b100555ae8b27e042">fm_normalize</a>(<span class="keywordtype">float</span> n[3]); <span class="comment">// normalize this vector and return the distance</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keywordtype">double</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afe19fb5409155a1b100555ae8b27e042">fm_normalize</a>(<span class="keywordtype">double</span> n[3]); <span class="comment">// normalize this vector and return the distance</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aff088a0e1dfb0fc72cd8e890b5ae39a2">fm_normalizeQuat</a>(<span class="keywordtype">float</span> n[4]); <span class="comment">// normalize this quat</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="keywordtype">double</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aff088a0e1dfb0fc72cd8e890b5ae39a2">fm_normalizeQuat</a>(<span class="keywordtype">double</span> n[4]); <span class="comment">// normalize this quat</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a38037bcca3e6efebe64714e1fa93a253">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]);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a38037bcca3e6efebe64714e1fa93a253">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]);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acb3c8d61dfb35df6685ace736d7c61af">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]);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acb3c8d61dfb35df6685ace736d7c61af">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]);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a62f6d3e26092170ccc5c90ffdbeffd8e">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]);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a62f6d3e26092170ccc5c90ffdbeffd8e">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]);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9621fb749969501979e6db6cf2decb58">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);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9621fb749969501979e6db6cf2decb58">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);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ca4cef6af901b8de71c71535369229e">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]);</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ca4cef6af901b8de71c71535369229e">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]);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a45c52a87f81bba0ed935d83ff9582de1">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]);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a45c52a87f81bba0ed935d83ff9582de1">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]);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a45c52a87f81bba0ed935d83ff9582de1">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></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a45c52a87f81bba0ed935d83ff9582de1">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></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a3fb4f3f21c789ffc5369154820c30472">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]);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a3fb4f3f21c789ffc5369154820c30472">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]);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a955f588e9f1c54ae05b315c5c1b57c29">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></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a955f588e9f1c54ae05b315c5c1b57c29">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></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#af49bf6eedc01255120d2c91f04ccffcc">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);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#af49bf6eedc01255120d2c91f04ccffcc">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);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="keywordtype">bool</span>     <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae54daa385d845bcb2e27dfd0340bb920">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);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="keywordtype">bool</span>     <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae54daa385d845bcb2e27dfd0340bb920">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);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="keywordtype">bool</span>     <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afb8afe3f925d308fc0d8d3e6e99e521f">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);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="keywordtype">bool</span>     <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#afb8afe3f925d308fc0d8d3e6e99e521f">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);</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a50cc16fc96ce2d7866715bfa65ce977c">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]);</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a50cc16fc96ce2d7866715bfa65ce977c">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]);</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keywordtype">float</span> bmin[3],<span class="keywordtype">float</span> bmax[3]);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a50cc16fc96ce2d7866715bfa65ce977c">fm_initMinMax</a>(<span class="keywordtype">double</span> bmin[3],<span class="keywordtype">double</span> bmax[3]);</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a696d64ea8806b47c3f9a7a015ba0e304">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></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a696d64ea8806b47c3f9a7a015ba0e304">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></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">// Computes the diagonal length of the bounding box and then inflates the bounding box on all sides</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment">// by the ratio provided.</span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acbd7a02b1c968f46338a96cf6d2bf9a7">fm_inflateMinMax</a>(<span class="keywordtype">float</span> bmin[3], <span class="keywordtype">float</span> bmax[3], <span class="keywordtype">float</span> ratio);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acbd7a02b1c968f46338a96cf6d2bf9a7">fm_inflateMinMax</a>(<span class="keywordtype">double</span> bmin[3], <span class="keywordtype">double</span> bmax[3], <span class="keywordtype">double</span> ratio);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8946aab872f6d90d17b51685fd3b7c1b">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#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>); <span class="comment">// solve for X given this plane equation and the other two components.</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8946aab872f6d90d17b51685fd3b7c1b">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#adbffb9cb652cea7e0343fa39dcae22c8">y</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>); <span class="comment">// solve for X given this plane equation and the other two components.</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2fd9365eecfffd704a661d8e4975ad4d">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#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>); <span class="comment">// solve for Y given this plane equation and the other two components.</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2fd9365eecfffd704a661d8e4975ad4d">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#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a>); <span class="comment">// solve for Y given this plane equation and the other two components.</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="keywordtype">float</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a0c57a6810cb46d53c66807a83f24b7f8">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#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">float</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>); <span class="comment">// solve for Z given this plane equation and the other two components.</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a0c57a6810cb46d53c66807a83f24b7f8">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#a9ac999fc46ed7720280dca03ad1e4e62">x</a>,<span class="keywordtype">double</span> <a class="code" href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a>); <span class="comment">// solve for Z given this plane equation and the other two components.</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9a5fc6e07fe7bd2a6794df97c94ea32e">fm_computeBestFitPlane</a>(uint32_t vcount,     <span class="comment">// number of input data points</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">float</span> *points,     <span class="comment">// starting address of points array.</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;                     uint32_t vstride,    <span class="comment">// stride between input points.</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">float</span> *weights,    <span class="comment">// *optional point weighting values.</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                     uint32_t wstride,    <span class="comment">// weight stride for each vertex.</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                     <span class="keywordtype">float</span> plane[4]);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9a5fc6e07fe7bd2a6794df97c94ea32e">fm_computeBestFitPlane</a>(uint32_t vcount,     <span class="comment">// number of input data points</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">double</span> *points,     <span class="comment">// starting address of points array.</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;                     uint32_t vstride,    <span class="comment">// stride between input points.</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">double</span> *weights,    <span class="comment">// *optional point weighting values.</span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                     uint32_t wstride,    <span class="comment">// weight stride for each vertex.</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                     <span class="keywordtype">double</span> plane[4]);</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a18df4ec9f73845649b49c9a984f6c52e">fm_computeCentroid</a>(uint32_t vcount,     <span class="comment">// number of input data points</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                         <span class="keyword">const</span> <span class="keywordtype">float</span> *points,     <span class="comment">// starting address of points array.</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                         uint32_t vstride,    <span class="comment">// stride between input points.</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                         <span class="keywordtype">float</span> *center);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a18df4ec9f73845649b49c9a984f6c52e">fm_computeCentroid</a>(uint32_t vcount,     <span class="comment">// number of input data points</span></div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                         <span class="keyword">const</span> <span class="keywordtype">double</span> *points,     <span class="comment">// starting address of points array.</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                         uint32_t vstride,    <span class="comment">// stride between input points.</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;                         <span class="keywordtype">double</span> *center);</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ad449806042368d819f7e5e3e05b390a0">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></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ad449806042368d819f7e5e3e05b390a0">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></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a121beb08ccdf7b92b405f3a7fee2e1d1">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]);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="keywordtype">double</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a121beb08ccdf7b92b405f3a7fee2e1d1">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]);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aadd3751eaa131cd3fd3007c456a1be1b">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]);</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aadd3751eaa131cd3fd3007c456a1be1b">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]);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a80e7d3a77fae86473625be5a63425d90">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]);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a72afa3a5fc5c9cf16835bd0bee3d890d">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]);</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a6b725c6d345f76e759f091e528250c6c">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]);</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a6b725c6d345f76e759f091e528250c6c">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]);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa70a27c3d146e66e393606b4c48fc37a">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);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa70a27c3d146e66e393606b4c48fc37a">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);</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa1ca791e15419dff5d3ee0948b090219">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#ae6b71ab121d96689e1ce5f8903f56258">distance</a>,<span class="keywordtype">float</span> intersect[3]);</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa1ca791e15419dff5d3ee0948b090219">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#ae6b71ab121d96689e1ce5f8903f56258">distance</a>,<span class="keywordtype">double</span> intersect[3]);</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a010b32a67e0a6823c0f48c6ff9d37fb2">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);</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a010b32a67e0a6823c0f48c6ff9d37fb2">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);</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abc2bf48dcc098618366fa76bf0c2a75a">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]);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#abc2bf48dcc098618366fa76bf0c2a75a">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]);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="comment">// computes the rotation quaternion to go from unit-vector v0 to unit-vector v1</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a44b109dcdaf358908f56f4d388642f58">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]);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a44b109dcdaf358908f56f4d388642f58">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]);</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a7a4c8c9a53e6eabd8c92860358eac481">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#a122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a> &amp;type,<span class="keywordtype">float</span> epsilon);</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a7a4c8c9a53e6eabd8c92860358eac481">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#a122981f0e26b79857ccec1d29e24bfe9">LineSegmentType</a> &amp;type,<span class="keywordtype">double</span> epsilon);</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ffeeea97b9e77a30c72ce0e9b4e3896">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></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ffeeea97b9e77a30c72ce0e9b4e3896">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);</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ffeeea97b9e77a30c72ce0e9b4e3896">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></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2ffeeea97b9e77a30c72ce0e9b4e3896">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></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">  298</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;{</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441a982692d82fda113c3844e3d5cd7737e7">  300</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441a982692d82fda113c3844e3d5cd7737e7">IR_DONT_INTERSECT</a>,</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ac65d828299272a2173a708a08a6a9ecf">  301</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ac65d828299272a2173a708a08a6a9ecf">IR_DO_INTERSECT</a>,</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae3934decbf14b762bf1fb688a8bf888e">  302</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae3934decbf14b762bf1fb688a8bf888e">IR_COINCIDENT</a>,</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae4e33ac5bb9efd259e1804e12fb4df7f">  303</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae4e33ac5bb9efd259e1804e12fb4df7f">IR_PARALLEL</a>,</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;};</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a7180da587c645ab12754120132d54263">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]);</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a7180da587c645ab12754120132d54263">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]);</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2a82702380cd9bd0469ee8663b3facdd">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);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">IntersectResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a2a82702380cd9bd0469ee8663b3facdd">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);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="comment">// Plane-Triangle splitting</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">  314</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607caf1e58b50ed4444c0a2a0a2726395c430">  316</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607caf1e58b50ed4444c0a2a0a2726395c430">PTR_ON_PLANE</a>,</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607cab7d607fd4a4b559b23e0432b32d3ad31">  317</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607cab7d607fd4a4b559b23e0432b32d3ad31">PTR_FRONT</a>,</div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca04dee1498613f2b82ff56fb995b9df9e">  318</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca04dee1498613f2b82ff56fb995b9df9e">PTR_BACK</a>,</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca82a429ed76868ef18cf4919b44b48cea">  319</a></span>&#160;  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca82a429ed76868ef18cf4919b44b48cea">PTR_SPLIT</a>,</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;};</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a698eb52eed0586a33b43a9caf1faea4a">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></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                                    <span class="keyword">const</span> <span class="keywordtype">float</span> *triangle, <span class="comment">// the source triangle.</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                                    uint32_t tstride,  <span class="comment">// stride in bytes of the input and output *vertices*</span></div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                                    <span class="keywordtype">float</span>        epsilon,  <span class="comment">// the co-planer epsilon value.</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                                    <span class="keywordtype">float</span>       *front,    <span class="comment">// the triangle in front of the</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                                    uint32_t &amp;fcount,  <span class="comment">// number of vertices in the &#39;front&#39; triangle</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                                    <span class="keywordtype">float</span>       *back,     <span class="comment">// the triangle in back of the plane</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                                    uint32_t &amp;bcount); <span class="comment">// the number of vertices in the &#39;back&#39; triangle.</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a698eb52eed0586a33b43a9caf1faea4a">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></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                                    <span class="keyword">const</span> <span class="keywordtype">double</span> *triangle, <span class="comment">// the source triangle.</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                                    uint32_t tstride,  <span class="comment">// stride in bytes of the input and output *vertices*</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                                    <span class="keywordtype">double</span>        epsilon,  <span class="comment">// the co-planer epsilon value.</span></div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                                    <span class="keywordtype">double</span>       *front,    <span class="comment">// the triangle in front of the</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                                    uint32_t &amp;fcount,  <span class="comment">// number of vertices in the &#39;front&#39; triangle</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                                    <span class="keywordtype">double</span>       *back,     <span class="comment">// the triangle in back of the plane</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;                                    uint32_t &amp;bcount); <span class="comment">// the number of vertices in the &#39;back&#39; triangle.</span></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a5818d6dc249cc90d8ff4b8d1533b64e3">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]);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a5818d6dc249cc90d8ff4b8d1533b64e3">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]);</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acfb3009ad74719bf7240567fedd43ead">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);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">PlaneTriResult</a> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acfb3009ad74719bf7240567fedd43ead">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);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60e918c2ee5358ed7fd566623f18f566">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>);</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60e918c2ee5358ed7fd566623f18f566">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>);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60e918c2ee5358ed7fd566623f18f566">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>);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60e918c2ee5358ed7fd566623f18f566">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>);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4719b5216a887947c4c98e3b06844d9b">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]);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a4719b5216a887947c4c98e3b06844d9b">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]);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<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></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acb48dcc76450c14ccb5cf133c2d02b54">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>);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#acb48dcc76450c14ccb5cf133c2d02b54">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>);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9624b57c4b00648ed09e15b1ec266c32">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></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa885c49a2b1b1cb2be57b88c567d6cc2">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></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a9624b57c4b00648ed09e15b1ec266c32">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></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aa885c49a2b1b1cb2be57b88c567d6cc2">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></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a7d9d7f616ab8179bef4ded2167ce5050">  370</a></span>&#160;<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#a7d9d7f616ab8179bef4ded2167ce5050">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]; };</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="namespace_f_l_o_a_t___m_a_t_h.html#a13583f8cd7fc965e170e52c7e8590c57">  371</a></span>&#160;<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#a13583f8cd7fc965e170e52c7e8590c57">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]; };</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a099943af57cdcf6f5d70249dac806205">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></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keywordtype">void</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a099943af57cdcf6f5d70249dac806205">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></div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a01f6b76a126b8ddb6bc75fcb24d56b63">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);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a01f6b76a126b8ddb6bc75fcb24d56b63">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);</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="_float_math_8h.html#a9da2fa07f097e59a3697d603b2c2f541">  382</a></span>&#160;<span class="preprocessor">#define FM_DEFAULT_GRANULARITY 0.001f  // 1 millimeter is the default granularity</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">  384</a></span>&#160;<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></div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;{</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <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#af0a76c201e908058e0565fb589d5c8ec">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></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  <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#af0a76c201e908058e0565fb589d5c8ec">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></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <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#abfe5370a180b9df682e22968618c493d">getVerticesFloat</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <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#a228633b9540532db6c15b7a27db85531">getVerticesDouble</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <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#a116ff6211b3875be4f6959e9bfc3f52a">getVertexFloat</a>(uint32_t index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <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#ad6917c7d9b0af0fbb6de0bbfc822b2a4">getVertexDouble</a>(uint32_t index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  <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#a4e440ed85cbfd3f02790a346dc448d91">getVcount</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <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#a7d546cd3a301fd47bfde8cdd8f9ff950">isDouble</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <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#ac0d22736210b88c849562c30481437d0">saveAsObj</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,uint32_t tcount,uint32_t *indices) = 0;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;};</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<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#a5ca83507e14e16aae1d3d49f43fcbf48">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></div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<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#a5ca83507e14e16aae1d3d49f43fcbf48">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></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="keywordtype">void</span>             <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a7e401fb5f8d705ba7726af2c0beea70d">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);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">  403</a></span>&#160;<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></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;{</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">double</span> *       triangulate3d(uint32_t pcount,</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">double</span> *points,</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                                             uint32_t vstride,</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                                             uint32_t &amp;tcount,</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                                             <span class="keywordtype">bool</span> consolidate,</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                                             <span class="keywordtype">double</span> epsilon) = 0;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">float</span>  *       triangulate3d(uint32_t pcount,</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">float</span>  *points,</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                                             uint32_t vstride,</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                                             uint32_t &amp;tcount,</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                                             <span class="keywordtype">bool</span> consolidate,</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                                             <span class="keywordtype">float</span> epsilon) = 0;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;};</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<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#af2757653a894b33ffa13feef4e931a69">fm_createTriangulate</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="keywordtype">void</span>             <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a6235a78977f152249b51e3b7095e8bb1">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);</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<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#a51e027555f4bfefcd4b3f516b0d7c25a">fm_getPoint</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride,uint32_t index);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<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#a51e027555f4bfefcd4b3f516b0d7c25a">fm_getPoint</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride,uint32_t index);</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="keywordtype">bool</span>   <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a437d2da1a476dd4f020e57dd8ad3803c">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);</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keywordtype">bool</span>   <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a437d2da1a476dd4f020e57dd8ad3803c">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);</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8022779a39f2d98d0d1e59dc9e0ff382">fm_areaPolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">float</span> *points,uint32_t pstride);</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8022779a39f2d98d0d1e59dc9e0ff382">fm_areaPolygon2d</a>(uint32_t pcount,<span class="keyword">const</span> <span class="keywordtype">double</span> *points,uint32_t pstride);</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a6143f60040a0bb5d1dcf7ad2dc19b192">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);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;<span class="keywordtype">bool</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a6143f60040a0bb5d1dcf7ad2dc19b192">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);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8d49d5613f198a6c4be6f32dbb1ad7d5">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></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;uint32_t <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a8d49d5613f198a6c4be6f32dbb1ad7d5">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></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae6c3d39e600a5a6588a12c0df1bc180b">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);</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ae6c3d39e600a5a6588a12c0df1bc180b">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);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aab1bd86fa8cba57940d8de52aa5a4c07">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);</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aab1bd86fa8cba57940d8de52aa5a4c07">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);</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="keywordtype">float</span>  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a3c2c25509bb923e3a67f2f4229a0c524">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);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a3c2c25509bb923e3a67f2f4229a0c524">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);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60de5964eed515c5785fcad85a0a7efa">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 &#39;diff&#39;</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a60de5964eed515c5785fcad85a0a7efa">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 &#39;diff&#39;</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ad94a34778edfa8266a2cf5c3a9aecd7d">fm_multiply</a>(<span class="keywordtype">float</span> *A,<span class="keywordtype">float</span> scaler);</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ad94a34778edfa8266a2cf5c3a9aecd7d">fm_multiply</a>(<span class="keywordtype">double</span> *A,<span class="keywordtype">double</span> scaler);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a950524c52471990ccd5ab8ffd2fdace4">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);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a950524c52471990ccd5ab8ffd2fdace4">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);</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aec4465fd7d2f2b8c93db8949a7c5a68e">fm_copy3</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *source,<span class="keywordtype">float</span> *dest);</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#aec4465fd7d2f2b8c93db8949a7c5a68e">fm_copy3</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *source,<span class="keywordtype">double</span> *dest);</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<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></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<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></div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;<span class="comment">// is the input buffer.  The routine returns the new vertex count after re-indexing.</span></div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;uint32_t  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a66660b41c914e7f74dfeb7a63ae577bb">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);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;uint32_t  <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a66660b41c914e7f74dfeb7a63ae577bb">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);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;<span class="keywordtype">bool</span>    <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a06301f8df72d582ed0504a42d7a63d09">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></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="keywordtype">bool</span>    <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a06301f8df72d582ed0504a42d7a63d09">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></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="keywordtype">bool</span>    <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab7f413a7722f01daa020b05ea6cf000c">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></div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="keywordtype">bool</span>    <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#ab7f413a7722f01daa020b05ea6cf000c">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>);</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;<span class="keywordtype">void</span>    <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a44b5172cfcadc77e68e1886cc5a33d4a">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]);</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;<span class="comment">// a utility class that will tessellate a mesh.</span></div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">  476</a></span>&#160;<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></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;{</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> uint32_t * tesselate(<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;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;};</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;<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#a24043d9e6a8342127bda2d663e91c2a9">fm_createTesselate</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="keywordtype">void</span>           <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a538e188095ec76178ab7cfe067b8fad4">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);</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a09bbac02b2d9b71ee13de5b8affe1830">fm_computeMeanNormals</a>(uint32_t vcount,       <span class="comment">// the number of vertices</span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;                           <span class="keyword">const</span> <span class="keywordtype">float</span> *vertices,     <span class="comment">// the base address of the vertex position data.</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;                           uint32_t vstride,      <span class="comment">// the stride between position data.</span></div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;                           <span class="keywordtype">float</span> *normals,            <span class="comment">// the base address  of the destination for mean vector normals</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                           uint32_t nstride,      <span class="comment">// the stride between normals</span></div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;                           uint32_t tcount,       <span class="comment">// the number of triangles</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                           <span class="keyword">const</span> uint32_t *indices);     <span class="comment">// the triangle indices</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a09bbac02b2d9b71ee13de5b8affe1830">fm_computeMeanNormals</a>(uint32_t vcount,       <span class="comment">// the number of vertices</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;                           <span class="keyword">const</span> <span class="keywordtype">double</span> *vertices,     <span class="comment">// the base address of the vertex position data.</span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;                           uint32_t vstride,      <span class="comment">// the stride between position data.</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;                           <span class="keywordtype">double</span> *normals,            <span class="comment">// the base address  of the destination for mean vector normals</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                           uint32_t nstride,      <span class="comment">// the stride between normals</span></div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;                           uint32_t tcount,       <span class="comment">// the number of triangles</span></div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;                           <span class="keyword">const</span> uint32_t *indices);     <span class="comment">// the triangle indices</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a141c1e360636067eae8247cf7bcb7e22">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);</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespace_f_l_o_a_t___m_a_t_h.html#a141c1e360636067eae8247cf7bcb7e22">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);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;}; <span class="comment">// end of namespace</span></div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a62f6d3e26092170ccc5c90ffdbeffd8e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a62f6d3e26092170ccc5c90ffdbeffd8e">FLOAT_MATH::fm_computeArea</a></div><div class="ttdeci">float fm_computeArea(const float p1[3], const float p2[3], const float p3[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a1507bf2ee9f33cc24aae9f3be4169e39"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a1507bf2ee9f33cc24aae9f3be4169e39">FLOAT_MATH::fm_getDeterminant</a></div><div class="ttdeci">float fm_getDeterminant(const float matrix[16])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate_html"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___tesselate.html">FLOAT_MATH::fm_Tesselate</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:476</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4ec9f934edc5eccb0bc0cdfce58f4441"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441">FLOAT_MATH::IntersectResult</a></div><div class="ttdeci">IntersectResult</div><div class="ttdef"><b>Definition:</b> FloatMath.h:298</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4ec9f934edc5eccb0bc0cdfce58f4441ae3934decbf14b762bf1fb688a8bf888e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae3934decbf14b762bf1fb688a8bf888e">FLOAT_MATH::IR_COINCIDENT</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:302</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8646830ccfdaad8014442e1e502e85bc"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8646830ccfdaad8014442e1e502e85bc">FLOAT_MATH::fm_cross</a></div><div class="ttdeci">void fm_cross(float cross[3], const float a[3], const float b[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ad449806042368d819f7e5e3e05b390a0"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ad449806042368d819f7e5e3e05b390a0">FLOAT_MATH::fm_computeBestFitAABB</a></div><div class="ttdeci">float fm_computeBestFitAABB(uint32_t vcount, const float *points, uint32_t pstride, float bmin[3], float bmax[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a0c57a6810cb46d53c66807a83f24b7f8"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a0c57a6810cb46d53c66807a83f24b7f8">FLOAT_MATH::fm_solveZ</a></div><div class="ttdeci">float fm_solveZ(const float plane[4], float x, float y)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae16f6af28acc944aa4307b55208ef0ce"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae16f6af28acc944aa4307b55208ef0ce">FLOAT_MATH::fm_computePlane</a></div><div class="ttdeci">float fm_computePlane(const float p1[3], const float p2[3], const float p3[3], float *n)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_acb48dcc76450c14ccb5cf133c2d02b54"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#acb48dcc76450c14ccb5cf133c2d02b54">FLOAT_MATH::fm_computeBestFitCapsule</a></div><div class="ttdeci">void fm_computeBestFitCapsule(uint32_t vcount, const float *points, uint32_t pstride, float &amp;radius, float &amp;height, float matrix[16], bool bruteForce=true)</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_ad6917c7d9b0af0fbb6de0bbfc822b2a4"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#ad6917c7d9b0af0fbb6de0bbfc822b2a4">FLOAT_MATH::fm_VertexIndex::getVertexDouble</a></div><div class="ttdeci">virtual const double * getVertexDouble(uint32_t index) const =0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ab363d3868e88b3760f8295f213652242"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ab363d3868e88b3760f8295f213652242">FLOAT_MATH::fm_quatToMatrix</a></div><div class="ttdeci">void fm_quatToMatrix(const float quat[4], float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a696d64ea8806b47c3f9a7a015ba0e304"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a696d64ea8806b47c3f9a7a015ba0e304">FLOAT_MATH::fm_minmax</a></div><div class="ttdeci">void fm_minmax(const float p[3], float bmin[3], float bmax[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a50cc16fc96ce2d7866715bfa65ce977c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a50cc16fc96ce2d7866715bfa65ce977c">FLOAT_MATH::fm_initMinMax</a></div><div class="ttdeci">void fm_initMinMax(const float p[3], float bmin[3], float bmax[3])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate_html"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___triangulate.html">FLOAT_MATH::fm_Triangulate</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:403</div></div>
<div class="ttc" id="namespace_nv_1_1_blast_1_1_vec_math_html_a1c8d1bbcf531b04e6ff52f5357987794"><div class="ttname"><a href="namespace_nv_1_1_blast_1_1_vec_math.html#a1c8d1bbcf531b04e6ff52f5357987794">Nv::Blast::VecMath::normal</a></div><div class="ttdeci">NV_INLINE float normal(const float a[3], float r[3])</div><div class="ttdef"><b>Definition:</b> NvBlastMath.h:93</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_abcb99669f70be380f66d9a1fde599fab"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#abcb99669f70be380f66d9a1fde599fab">FLOAT_MATH::fm_distance</a></div><div class="ttdeci">float fm_distance(const float p1[3], const float p2[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_abc2bf48dcc098618366fa76bf0c2a75a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#abc2bf48dcc098618366fa76bf0c2a75a">FLOAT_MATH::fm_intersectAABB</a></div><div class="ttdeci">bool fm_intersectAABB(const float bmin1[3], const float bmax1[3], const float bmin2[3], const float bmax2[3])</div></div>
<div class="ttc" id="bt_vector3_8h_html_a9ac999fc46ed7720280dca03ad1e4e62"><div class="ttname"><a href="bt_vector3_8h.html#a9ac999fc46ed7720280dca03ad1e4e62">x</a></div><div class="ttdeci">SIMD_FORCE_INLINE const btScalar &amp; x() const</div><div class="ttdoc">Return the x value. </div><div class="ttdef"><b>Definition:</b> btVector3.h:275</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a3c2c25509bb923e3a67f2f4229a0c524"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a3c2c25509bb923e3a67f2f4229a0c524">FLOAT_MATH::fm_areaTriangle</a></div><div class="ttdeci">float fm_areaTriangle(const float *p1, const float *p2, const float *p3)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a66660b41c914e7f74dfeb7a63ae577bb"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a66660b41c914e7f74dfeb7a63ae577bb">FLOAT_MATH::fm_copyUniqueVertices</a></div><div class="ttdeci">uint32_t fm_copyUniqueVertices(uint32_t vcount, const float *input_vertices, float *output_vertices, uint32_t tcount, const uint32_t *input_indices, uint32_t *output_indices)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a698eb52eed0586a33b43a9caf1faea4a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a698eb52eed0586a33b43a9caf1faea4a">FLOAT_MATH::fm_planeTriIntersection</a></div><div class="ttdeci">PlaneTriResult fm_planeTriIntersection(const float plane[4], const float *triangle, uint32_t tstride, float epsilon, float *front, uint32_t &amp;fcount, float *back, uint32_t &amp;bcount)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afad03a9eb1a839f2cb34508a7233906175"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afad03a9eb1a839f2cb34508a7233906175">FLOAT_MATH::FMCS_YMIN</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:16</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a31893d5e8443706d3d6b889d01a9607c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607c">FLOAT_MATH::PlaneTriResult</a></div><div class="ttdeci">PlaneTriResult</div><div class="ttdef"><b>Definition:</b> FloatMath.h:314</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8f56ed9e1763d1e33bb24d5c11356c78a6d608e9c6b6761a8cfbcdc7470d4e894"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78a6d608e9c6b6761a8cfbcdc7470d4e894">FLOAT_MATH::FM_YAXIS</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:25</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ac80feefbeefd17402f51317b7d545ebb"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ac80feefbeefd17402f51317b7d545ebb">FLOAT_MATH::fm_eulerToMatrixDX</a></div><div class="ttdeci">void fm_eulerToMatrixDX(float x, float y, float z, float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a3fb4f3f21c789ffc5369154820c30472"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a3fb4f3f21c789ffc5369154820c30472">FLOAT_MATH::fm_clipTestPoint</a></div><div class="ttdeci">uint32_t fm_clipTestPoint(const float bmin[3], const float bmax[3], const float pos[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa8e5d1da135d36933bfae6ec7a4e16dc"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa8e5d1da135d36933bfae6ec7a4e16dc">FLOAT_MATH::fm_scale</a></div><div class="ttdeci">void fm_scale(float x, float y, float z, float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a7180da587c645ab12754120132d54263"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a7180da587c645ab12754120132d54263">FLOAT_MATH::fm_intersectLineSegments2d</a></div><div class="ttdeci">IntersectResult fm_intersectLineSegments2d(const float a1[3], const float a2[3], const float b1[3], const float b2[3], float intersectionPoint[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a31893d5e8443706d3d6b889d01a9607caf1e58b50ed4444c0a2a0a2726395c430"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607caf1e58b50ed4444c0a2a0a2726395c430">FLOAT_MATH::PTR_ON_PLANE</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:316</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a72afa3a5fc5c9cf16835bd0bee3d890d"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a72afa3a5fc5c9cf16835bd0bee3d890d">FLOAT_MATH::fm_intersectLineSegmentAABB</a></div><div class="ttdeci">bool fm_intersectLineSegmentAABB(const float bmin[3], const float bmax[3], const float p1[3], const float p2[3], float intersect[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9621fb749969501979e6db6cf2decb58"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9621fb749969501979e6db6cf2decb58">FLOAT_MATH::fm_lerp</a></div><div class="ttdeci">void fm_lerp(const float p1[3], const float p2[3], float dest[3], float lerpValue)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a122981f0e26b79857ccec1d29e24bfe9"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9">FLOAT_MATH::LineSegmentType</a></div><div class="ttdeci">LineSegmentType</div><div class="ttdef"><b>Definition:</b> FloatMath.h:29</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a60e918c2ee5358ed7fd566623f18f566"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a60e918c2ee5358ed7fd566623f18f566">FLOAT_MATH::fm_computeBestFitOBB</a></div><div class="ttdeci">void fm_computeBestFitOBB(uint32_t vcount, const float *points, uint32_t pstride, float *sides, float matrix[16], bool bruteForce=true)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a6b725c6d345f76e759f091e528250c6c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a6b725c6d345f76e759f091e528250c6c">FLOAT_MATH::fm_lineIntersectsTriangle</a></div><div class="ttdeci">bool fm_lineIntersectsTriangle(const float rayStart[3], const float rayEnd[3], const float p1[3], const float p2[3], const float p3[3], float sect[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a099943af57cdcf6f5d70249dac806205"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a099943af57cdcf6f5d70249dac806205">FLOAT_MATH::fm_eulerMatrix</a></div><div class="ttdeci">void fm_eulerMatrix(float ax, float ay, float az, float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ad94a34778edfa8266a2cf5c3a9aecd7d"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ad94a34778edfa8266a2cf5c3a9aecd7d">FLOAT_MATH::fm_multiply</a></div><div class="ttdeci">void fm_multiply(float *A, float scaler)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9e7b6b20e5d995bbe4be9cda48f5f590"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9e7b6b20e5d995bbe4be9cda48f5f590">FLOAT_MATH::fm_setTranslation</a></div><div class="ttdeci">void fm_setTranslation(const float *translation, float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa44a0e6887abf9d22e27e79f38cf0b7c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa44a0e6887abf9d22e27e79f38cf0b7c">FLOAT_MATH::fm_computeWindingOrder</a></div><div class="ttdeci">bool fm_computeWindingOrder(const float p1[3], const float p2[3], const float p3[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aafb68480d229fd7dabd59dea38dff21c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aafb68480d229fd7dabd59dea38dff21c">FLOAT_MATH::fm_inverseRT</a></div><div class="ttdeci">void fm_inverseRT(const float matrix[16], const float pos[3], float t[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9a5fc6e07fe7bd2a6794df97c94ea32e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9a5fc6e07fe7bd2a6794df97c94ea32e">FLOAT_MATH::fm_computeBestFitPlane</a></div><div class="ttdeci">bool fm_computeBestFitPlane(uint32_t vcount, const float *points, uint32_t vstride, const float *weights, uint32_t wstride, float plane[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a122981f0e26b79857ccec1d29e24bfe9aeddaa7664a1a0987313b33a7991dabc9"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9aeddaa7664a1a0987313b33a7991dabc9">FLOAT_MATH::LS_MIDDLE</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:32</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a1a34d0ebad3b1971c131e6549b06cdd0"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a1a34d0ebad3b1971c131e6549b06cdd0">FLOAT_MATH::fm_sphereVolume</a></div><div class="ttdeci">float fm_sphereVolume(float radius)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a44b5172cfcadc77e68e1886cc5a33d4a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a44b5172cfcadc77e68e1886cc5a33d4a">FLOAT_MATH::fm_OBBtoAABB</a></div><div class="ttdeci">void fm_OBBtoAABB(const float obmin[3], const float obmax[3], const float matrix[16], float abmin[3], float abmax[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_af91f007d37b043bd7e70b4d2de1fbd25"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#af91f007d37b043bd7e70b4d2de1fbd25">FLOAT_MATH::fm_distToPlane</a></div><div class="ttdeci">float fm_distToPlane(const float plane[4], const float pos[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_afd1c4745cc5047b78dc32a107ce1b227"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#afd1c4745cc5047b78dc32a107ce1b227">FLOAT_MATH::fm_quatToEuler</a></div><div class="ttdeci">void fm_quatToEuler(const float quat[4], float &amp;ax, float &amp;ay, float &amp;az)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a5e7bcf0c2005abcdfb3b983befdba6e0"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a5e7bcf0c2005abcdfb3b983befdba6e0">FLOAT_MATH::fm_transform</a></div><div class="ttdeci">void fm_transform(const float matrix[16], const float pos[3], float t[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afaf6824c785aa66d10c8b39b8fa86375cb"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaf6824c785aa66d10c8b39b8fa86375cb">FLOAT_MATH::FMCS_ZMAX</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:19</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a5818d6dc249cc90d8ff4b8d1533b64e3"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a5818d6dc249cc90d8ff4b8d1533b64e3">FLOAT_MATH::fm_intersectPointPlane</a></div><div class="ttdeci">void fm_intersectPointPlane(const float p1[3], const float p2[3], float *split, const float plane[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a31893d5e8443706d3d6b889d01a9607ca04dee1498613f2b82ff56fb995b9df9e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca04dee1498613f2b82ff56fb995b9df9e">FLOAT_MATH::PTR_BACK</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:318</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a194f9efd2bb057b2209327630dec652e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a194f9efd2bb057b2209327630dec652e">FLOAT_MATH::fm_dot</a></div><div class="ttdeci">float fm_dot(const float p1[3], const float p2[3])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_a7d546cd3a301fd47bfde8cdd8f9ff950"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#a7d546cd3a301fd47bfde8cdd8f9ff950">FLOAT_MATH::fm_VertexIndex::isDouble</a></div><div class="ttdeci">virtual bool isDouble(void) const =0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afae45bdfb2c4086bde450b8af70d756585"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afae45bdfb2c4086bde450b8af70d756585">FLOAT_MATH::FMCS_XMAX</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:15</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_af49bf6eedc01255120d2c91f04ccffcc"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#af49bf6eedc01255120d2c91f04ccffcc">FLOAT_MATH::fm_clipTestAABB</a></div><div class="ttdeci">uint32_t fm_clipTestAABB(const float bmin[3], const float bmax[3], const float p1[3], const float p2[3], const float p3[3], uint32_t &amp;andCode)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a6143f60040a0bb5d1dcf7ad2dc19b192"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a6143f60040a0bb5d1dcf7ad2dc19b192">FLOAT_MATH::fm_pointInsidePolygon2d</a></div><div class="ttdeci">bool fm_pointInsidePolygon2d(uint32_t pcount, const float *points, uint32_t pstride, const float *point, uint32_t xindex=0, uint32_t yindex=1)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa70a27c3d146e66e393606b4c48fc37a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa70a27c3d146e66e393606b4c48fc37a">FLOAT_MATH::fm_rayIntersectsTriangle</a></div><div class="ttdeci">bool fm_rayIntersectsTriangle(const float origin[3], const float dir[3], const float v0[3], const float v1[3], const float v2[3], float &amp;t)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a010b32a67e0a6823c0f48c6ff9d37fb2"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a010b32a67e0a6823c0f48c6ff9d37fb2">FLOAT_MATH::fm_catmullRom</a></div><div class="ttdeci">void fm_catmullRom(float out_vector[3], const float p1[3], const float p2[3], const float p3[3], const float *p4, const float s)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a18df4ec9f73845649b49c9a984f6c52e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a18df4ec9f73845649b49c9a984f6c52e">FLOAT_MATH::fm_computeCentroid</a></div><div class="ttdeci">bool fm_computeCentroid(uint32_t vcount, const float *points, uint32_t vstride, float *center)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html">FLOAT_MATH</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:9</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a2a82702380cd9bd0469ee8663b3facdd"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a2a82702380cd9bd0469ee8663b3facdd">FLOAT_MATH::fm_intersectLineSegments2dTime</a></div><div class="ttdeci">IntersectResult fm_intersectLineSegments2dTime(const float a1[3], const float a2[3], const float b1[3], const float b2[3], float &amp;t1, float &amp;t2)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa83944760275782e7436df8b53a0c36c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa83944760275782e7436df8b53a0c36c">FLOAT_MATH::fm_getTranslation</a></div><div class="ttdeci">void fm_getTranslation(const float matrix[16], float t[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_acb3c8d61dfb35df6685ace736d7c61af"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#acb3c8d61dfb35df6685ace736d7c61af">FLOAT_MATH::fm_composeTransform</a></div><div class="ttdeci">void fm_composeTransform(const float position[3], const float quat[4], const float scale[3], float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_abf97767bcddaed89a04998a225044262"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#abf97767bcddaed89a04998a225044262">FLOAT_MATH::fm_transformAABB</a></div><div class="ttdeci">void fm_transformAABB(const float bmin[3], const float bmax[3], const float matrix[16], float tbmin[3], float tbmax[3])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_a116ff6211b3875be4f6959e9bfc3f52a"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#a116ff6211b3875be4f6959e9bfc3f52a">FLOAT_MATH::fm_VertexIndex::getVertexFloat</a></div><div class="ttdeci">virtual const float * getVertexFloat(uint32_t index) const =0</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_af0a76c201e908058e0565fb589d5c8ec"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#af0a76c201e908058e0565fb589d5c8ec">FLOAT_MATH::fm_VertexIndex::getIndex</a></div><div class="ttdeci">virtual uint32_t getIndex(const float pos[3], bool &amp;newPos)=0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a45c52a87f81bba0ed935d83ff9582de1"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a45c52a87f81bba0ed935d83ff9582de1">FLOAT_MATH::fm_insideAABB</a></div><div class="ttdeci">bool fm_insideAABB(const float pos[3], const float bmin[3], const float bmax[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8d49d5613f198a6c4be6f32dbb1ad7d5"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8d49d5613f198a6c4be6f32dbb1ad7d5">FLOAT_MATH::fm_consolidatePolygon</a></div><div class="ttdeci">uint32_t fm_consolidatePolygon(uint32_t pcount, const float *points, uint32_t pstride, float *dest, float epsilon=0.999999f)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae6c3d39e600a5a6588a12c0df1bc180b"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae6c3d39e600a5a6588a12c0df1bc180b">FLOAT_MATH::fm_computeSplitPlane</a></div><div class="ttdeci">bool fm_computeSplitPlane(uint32_t vcount, const double *vertices, uint32_t tcount, const uint32_t *indices, double *plane)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9624b57c4b00648ed09e15b1ec266c32"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9624b57c4b00648ed09e15b1ec266c32">FLOAT_MATH::fm_planeToMatrix</a></div><div class="ttdeci">void fm_planeToMatrix(const float plane[4], float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a243023211b7a4e5ab60bdb10c4a9db0f"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a243023211b7a4e5ab60bdb10c4a9db0f">FLOAT_MATH::fm_cylinderVolume</a></div><div class="ttdeci">float fm_cylinderVolume(float radius, float h)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa885c49a2b1b1cb2be57b88c567d6cc2"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa885c49a2b1b1cb2be57b88c567d6cc2">FLOAT_MATH::fm_planeToQuat</a></div><div class="ttdeci">void fm_planeToQuat(const float plane[4], float quat[4], float pos[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4ec9f934edc5eccb0bc0cdfce58f4441ae4e33ac5bb9efd259e1804e12fb4df7f"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ae4e33ac5bb9efd259e1804e12fb4df7f">FLOAT_MATH::IR_PARALLEL</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:303</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a51e027555f4bfefcd4b3f516b0d7c25a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a51e027555f4bfefcd4b3f516b0d7c25a">FLOAT_MATH::fm_getPoint</a></div><div class="ttdeci">const float * fm_getPoint(const float *points, uint32_t pstride, uint32_t index)</div></div>
<div class="ttc" id="bt_vector3_8h_html_adbffb9cb652cea7e0343fa39dcae22c8"><div class="ttname"><a href="bt_vector3_8h.html#adbffb9cb652cea7e0343fa39dcae22c8">y</a></div><div class="ttdeci">SIMD_FORCE_INLINE const btScalar &amp; y() const</div><div class="ttdoc">Return the y value. </div><div class="ttdef"><b>Definition:</b> btVector3.h:277</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8946aab872f6d90d17b51685fd3b7c1b"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8946aab872f6d90d17b51685fd3b7c1b">FLOAT_MATH::fm_solveX</a></div><div class="ttdeci">float fm_solveX(const float plane[4], float y, float z)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a31893d5e8443706d3d6b889d01a9607cab7d607fd4a4b559b23e0432b32d3ad31"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607cab7d607fd4a4b559b23e0432b32d3ad31">FLOAT_MATH::PTR_FRONT</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:317</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a6235a78977f152249b51e3b7095e8bb1"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a6235a78977f152249b51e3b7095e8bb1">FLOAT_MATH::fm_releaseTriangulate</a></div><div class="ttdeci">void fm_releaseTriangulate(fm_Triangulate *t)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a955f588e9f1c54ae05b315c5c1b57c29"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a955f588e9f1c54ae05b315c5c1b57c29">FLOAT_MATH::fm_clipTestPointXZ</a></div><div class="ttdeci">uint32_t fm_clipTestPointXZ(const float bmin[3], const float bmax[3], const float pos[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a950524c52471990ccd5ab8ffd2fdace4"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a950524c52471990ccd5ab8ffd2fdace4">FLOAT_MATH::fm_add</a></div><div class="ttdeci">void fm_add(const float *A, const float *B, float *sum)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a5ca83507e14e16aae1d3d49f43fcbf48"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a5ca83507e14e16aae1d3d49f43fcbf48">FLOAT_MATH::fm_createVertexIndex</a></div><div class="ttdeci">fm_VertexIndex * fm_createVertexIndex(double granularity, bool snapToGrid)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a7e401fb5f8d705ba7726af2c0beea70d"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a7e401fb5f8d705ba7726af2c0beea70d">FLOAT_MATH::fm_releaseVertexIndex</a></div><div class="ttdeci">void fm_releaseVertexIndex(fm_VertexIndex *vindex)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a437d2da1a476dd4f020e57dd8ad3803c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a437d2da1a476dd4f020e57dd8ad3803c">FLOAT_MATH::fm_insideTriangle</a></div><div class="ttdeci">bool fm_insideTriangle(float Ax, float Ay, float Bx, float By, float Cx, float Cy, float Px, float Py)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a2ffeeea97b9e77a30c72ce0e9b4e3896"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a2ffeeea97b9e77a30c72ce0e9b4e3896">FLOAT_MATH::fm_colinear</a></div><div class="ttdeci">bool fm_colinear(const double p1[3], const double p2[3], const double p3[3], double epsilon=0.999)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_af2757653a894b33ffa13feef4e931a69"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#af2757653a894b33ffa13feef4e931a69">FLOAT_MATH::fm_createTriangulate</a></div><div class="ttdeci">fm_Triangulate * fm_createTriangulate(void)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a44b109dcdaf358908f56f4d388642f58"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a44b109dcdaf358908f56f4d388642f58">FLOAT_MATH::fm_rotationArc</a></div><div class="ttdeci">void fm_rotationArc(const float v0[3], const float v1[3], float quat[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9053918ec3894e3fb079e932fd54b647"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9053918ec3894e3fb079e932fd54b647">FLOAT_MATH::fm_multiplyQuat</a></div><div class="ttdeci">void fm_multiplyQuat(const float *qa, const float *qb, float *quat)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ac9c372bec084a96bb461107edb5d01c4"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ac9c372bec084a96bb461107edb5d01c4">FLOAT_MATH::fm_getAABBCenter</a></div><div class="ttdeci">void fm_getAABBCenter(const float bmin[3], const float bmax[3], float center[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8f56ed9e1763d1e33bb24d5c11356c78"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78">FLOAT_MATH::FM_Axis</a></div><div class="ttdeci">FM_Axis</div><div class="ttdef"><b>Definition:</b> FloatMath.h:22</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4aeae548e32c6b3fd7b042880853668a"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4aeae548e32c6b3fd7b042880853668a">FLOAT_MATH::fm_eulerToQuatDX</a></div><div class="ttdeci">void fm_eulerToQuatDX(float x, float y, float z, float quat[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_abedf4d35d4d7f1cd6f5ef3ce30b99169"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#abedf4d35d4d7f1cd6f5ef3ce30b99169">FLOAT_MATH::fm_computeNormalVector</a></div><div class="ttdeci">void fm_computeNormalVector(float n[3], const float p1[3], const float p2[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a24043d9e6a8342127bda2d663e91c2a9"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a24043d9e6a8342127bda2d663e91c2a9">FLOAT_MATH::fm_createTesselate</a></div><div class="ttdeci">fm_Tesselate * fm_createTesselate(void)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a01f6b76a126b8ddb6bc75fcb24d56b63"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a01f6b76a126b8ddb6bc75fcb24d56b63">FLOAT_MATH::fm_computeMeshVolume</a></div><div class="ttdeci">float fm_computeMeshVolume(const float *vertices, uint32_t tcount, const uint32_t *indices)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a2ca4cef6af901b8de71c71535369229e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a2ca4cef6af901b8de71c71535369229e">FLOAT_MATH::fm_insideTriangleXZ</a></div><div class="ttdeci">bool fm_insideTriangleXZ(const float test[3], const float p1[3], const float p2[3], const float p3[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_afb8afe3f925d308fc0d8d3e6e99e521f"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#afb8afe3f925d308fc0d8d3e6e99e521f">FLOAT_MATH::fm_lineTestAABB</a></div><div class="ttdeci">bool fm_lineTestAABB(const float p1[3], const float p2[3], const float bmin[3], const float bmax[3], float &amp;time)</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_abfe5370a180b9df682e22968618c493d"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#abfe5370a180b9df682e22968618c493d">FLOAT_MATH::fm_VertexIndex::getVerticesFloat</a></div><div class="ttdeci">virtual const float * getVerticesFloat(void) const =0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afa9df27601d6ae82936064ca3010b80a5f"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afa9df27601d6ae82936064ca3010b80a5f">FLOAT_MATH::FMCS_XMIN</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:14</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_a4e440ed85cbfd3f02790a346dc448d91"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#a4e440ed85cbfd3f02790a346dc448d91">FLOAT_MATH::fm_VertexIndex::getVcount</a></div><div class="ttdeci">virtual uint32_t getVcount(void) const =0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aec4465fd7d2f2b8c93db8949a7c5a68e"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aec4465fd7d2f2b8c93db8949a7c5a68e">FLOAT_MATH::fm_copy3</a></div><div class="ttdeci">void fm_copy3(const float *source, float *dest)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4719b5216a887947c4c98e3b06844d9b"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4719b5216a887947c4c98e3b06844d9b">FLOAT_MATH::fm_computeBestFitABB</a></div><div class="ttdeci">void fm_computeBestFitABB(uint32_t vcount, const float *points, uint32_t pstride, float *sides, float pos[3])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html">FLOAT_MATH::fm_VertexIndex</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:384</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aff088a0e1dfb0fc72cd8e890b5ae39a2"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aff088a0e1dfb0fc72cd8e890b5ae39a2">FLOAT_MATH::fm_normalizeQuat</a></div><div class="ttdeci">float fm_normalizeQuat(float n[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4ec9f934edc5eccb0bc0cdfce58f4441ac65d828299272a2173a708a08a6a9ecf"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441ac65d828299272a2173a708a08a6a9ecf">FLOAT_MATH::IR_DO_INTERSECT</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:301</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a2ef966a4f85a8067ed36c020e036b401"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a2ef966a4f85a8067ed36c020e036b401">FLOAT_MATH::fm_distanceSquaredXZ</a></div><div class="ttdeci">float fm_distanceSquaredXZ(const float p1[3], const float p2[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aa1ca791e15419dff5d3ee0948b090219"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aa1ca791e15419dff5d3ee0948b090219">FLOAT_MATH::fm_raySphereIntersect</a></div><div class="ttdeci">bool fm_raySphereIntersect(const float center[3], float radius, const float pos[3], const float dir[3], float distance, float intersect[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ab7f413a7722f01daa020b05ea6cf000c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ab7f413a7722f01daa020b05ea6cf000c">FLOAT_MATH::fm_samePlane</a></div><div class="ttdeci">bool fm_samePlane(const float p1[4], const float p2[4], float normalEpsilon=0.01f, float dEpsilon=0.001f, bool doubleSided=false)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a672d75bf66999a3d1a6de125e85c5265"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a672d75bf66999a3d1a6de125e85c5265">FLOAT_MATH::fm_matrixToQuat</a></div><div class="ttdeci">void fm_matrixToQuat(const float matrix[16], float quat[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8f56ed9e1763d1e33bb24d5c11356c78ac78cb90c59826b6320fd1891088b1c07"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78ac78cb90c59826b6320fd1891088b1c07">FLOAT_MATH::FM_ZAXIS</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:26</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_acfb3009ad74719bf7240567fedd43ead"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#acfb3009ad74719bf7240567fedd43ead">FLOAT_MATH::fm_getSidePlane</a></div><div class="ttdeci">PlaneTriResult fm_getSidePlane(const float p[3], const float plane[4], float epsilon)</div></div>
<div class="ttc" id="bt_vector3_8h_html_ae6b71ab121d96689e1ce5f8903f56258"><div class="ttname"><a href="bt_vector3_8h.html#ae6b71ab121d96689e1ce5f8903f56258">distance</a></div><div class="ttdeci">SIMD_FORCE_INLINE btScalar distance(const btVector3 &amp;v) const</div><div class="ttdoc">Return the distance between the ends of this and another vector This is symantically treating the vec...</div><div class="ttdef"><b>Definition:</b> btVector3.h:475</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a2fd9365eecfffd704a661d8e4975ad4d"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a2fd9365eecfffd704a661d8e4975ad4d">FLOAT_MATH::fm_solveY</a></div><div class="ttdeci">float fm_solveY(const float plane[4], float x, float z)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8022779a39f2d98d0d1e59dc9e0ff382"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8022779a39f2d98d0d1e59dc9e0ff382">FLOAT_MATH::fm_areaPolygon2d</a></div><div class="ttdeci">float fm_areaPolygon2d(uint32_t pcount, const float *points, uint32_t pstride)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a80e7d3a77fae86473625be5a63425d90"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a80e7d3a77fae86473625be5a63425d90">FLOAT_MATH::fm_intersectRayAABB</a></div><div class="ttdeci">bool fm_intersectRayAABB(const float bmin[3], const float bmax[3], const float pos[3], const float dir[3], float intersect[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a4ec9f934edc5eccb0bc0cdfce58f4441a982692d82fda113c3844e3d5cd7737e7"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a4ec9f934edc5eccb0bc0cdfce58f4441a982692d82fda113c3844e3d5cd7737e7">FLOAT_MATH::IR_DONT_INTERSECT</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:300</div></div>
<div class="ttc" id="bt_vector3_8h_html_a419978af43d009c4b093b0f4ccc9de08"><div class="ttname"><a href="bt_vector3_8h.html#a419978af43d009c4b093b0f4ccc9de08">z</a></div><div class="ttdeci">SIMD_FORCE_INLINE const btScalar &amp; z() const</div><div class="ttdoc">Return the z value. </div><div class="ttdef"><b>Definition:</b> btVector3.h:279</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aab1bd86fa8cba57940d8de52aa5a4c07"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aab1bd86fa8cba57940d8de52aa5a4c07">FLOAT_MATH::fm_nearestPointInTriangle</a></div><div class="ttdeci">void fm_nearestPointInTriangle(const float *pos, const float *p1, const float *p2, const float *p3, float *nearest)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a1721515731405ff0444d53ce4a0ab227"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a1721515731405ff0444d53ce4a0ab227">FLOAT_MATH::fm_distanceSquared</a></div><div class="ttdeci">float fm_distanceSquared(const float p1[3], const float p2[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a955922bac08140d8027099632304d507"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a955922bac08140d8027099632304d507">FLOAT_MATH::fm_getSubMatrix</a></div><div class="ttdeci">void fm_getSubMatrix(int32_t ki, int32_t kj, float pDst[16], const float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a09bbac02b2d9b71ee13de5b8affe1830"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a09bbac02b2d9b71ee13de5b8affe1830">FLOAT_MATH::fm_computeMeanNormals</a></div><div class="ttdeci">void fm_computeMeanNormals(uint32_t vcount, const float *vertices, uint32_t vstride, float *normals, uint32_t nstride, uint32_t tcount, const uint32_t *indices)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ab1dbaf174472d60724ab64af30e05223"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ab1dbaf174472d60724ab64af30e05223">FLOAT_MATH::fm_quatRotate</a></div><div class="ttdeci">void fm_quatRotate(const float quat[4], const float v[3], float r[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9af"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9af">FLOAT_MATH::FM_ClipState</a></div><div class="ttdeci">FM_ClipState</div><div class="ttdef"><b>Definition:</b> FloatMath.h:12</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_afe19fb5409155a1b100555ae8b27e042"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#afe19fb5409155a1b100555ae8b27e042">FLOAT_MATH::fm_normalize</a></div><div class="ttdeci">float fm_normalize(float n[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a7d9d7f616ab8179bef4ded2167ce5050"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a7d9d7f616ab8179bef4ded2167ce5050">FLOAT_MATH::fm_doubleToFloat3</a></div><div class="ttdeci">void fm_doubleToFloat3(const double p[3], float t[3])</div><div class="ttdef"><b>Definition:</b> FloatMath.h:370</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a122981f0e26b79857ccec1d29e24bfe9ae1972ba2d53acc5b40a7186e9463724f"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9ae1972ba2d53acc5b40a7186e9463724f">FLOAT_MATH::LS_END</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:33</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a13583f8cd7fc965e170e52c7e8590c57"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a13583f8cd7fc965e170e52c7e8590c57">FLOAT_MATH::fm_floatToDouble3</a></div><div class="ttdeci">void fm_floatToDouble3(const float p[3], double t[3])</div><div class="ttdef"><b>Definition:</b> FloatMath.h:371</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a890be2a1715cda687e5d3e63d5f59e56"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a890be2a1715cda687e5d3e63d5f59e56">FLOAT_MATH::fm_capsuleVolume</a></div><div class="ttdeci">float fm_capsuleVolume(float radius, float h)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a38037bcca3e6efebe64714e1fa93a253"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a38037bcca3e6efebe64714e1fa93a253">FLOAT_MATH::fm_matrixMultiply</a></div><div class="ttdeci">void fm_matrixMultiply(const float A[16], const float B[16], float dest[16])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_ac0d22736210b88c849562c30481437d0"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#ac0d22736210b88c849562c30481437d0">FLOAT_MATH::fm_VertexIndex::saveAsObj</a></div><div class="ttdeci">virtual bool saveAsObj(const char *fname, uint32_t tcount, uint32_t *indices)=0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aafae02ac2136cb97fb7683194968f934"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aafae02ac2136cb97fb7683194968f934">FLOAT_MATH::fm_eulerToQuat</a></div><div class="ttdeci">void fm_eulerToQuat(float x, float y, float z, float quat[4])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a06301f8df72d582ed0504a42d7a63d09"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a06301f8df72d582ed0504a42d7a63d09">FLOAT_MATH::fm_isMeshCoplanar</a></div><div class="ttdeci">bool fm_isMeshCoplanar(uint32_t tcount, const uint32_t *indices, const float *vertices, bool doubleSided)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a8f56ed9e1763d1e33bb24d5c11356c78acf27da21bcf3eb6bbaa8c5f24254dcef"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a8f56ed9e1763d1e33bb24d5c11356c78acf27da21bcf3eb6bbaa8c5f24254dcef">FLOAT_MATH::FM_XAXIS</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:24</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a1defa5e1cac1adb9265c5f0a3d4c9645"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a1defa5e1cac1adb9265c5f0a3d4c9645">FLOAT_MATH::fm_getAABB</a></div><div class="ttdeci">void fm_getAABB(uint32_t vcount, const float *points, uint32_t pstride, float bmin[3], float bmax[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a459b88458014177d8945f6e8b269730c"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a459b88458014177d8945f6e8b269730c">FLOAT_MATH::fm_inverseTransform</a></div><div class="ttdeci">void fm_inverseTransform(const float matrix[16], float inverse_matrix[16])</div></div>
<div class="ttc" id="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index_html_a228633b9540532db6c15b7a27db85531"><div class="ttname"><a href="class_f_l_o_a_t___m_a_t_h_1_1fm___vertex_index.html#a228633b9540532db6c15b7a27db85531">FLOAT_MATH::fm_VertexIndex::getVerticesDouble</a></div><div class="ttdeci">virtual const double * getVerticesDouble(void) const =0</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_abb8140d5d40ac95d14d060b3df484650"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#abb8140d5d40ac95d14d060b3df484650">FLOAT_MATH::FM_PI</a></div><div class="ttdeci">const float FM_PI</div><div class="ttdef"><b>Definition:</b> FloatMath.h:37</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae54daa385d845bcb2e27dfd0340bb920"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae54daa385d845bcb2e27dfd0340bb920">FLOAT_MATH::fm_lineTestAABBXZ</a></div><div class="ttdeci">bool fm_lineTestAABBXZ(const float p1[3], const float p2[3], const float bmin[3], const float bmax[3], float &amp;time)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afac8adc6db98a363354407d4eb1df66a87"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afac8adc6db98a363354407d4eb1df66a87">FLOAT_MATH::FMCS_ZMIN</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:18</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_acbd7a02b1c968f46338a96cf6d2bf9a7"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#acbd7a02b1c968f46338a96cf6d2bf9a7">FLOAT_MATH::fm_inflateMinMax</a></div><div class="ttdeci">void fm_inflateMinMax(float bmin[3], float bmax[3], float ratio)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a538e188095ec76178ab7cfe067b8fad4"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a538e188095ec76178ab7cfe067b8fad4">FLOAT_MATH::fm_releaseTesselate</a></div><div class="ttdeci">void fm_releaseTesselate(fm_Tesselate *t)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae3424939e23d0f14e1a0c1745e43f9afaae2ee30933040ceaba04d40a1eb098fd"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae3424939e23d0f14e1a0c1745e43f9afaae2ee30933040ceaba04d40a1eb098fd">FLOAT_MATH::FMCS_YMAX</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:17</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_acbed8443ddbc88cc4408363938cb9b90"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#acbed8443ddbc88cc4408363938cb9b90">FLOAT_MATH::fm_multiplyTransform</a></div><div class="ttdeci">void fm_multiplyTransform(const float *pA, const float *pB, float *pM)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a60de5964eed515c5785fcad85a0a7efa"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a60de5964eed515c5785fcad85a0a7efa">FLOAT_MATH::fm_subtract</a></div><div class="ttdeci">void fm_subtract(const float *A, const float *B, float *diff)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ae0d9cd328d51cec3b434cc0a5ac1aa76"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ae0d9cd328d51cec3b434cc0a5ac1aa76">FLOAT_MATH::FM_DEG_TO_RAD</a></div><div class="ttdeci">const float FM_DEG_TO_RAD</div><div class="ttdef"><b>Definition:</b> FloatMath.h:38</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a7bf8c2dde51efeefb5212bf855aa29f9"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a7bf8c2dde51efeefb5212bf855aa29f9">FLOAT_MATH::FM_RAD_TO_DEG</a></div><div class="ttdeci">const float FM_RAD_TO_DEG</div><div class="ttdef"><b>Definition:</b> FloatMath.h:39</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a518c9e9f1a383ae51f1400e00168b04d"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a518c9e9f1a383ae51f1400e00168b04d">FLOAT_MATH::fm_decomposeTransform</a></div><div class="ttdeci">void fm_decomposeTransform(const float local_transform[16], float trans[3], float rot[4], float scale[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a122981f0e26b79857ccec1d29e24bfe9afb71f22022e7b20c1cffe0d767794516"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a122981f0e26b79857ccec1d29e24bfe9afb71f22022e7b20c1cffe0d767794516">FLOAT_MATH::LS_START</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:31</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a31893d5e8443706d3d6b889d01a9607ca82a429ed76868ef18cf4919b44b48cea"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a31893d5e8443706d3d6b889d01a9607ca82a429ed76868ef18cf4919b44b48cea">FLOAT_MATH::PTR_SPLIT</a></div><div class="ttdef"><b>Definition:</b> FloatMath.h:319</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a141c1e360636067eae8247cf7bcb7e22"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a141c1e360636067eae8247cf7bcb7e22">FLOAT_MATH::fm_isValidTriangle</a></div><div class="ttdeci">bool fm_isValidTriangle(const float *p1, const float *p2, const float *p3, float epsilon=0.00001f)</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a21696a79d14003a743b2b1ff40894b70"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a21696a79d14003a743b2b1ff40894b70">FLOAT_MATH::fm_eulerToMatrix</a></div><div class="ttdeci">void fm_eulerToMatrix(float ax, float ay, float az, float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a121beb08ccdf7b92b405f3a7fee2e1d1"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a121beb08ccdf7b92b405f3a7fee2e1d1">FLOAT_MATH::fm_computeBestFitSphere</a></div><div class="ttdeci">float fm_computeBestFitSphere(uint32_t vcount, const float *points, uint32_t pstride, float center[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_ab0e6f3d995aaa137c6811be7da8b1f57"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#ab0e6f3d995aaa137c6811be7da8b1f57">FLOAT_MATH::fm_getDominantAxis</a></div><div class="ttdeci">FM_Axis fm_getDominantAxis(const float normal[3])</div></div>
<div class="ttc" id="bt_vector3_8h_html_aa0d71a601765b3ef7dc8c950c6ff762e"><div class="ttname"><a href="bt_vector3_8h.html#aa0d71a601765b3ef7dc8c950c6ff762e">cross</a></div><div class="ttdeci">SIMD_FORCE_INLINE btVector3 cross(const btVector3 &amp;v) const</div><div class="ttdoc">Return the cross product between this and another vector. </div><div class="ttdef"><b>Definition:</b> btVector3.h:193</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a9709ed7da00dd74d859b47c48d824eeb"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a9709ed7da00dd74d859b47c48d824eeb">FLOAT_MATH::fm_rotate</a></div><div class="ttdeci">void fm_rotate(const float matrix[16], const float pos[3], float t[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a475707467603b8b04da3692140ab438b"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a475707467603b8b04da3692140ab438b">FLOAT_MATH::fm_identity</a></div><div class="ttdeci">void fm_identity(float matrix[16])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_aadd3751eaa131cd3fd3007c456a1be1b"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#aadd3751eaa131cd3fd3007c456a1be1b">FLOAT_MATH::fm_lineSphereIntersect</a></div><div class="ttdeci">bool fm_lineSphereIntersect(const float center[3], float radius, const float p1[3], const float p2[3], float intersect[3])</div></div>
<div class="ttc" id="namespace_f_l_o_a_t___m_a_t_h_html_a7a4c8c9a53e6eabd8c92860358eac481"><div class="ttname"><a href="namespace_f_l_o_a_t___m_a_t_h.html#a7a4c8c9a53e6eabd8c92860358eac481">FLOAT_MATH::fm_distancePointLineSegment</a></div><div class="ttdeci">float fm_distancePointLineSegment(const float Point[3], const float LineStart[3], const float LineEnd[3], float intersection[3], LineSegmentType &amp;type, float epsilon)</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- 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>