Files
recastnavigation/DetourCommon_8h.html

2686 lines
115 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Recast Navigation: DetourCommon.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Recast Navigation
</div>
<div id="projectbrief">Navigation-mesh Toolset for Games</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('DetourCommon_8h.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">DetourCommon.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="DetourMath_8h_source.html">DetourMath.h</a>&quot;</code><br />
<code>#include &lt;stddef.h&gt;</code><br />
</div>
<p><a href="DetourCommon_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">General helper functions</div></td></tr>
<tr class="memitem:a339afb43c105f3923f719bd63dca7312"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a339afb43c105f3923f719bd63dca7312"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a339afb43c105f3923f719bd63dca7312">dtIgnoreUnused</a> (const T &amp;)</td></tr>
<tr class="memdesc:a339afb43c105f3923f719bd63dca7312"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to ignore a function parameter. <a href="DetourCommon_8h.html#a339afb43c105f3923f719bd63dca7312">More...</a><br /></td></tr>
<tr class="separator:a339afb43c105f3923f719bd63dca7312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af347205bbcdcd802e8a41f0e2897c7f2"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:af347205bbcdcd802e8a41f0e2897c7f2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#af347205bbcdcd802e8a41f0e2897c7f2">dtSwap</a> (T &amp;a, T &amp;b)</td></tr>
<tr class="memdesc:af347205bbcdcd802e8a41f0e2897c7f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the values of the two parameters. <a href="DetourCommon_8h.html#af347205bbcdcd802e8a41f0e2897c7f2">More...</a><br /></td></tr>
<tr class="separator:af347205bbcdcd802e8a41f0e2897c7f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ba504117782e7d67fe3106ecd76988a"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a1ba504117782e7d67fe3106ecd76988a"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a1ba504117782e7d67fe3106ecd76988a">dtMin</a> (T a, T b)</td></tr>
<tr class="memdesc:a1ba504117782e7d67fe3106ecd76988a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the minimum of two values. <a href="DetourCommon_8h.html#a1ba504117782e7d67fe3106ecd76988a">More...</a><br /></td></tr>
<tr class="separator:a1ba504117782e7d67fe3106ecd76988a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8823f3ed1d46c80aa4d8d6b6646e8e72"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a8823f3ed1d46c80aa4d8d6b6646e8e72"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a8823f3ed1d46c80aa4d8d6b6646e8e72">dtMax</a> (T a, T b)</td></tr>
<tr class="memdesc:a8823f3ed1d46c80aa4d8d6b6646e8e72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the maximum of two values. <a href="DetourCommon_8h.html#a8823f3ed1d46c80aa4d8d6b6646e8e72">More...</a><br /></td></tr>
<tr class="separator:a8823f3ed1d46c80aa4d8d6b6646e8e72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dd5612e0be99e2c657d7164c699c044"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a6dd5612e0be99e2c657d7164c699c044"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a6dd5612e0be99e2c657d7164c699c044">dtAbs</a> (T a)</td></tr>
<tr class="memdesc:a6dd5612e0be99e2c657d7164c699c044"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the absolute value. <a href="DetourCommon_8h.html#a6dd5612e0be99e2c657d7164c699c044">More...</a><br /></td></tr>
<tr class="separator:a6dd5612e0be99e2c657d7164c699c044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0a088077730ad6995ce4d82093588cc"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:af0a088077730ad6995ce4d82093588cc"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#af0a088077730ad6995ce4d82093588cc">dtSqr</a> (T a)</td></tr>
<tr class="memdesc:af0a088077730ad6995ce4d82093588cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the square of the value. <a href="DetourCommon_8h.html#af0a088077730ad6995ce4d82093588cc">More...</a><br /></td></tr>
<tr class="separator:af0a088077730ad6995ce4d82093588cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a488d89869306c3d57c7a685aab89f9e6"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a488d89869306c3d57c7a685aab89f9e6"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a488d89869306c3d57c7a685aab89f9e6">dtClamp</a> (T v, T mn, T mx)</td></tr>
<tr class="memdesc:a488d89869306c3d57c7a685aab89f9e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clamps the value to the specified range. <a href="DetourCommon_8h.html#a488d89869306c3d57c7a685aab89f9e6">More...</a><br /></td></tr>
<tr class="separator:a488d89869306c3d57c7a685aab89f9e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Vector helper functions.</div></td></tr>
<tr class="memitem:a950177c2c05a3853ece198cc303ba972"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a950177c2c05a3853ece198cc303ba972">dtVcross</a> (float *dest, const float *v1, const float *v2)</td></tr>
<tr class="memdesc:a950177c2c05a3853ece198cc303ba972"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the cross product of two vectors. <a href="DetourCommon_8h.html#a950177c2c05a3853ece198cc303ba972">More...</a><br /></td></tr>
<tr class="separator:a950177c2c05a3853ece198cc303ba972"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a668c20a766e16f1e88b0ce55fcff6b3a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a668c20a766e16f1e88b0ce55fcff6b3a">dtVdot</a> (const float *v1, const float *v2)</td></tr>
<tr class="memdesc:a668c20a766e16f1e88b0ce55fcff6b3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the dot product of two vectors. <a href="DetourCommon_8h.html#a668c20a766e16f1e88b0ce55fcff6b3a">More...</a><br /></td></tr>
<tr class="separator:a668c20a766e16f1e88b0ce55fcff6b3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c4e6b8a509d183f62f57af1e73e1c6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a1c4e6b8a509d183f62f57af1e73e1c6e">dtVmad</a> (float *dest, const float *v1, const float *v2, const float s)</td></tr>
<tr class="memdesc:a1c4e6b8a509d183f62f57af1e73e1c6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a scaled vector addition. <a href="DetourCommon_8h.html#a1c4e6b8a509d183f62f57af1e73e1c6e">More...</a><br /></td></tr>
<tr class="separator:a1c4e6b8a509d183f62f57af1e73e1c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3295d18cd477fca1fe541b59b1b231"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a7b3295d18cd477fca1fe541b59b1b231">dtVlerp</a> (float *dest, const float *v1, const float *v2, const float t)</td></tr>
<tr class="memdesc:a7b3295d18cd477fca1fe541b59b1b231"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a linear interpolation between two vectors. <a href="DetourCommon_8h.html#a7b3295d18cd477fca1fe541b59b1b231">More...</a><br /></td></tr>
<tr class="separator:a7b3295d18cd477fca1fe541b59b1b231"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad549159189d387ad9496e51994c70e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#acad549159189d387ad9496e51994c70e">dtVadd</a> (float *dest, const float *v1, const float *v2)</td></tr>
<tr class="memdesc:acad549159189d387ad9496e51994c70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a vector addition. <a href="DetourCommon_8h.html#acad549159189d387ad9496e51994c70e">More...</a><br /></td></tr>
<tr class="separator:acad549159189d387ad9496e51994c70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b3255050bf09f5459f3c575ba1574b4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a8b3255050bf09f5459f3c575ba1574b4">dtVsub</a> (float *dest, const float *v1, const float *v2)</td></tr>
<tr class="memdesc:a8b3255050bf09f5459f3c575ba1574b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a vector subtraction. <a href="DetourCommon_8h.html#a8b3255050bf09f5459f3c575ba1574b4">More...</a><br /></td></tr>
<tr class="separator:a8b3255050bf09f5459f3c575ba1574b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a865e98b3352fdea9216c36374d1f0b6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a865e98b3352fdea9216c36374d1f0b6a">dtVscale</a> (float *dest, const float *v, const float t)</td></tr>
<tr class="memdesc:a865e98b3352fdea9216c36374d1f0b6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the vector by the specified value. <a href="DetourCommon_8h.html#a865e98b3352fdea9216c36374d1f0b6a">More...</a><br /></td></tr>
<tr class="separator:a865e98b3352fdea9216c36374d1f0b6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01ec3e541001b08eb054bfaf019c34d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a01ec3e541001b08eb054bfaf019c34d7">dtVmin</a> (float *mn, const float *v)</td></tr>
<tr class="memdesc:a01ec3e541001b08eb054bfaf019c34d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the minimum value of each element from the specified vectors. <a href="DetourCommon_8h.html#a01ec3e541001b08eb054bfaf019c34d7">More...</a><br /></td></tr>
<tr class="separator:a01ec3e541001b08eb054bfaf019c34d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bb8468867be21e93fab6c7fd343ca67"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a0bb8468867be21e93fab6c7fd343ca67">dtVmax</a> (float *mx, const float *v)</td></tr>
<tr class="memdesc:a0bb8468867be21e93fab6c7fd343ca67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the maximum value of each element from the specified vectors. <a href="DetourCommon_8h.html#a0bb8468867be21e93fab6c7fd343ca67">More...</a><br /></td></tr>
<tr class="separator:a0bb8468867be21e93fab6c7fd343ca67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78ab75edc5f87fc90471873c2652ca89"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a78ab75edc5f87fc90471873c2652ca89">dtVset</a> (float *dest, const float x, const float y, const float z)</td></tr>
<tr class="memdesc:a78ab75edc5f87fc90471873c2652ca89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the vector elements to the specified values. <a href="DetourCommon_8h.html#a78ab75edc5f87fc90471873c2652ca89">More...</a><br /></td></tr>
<tr class="separator:a78ab75edc5f87fc90471873c2652ca89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20bd1921d4bb81875f48bb8cbf7a63b4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a20bd1921d4bb81875f48bb8cbf7a63b4">dtVcopy</a> (float *dest, const float *a)</td></tr>
<tr class="memdesc:a20bd1921d4bb81875f48bb8cbf7a63b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a vector copy. <a href="DetourCommon_8h.html#a20bd1921d4bb81875f48bb8cbf7a63b4">More...</a><br /></td></tr>
<tr class="separator:a20bd1921d4bb81875f48bb8cbf7a63b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d534f22feca897eab0c01da28083bb3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a3d534f22feca897eab0c01da28083bb3">dtVlen</a> (const float *v)</td></tr>
<tr class="memdesc:a3d534f22feca897eab0c01da28083bb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the scalar length of the vector. <a href="DetourCommon_8h.html#a3d534f22feca897eab0c01da28083bb3">More...</a><br /></td></tr>
<tr class="separator:a3d534f22feca897eab0c01da28083bb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a509bf6e4d1ac9f683c8547163591ff8a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a509bf6e4d1ac9f683c8547163591ff8a">dtVlenSqr</a> (const float *v)</td></tr>
<tr class="memdesc:a509bf6e4d1ac9f683c8547163591ff8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the square of the scalar length of the vector. <a href="DetourCommon_8h.html#a509bf6e4d1ac9f683c8547163591ff8a">More...</a><br /></td></tr>
<tr class="separator:a509bf6e4d1ac9f683c8547163591ff8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a000a4b437d73fd37c831c4bcbc3abb8d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a000a4b437d73fd37c831c4bcbc3abb8d">dtVdist</a> (const float *v1, const float *v2)</td></tr>
<tr class="memdesc:a000a4b437d73fd37c831c4bcbc3abb8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the distance between two points. <a href="DetourCommon_8h.html#a000a4b437d73fd37c831c4bcbc3abb8d">More...</a><br /></td></tr>
<tr class="separator:a000a4b437d73fd37c831c4bcbc3abb8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acebfa3b142ae9b3ad052bf0dd0b3a820"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#acebfa3b142ae9b3ad052bf0dd0b3a820">dtVdistSqr</a> (const float *v1, const float *v2)</td></tr>
<tr class="memdesc:acebfa3b142ae9b3ad052bf0dd0b3a820"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the square of the distance between two points. <a href="DetourCommon_8h.html#acebfa3b142ae9b3ad052bf0dd0b3a820">More...</a><br /></td></tr>
<tr class="separator:acebfa3b142ae9b3ad052bf0dd0b3a820"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37a45cfe0cfc45112b6219fba1949e42"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a37a45cfe0cfc45112b6219fba1949e42">dtVdist2D</a> (const float *v1, const float *v2)</td></tr>
<tr class="memdesc:a37a45cfe0cfc45112b6219fba1949e42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the distance between the specified points on the xz-plane. <a href="DetourCommon_8h.html#a37a45cfe0cfc45112b6219fba1949e42">More...</a><br /></td></tr>
<tr class="separator:a37a45cfe0cfc45112b6219fba1949e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad68b02ca8e48bb8098b512fd3157c4d7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ad68b02ca8e48bb8098b512fd3157c4d7">dtVdist2DSqr</a> (const float *v1, const float *v2)</td></tr>
<tr class="memdesc:ad68b02ca8e48bb8098b512fd3157c4d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the square of the distance between the specified points on the xz-plane. <a href="DetourCommon_8h.html#ad68b02ca8e48bb8098b512fd3157c4d7">More...</a><br /></td></tr>
<tr class="separator:ad68b02ca8e48bb8098b512fd3157c4d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68f410fb499f25b1bf72ff4c6051cb3c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a68f410fb499f25b1bf72ff4c6051cb3c">dtVnormalize</a> (float *v)</td></tr>
<tr class="memdesc:a68f410fb499f25b1bf72ff4c6051cb3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the vector. <a href="DetourCommon_8h.html#a68f410fb499f25b1bf72ff4c6051cb3c">More...</a><br /></td></tr>
<tr class="separator:a68f410fb499f25b1bf72ff4c6051cb3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad246e02163e1de850ffe6a2645f3c28e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ad246e02163e1de850ffe6a2645f3c28e">dtVequal</a> (const float *p0, const float *p1)</td></tr>
<tr class="memdesc:ad246e02163e1de850ffe6a2645f3c28e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a 'sloppy' colocation check of the specified points. <a href="DetourCommon_8h.html#ad246e02163e1de850ffe6a2645f3c28e">More...</a><br /></td></tr>
<tr class="separator:ad246e02163e1de850ffe6a2645f3c28e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1de203d55d933ccaa2ae9f3e126f4e63"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a1de203d55d933ccaa2ae9f3e126f4e63">dtVisfinite</a> (const float *v)</td></tr>
<tr class="memdesc:a1de203d55d933ccaa2ae9f3e126f4e63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks that the specified vector's components are all finite. <a href="DetourCommon_8h.html#a1de203d55d933ccaa2ae9f3e126f4e63">More...</a><br /></td></tr>
<tr class="separator:a1de203d55d933ccaa2ae9f3e126f4e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3ddf094d63f2630a272f4dd865db7a3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ae3ddf094d63f2630a272f4dd865db7a3">dtVisfinite2D</a> (const float *v)</td></tr>
<tr class="memdesc:ae3ddf094d63f2630a272f4dd865db7a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks that the specified vector's 2D components are finite. <a href="DetourCommon_8h.html#ae3ddf094d63f2630a272f4dd865db7a3">More...</a><br /></td></tr>
<tr class="separator:ae3ddf094d63f2630a272f4dd865db7a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab16c954d6f9b1c271916d56a1210fb31"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ab16c954d6f9b1c271916d56a1210fb31">dtVdot2D</a> (const float *u, const float *v)</td></tr>
<tr class="memdesc:ab16c954d6f9b1c271916d56a1210fb31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the dot product of two vectors on the xz-plane. <a href="DetourCommon_8h.html#ab16c954d6f9b1c271916d56a1210fb31">More...</a><br /></td></tr>
<tr class="separator:ab16c954d6f9b1c271916d56a1210fb31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebb664a885e741148b381caeeb4f0dba"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#aebb664a885e741148b381caeeb4f0dba">dtVperp2D</a> (const float *u, const float *v)</td></tr>
<tr class="memdesc:aebb664a885e741148b381caeeb4f0dba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the xz-plane 2D perp product of the two vectors. <a href="DetourCommon_8h.html#aebb664a885e741148b381caeeb4f0dba">More...</a><br /></td></tr>
<tr class="separator:aebb664a885e741148b381caeeb4f0dba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Computational geometry helper functions.</div></td></tr>
<tr class="memitem:ace29bd80c4e15d0e4e4a5738aaa77408"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ace29bd80c4e15d0e4e4a5738aaa77408">dtTriArea2D</a> (const float *a, const float *b, const float *c)</td></tr>
<tr class="memdesc:ace29bd80c4e15d0e4e4a5738aaa77408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the signed xz-plane area of the triangle ABC, or the relationship of line AB to point C. <a href="DetourCommon_8h.html#ace29bd80c4e15d0e4e4a5738aaa77408">More...</a><br /></td></tr>
<tr class="separator:ace29bd80c4e15d0e4e4a5738aaa77408"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd68b769b30c3bf711467f5d8652b15d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#acd68b769b30c3bf711467f5d8652b15d">dtOverlapQuantBounds</a> (const unsigned short amin[3], const unsigned short amax[3], const unsigned short bmin[3], const unsigned short bmax[3])</td></tr>
<tr class="memdesc:acd68b769b30c3bf711467f5d8652b15d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if two axis-aligned bounding boxes overlap. <a href="DetourCommon_8h.html#acd68b769b30c3bf711467f5d8652b15d">More...</a><br /></td></tr>
<tr class="separator:acd68b769b30c3bf711467f5d8652b15d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63541204d445957e2ddc5eff010e485"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ad63541204d445957e2ddc5eff010e485">dtOverlapBounds</a> (const float *amin, const float *amax, const float *bmin, const float *bmax)</td></tr>
<tr class="memdesc:ad63541204d445957e2ddc5eff010e485"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if two axis-aligned bounding boxes overlap. <a href="DetourCommon_8h.html#ad63541204d445957e2ddc5eff010e485">More...</a><br /></td></tr>
<tr class="separator:ad63541204d445957e2ddc5eff010e485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4895e82b2b41cc99acade7e8f88eba6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a4895e82b2b41cc99acade7e8f88eba6e">dtClosestPtPointTriangle</a> (float *closest, const float *p, const float *a, const float *b, const float *c)</td></tr>
<tr class="memdesc:a4895e82b2b41cc99acade7e8f88eba6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the closest point on a triangle from the specified reference point. <a href="DetourCommon_8h.html#a4895e82b2b41cc99acade7e8f88eba6e">More...</a><br /></td></tr>
<tr class="separator:a4895e82b2b41cc99acade7e8f88eba6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae04f7da639a87bf34242ff362e31bef4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ae04f7da639a87bf34242ff362e31bef4">dtClosestHeightPointTriangle</a> (const float *p, const float *a, const float *b, const float *c, float &amp;h)</td></tr>
<tr class="memdesc:ae04f7da639a87bf34242ff362e31bef4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the y-axis height of the closest point on the triangle from the specified reference point. <a href="DetourCommon_8h.html#ae04f7da639a87bf34242ff362e31bef4">More...</a><br /></td></tr>
<tr class="separator:ae04f7da639a87bf34242ff362e31bef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cb54b8f523d837ab0d99bf4acfc7e2a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a5cb54b8f523d837ab0d99bf4acfc7e2a">dtIntersectSegmentPoly2D</a> (const float *p0, const float *p1, const float *verts, int nverts, float &amp;tmin, float &amp;tmax, int &amp;segMin, int &amp;segMax)</td></tr>
<tr class="separator:a5cb54b8f523d837ab0d99bf4acfc7e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af683acdd2685f36cbfd62202251857df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#af683acdd2685f36cbfd62202251857df">dtIntersectSegSeg2D</a> (const float *ap, const float *aq, const float *bp, const float *bq, float &amp;s, float &amp;t)</td></tr>
<tr class="separator:af683acdd2685f36cbfd62202251857df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3806c429b5b231f316988edd4373aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a7b3806c429b5b231f316988edd4373aa">dtPointInPolygon</a> (const float *pt, const float *verts, const int nverts)</td></tr>
<tr class="memdesc:a7b3806c429b5b231f316988edd4373aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if the specified point is inside the convex polygon on the xz-plane. <a href="DetourCommon_8h.html#a7b3806c429b5b231f316988edd4373aa">More...</a><br /></td></tr>
<tr class="separator:a7b3806c429b5b231f316988edd4373aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9364781fff515c2d8e1fe654e9491b5d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a9364781fff515c2d8e1fe654e9491b5d">dtDistancePtPolyEdgesSqr</a> (const float *pt, const float *verts, const int nverts, float *ed, float *et)</td></tr>
<tr class="separator:a9364781fff515c2d8e1fe654e9491b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99afe0b6e77a0c800e9582faea87cf6d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a99afe0b6e77a0c800e9582faea87cf6d">dtDistancePtSegSqr2D</a> (const float *pt, const float *p, const float *q, float &amp;t)</td></tr>
<tr class="separator:a99afe0b6e77a0c800e9582faea87cf6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5a2810aa8c6eeebde512561a1706515"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ae5a2810aa8c6eeebde512561a1706515">dtCalcPolyCenter</a> (float *tc, const unsigned short *idx, int nidx, const float *verts)</td></tr>
<tr class="memdesc:ae5a2810aa8c6eeebde512561a1706515"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derives the centroid of a convex polygon. <a href="DetourCommon_8h.html#ae5a2810aa8c6eeebde512561a1706515">More...</a><br /></td></tr>
<tr class="separator:ae5a2810aa8c6eeebde512561a1706515"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eb3e9100fdc574add9a344030161dfa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a5eb3e9100fdc574add9a344030161dfa">dtOverlapPolyPoly2D</a> (const float *polya, const int npolya, const float *polyb, const int npolyb)</td></tr>
<tr class="memdesc:a5eb3e9100fdc574add9a344030161dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if the two convex polygons overlap on the xz-plane. <a href="DetourCommon_8h.html#a5eb3e9100fdc574add9a344030161dfa">More...</a><br /></td></tr>
<tr class="separator:a5eb3e9100fdc574add9a344030161dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellanious functions.</div></td></tr>
<tr class="memitem:aca8a96b35bdd0d6ca037cb40611bc1b5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#aca8a96b35bdd0d6ca037cb40611bc1b5">dtNextPow2</a> (unsigned int v)</td></tr>
<tr class="separator:aca8a96b35bdd0d6ca037cb40611bc1b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c49318f4e7f77972684dd9de93849e3"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a8c49318f4e7f77972684dd9de93849e3">dtIlog2</a> (unsigned int v)</td></tr>
<tr class="separator:a8c49318f4e7f77972684dd9de93849e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0b670bfe127997c427f8f79b7e6d2dd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#af0b670bfe127997c427f8f79b7e6d2dd">dtAlign4</a> (int x)</td></tr>
<tr class="separator:af0b670bfe127997c427f8f79b7e6d2dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab20ff0c590db06a62e05c6f6df292404"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ab20ff0c590db06a62e05c6f6df292404">dtOppositeTile</a> (int side)</td></tr>
<tr class="separator:ab20ff0c590db06a62e05c6f6df292404"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab940927fe9d901d2f763fb7de105239e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ab940927fe9d901d2f763fb7de105239e">dtSwapByte</a> (unsigned char *a, unsigned char *b)</td></tr>
<tr class="separator:ab940927fe9d901d2f763fb7de105239e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11c2aec43edd3160f39b9b60eed4c763"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a11c2aec43edd3160f39b9b60eed4c763">dtSwapEndian</a> (unsigned short *v)</td></tr>
<tr class="separator:a11c2aec43edd3160f39b9b60eed4c763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0efb26f29e363d814b1caeac7450d9f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a0efb26f29e363d814b1caeac7450d9f7">dtSwapEndian</a> (short *v)</td></tr>
<tr class="separator:a0efb26f29e363d814b1caeac7450d9f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12856916647f1a32e1964e457fb4e0e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a12856916647f1a32e1964e457fb4e0e6">dtSwapEndian</a> (unsigned int *v)</td></tr>
<tr class="separator:a12856916647f1a32e1964e457fb4e0e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af91067419d846eaecd54af7a91874d25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#af91067419d846eaecd54af7a91874d25">dtSwapEndian</a> (int *v)</td></tr>
<tr class="separator:af91067419d846eaecd54af7a91874d25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42ad975ca7ff142a500805e113bd3ac4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a42ad975ca7ff142a500805e113bd3ac4">dtSwapEndian</a> (float *v)</td></tr>
<tr class="separator:a42ad975ca7ff142a500805e113bd3ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a846b4291b0c9a3dde72c6979c428ffa3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a846b4291b0c9a3dde72c6979c428ffa3">dtRandomPointInConvexPoly</a> (const float *pts, const int npts, float *areas, const float s, const float t, float *out)</td></tr>
<tr class="separator:a846b4291b0c9a3dde72c6979c428ffa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36687a200ee5ef42291fb2618c678298"><td class="memTemplParams" colspan="2">template&lt;typename TypeToRetrieveAs &gt; </td></tr>
<tr class="memitem:a36687a200ee5ef42291fb2618c678298"><td class="memTemplItemLeft" align="right" valign="top">TypeToRetrieveAs *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#a36687a200ee5ef42291fb2618c678298">dtGetThenAdvanceBufferPointer</a> (const unsigned char *&amp;buffer, const size_t distanceToAdvance)</td></tr>
<tr class="separator:a36687a200ee5ef42291fb2618c678298"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab994073a9dc4b569d776786b00d90e1d"><td class="memTemplParams" colspan="2">template&lt;typename TypeToRetrieveAs &gt; </td></tr>
<tr class="memitem:ab994073a9dc4b569d776786b00d90e1d"><td class="memTemplItemLeft" align="right" valign="top">TypeToRetrieveAs *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="DetourCommon_8h.html#ab994073a9dc4b569d776786b00d90e1d">dtGetThenAdvanceBufferPointer</a> (unsigned char *&amp;buffer, const size_t distanceToAdvance)</td></tr>
<tr class="separator:ab994073a9dc4b569d776786b00d90e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a6dd5612e0be99e2c657d7164c699c044"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6dd5612e0be99e2c657d7164c699c044">&#9670;&nbsp;</a></span>dtAbs()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T dtAbs </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>a</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the absolute value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The absolute value of the specified value. </dd></dl>
</div>
</div>
<a id="af0b670bfe127997c427f8f79b7e6d2dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0b670bfe127997c427f8f79b7e6d2dd">&#9670;&nbsp;</a></span>dtAlign4()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int dtAlign4 </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae5a2810aa8c6eeebde512561a1706515"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5a2810aa8c6eeebde512561a1706515">&#9670;&nbsp;</a></span>dtCalcPolyCenter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtCalcPolyCenter </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>tc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned short *&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>verts</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the centroid of a convex polygon. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">tc</td><td>The centroid of the polgyon. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>The polygon indices. [(vertIndex) * <code>nidx</code>] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nidx</td><td>The number of indices in the polygon. [Limit: &gt;= 3] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">verts</td><td>The polygon vertices. [(x, y, z) * vertCount] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a488d89869306c3d57c7a685aab89f9e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a488d89869306c3d57c7a685aab89f9e6">&#9670;&nbsp;</a></span>dtClamp()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T dtClamp </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>mn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>mx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Clamps the value to the specified range. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>The value to clamp. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">mn</td><td>The minimum permitted return value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">mx</td><td>The maximum permitted return value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value, clamped to the specified range. </dd></dl>
</div>
</div>
<a id="ae04f7da639a87bf34242ff362e31bef4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae04f7da639a87bf34242ff362e31bef4">&#9670;&nbsp;</a></span>dtClosestHeightPointTriangle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtClosestHeightPointTriangle </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>h</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the y-axis height of the closest point on the triangle from the specified reference point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The reference point from which to test. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Vertex A of triangle ABC. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Vertex B of triangle ABC. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Vertex C of triangle ABC. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">h</td><td>The resulting height. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4895e82b2b41cc99acade7e8f88eba6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4895e82b2b41cc99acade7e8f88eba6e">&#9670;&nbsp;</a></span>dtClosestPtPointTriangle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtClosestPtPointTriangle </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>closest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the closest point on a triangle from the specified reference point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">closest</td><td>The closest point on the triangle. <br />
</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The reference point from which to test. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Vertex A of triangle ABC. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Vertex B of triangle ABC. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Vertex C of triangle ABC. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9364781fff515c2d8e1fe654e9491b5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9364781fff515c2d8e1fe654e9491b5d">&#9670;&nbsp;</a></span>dtDistancePtPolyEdgesSqr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtDistancePtPolyEdgesSqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>verts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>nverts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>ed</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>et</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a99afe0b6e77a0c800e9582faea87cf6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99afe0b6e77a0c800e9582faea87cf6d">&#9670;&nbsp;</a></span>dtDistancePtSegSqr2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float dtDistancePtSegSqr2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>q</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a36687a200ee5ef42291fb2618c678298"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36687a200ee5ef42291fb2618c678298">&#9670;&nbsp;</a></span>dtGetThenAdvanceBufferPointer() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeToRetrieveAs &gt; </div>
<table class="memname">
<tr>
<td class="memname">TypeToRetrieveAs* dtGetThenAdvanceBufferPointer </td>
<td>(</td>
<td class="paramtype">const unsigned char *&amp;&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>distanceToAdvance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab994073a9dc4b569d776786b00d90e1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab994073a9dc4b569d776786b00d90e1d">&#9670;&nbsp;</a></span>dtGetThenAdvanceBufferPointer() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename TypeToRetrieveAs &gt; </div>
<table class="memname">
<tr>
<td class="memname">TypeToRetrieveAs* dtGetThenAdvanceBufferPointer </td>
<td>(</td>
<td class="paramtype">unsigned char *&amp;&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>distanceToAdvance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a339afb43c105f3923f719bd63dca7312"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a339afb43c105f3923f719bd63dca7312">&#9670;&nbsp;</a></span>dtIgnoreUnused()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void dtIgnoreUnused </td>
<td>(</td>
<td class="paramtype">const T &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used to ignore a function parameter. </p>
<p>VS complains about unused parameters and this silences the warning. </p>
</div>
</div>
<a id="a8c49318f4e7f77972684dd9de93849e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c49318f4e7f77972684dd9de93849e3">&#9670;&nbsp;</a></span>dtIlog2()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int dtIlog2 </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5cb54b8f523d837ab0d99bf4acfc7e2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cb54b8f523d837ab0d99bf4acfc7e2a">&#9670;&nbsp;</a></span>dtIntersectSegmentPoly2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtIntersectSegmentPoly2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>verts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nverts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>tmin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>tmax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>segMin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>segMax</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af683acdd2685f36cbfd62202251857df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af683acdd2685f36cbfd62202251857df">&#9670;&nbsp;</a></span>dtIntersectSegSeg2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtIntersectSegSeg2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>ap</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>aq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>bp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>bq</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float &amp;&#160;</td>
<td class="paramname"><em>t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8823f3ed1d46c80aa4d8d6b6646e8e72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8823f3ed1d46c80aa4d8d6b6646e8e72">&#9670;&nbsp;</a></span>dtMax()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T dtMax </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the maximum of two values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Value A </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Value B </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum of the two values. </dd></dl>
</div>
</div>
<a id="a1ba504117782e7d67fe3106ecd76988a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ba504117782e7d67fe3106ecd76988a">&#9670;&nbsp;</a></span>dtMin()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T dtMin </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the minimum of two values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Value A </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Value B </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The minimum of the two values. </dd></dl>
</div>
</div>
<a id="aca8a96b35bdd0d6ca037cb40611bc1b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca8a96b35bdd0d6ca037cb40611bc1b5">&#9670;&nbsp;</a></span>dtNextPow2()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int dtNextPow2 </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab20ff0c590db06a62e05c6f6df292404"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab20ff0c590db06a62e05c6f6df292404">&#9670;&nbsp;</a></span>dtOppositeTile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int dtOppositeTile </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad63541204d445957e2ddc5eff010e485"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad63541204d445957e2ddc5eff010e485">&#9670;&nbsp;</a></span>dtOverlapBounds()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool dtOverlapBounds </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>amin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>amax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>bmin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>bmax</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines if two axis-aligned bounding boxes overlap. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">amin</td><td>Minimum bounds of box A. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">amax</td><td>Maximum bounds of box A. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bmin</td><td>Minimum bounds of box B. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bmax</td><td>Maximum bounds of box B. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the two AABB's overlap. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="DetourCommon_8h.html#acd68b769b30c3bf711467f5d8652b15d" title="Determines if two axis-aligned bounding boxes overlap.">dtOverlapQuantBounds</a> </dd></dl>
</div>
</div>
<a id="a5eb3e9100fdc574add9a344030161dfa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5eb3e9100fdc574add9a344030161dfa">&#9670;&nbsp;</a></span>dtOverlapPolyPoly2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtOverlapPolyPoly2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>polya</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>npolya</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>polyb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>npolyb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines if the two convex polygons overlap on the xz-plane. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">polya</td><td>Polygon A vertices. [(x, y, z) * <code>npolya</code>] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">npolya</td><td>The number of vertices in polygon A. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">polyb</td><td>Polygon B vertices. [(x, y, z) * <code>npolyb</code>] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">npolyb</td><td>The number of vertices in polygon B. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the two polygons overlap.</dd></dl>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>All vertices are projected onto the xz-plane, so the y-values are ignored. </p>
</div>
</div>
<a id="acd68b769b30c3bf711467f5d8652b15d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd68b769b30c3bf711467f5d8652b15d">&#9670;&nbsp;</a></span>dtOverlapQuantBounds()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool dtOverlapQuantBounds </td>
<td>(</td>
<td class="paramtype">const unsigned short&#160;</td>
<td class="paramname"><em>amin</em>[3], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned short&#160;</td>
<td class="paramname"><em>amax</em>[3], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned short&#160;</td>
<td class="paramname"><em>bmin</em>[3], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned short&#160;</td>
<td class="paramname"><em>bmax</em>[3]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines if two axis-aligned bounding boxes overlap. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">amin</td><td>Minimum bounds of box A. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">amax</td><td>Maximum bounds of box A. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bmin</td><td>Minimum bounds of box B. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">bmax</td><td>Maximum bounds of box B. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the two AABB's overlap. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="DetourCommon_8h.html#ad63541204d445957e2ddc5eff010e485" title="Determines if two axis-aligned bounding boxes overlap.">dtOverlapBounds</a> </dd></dl>
</div>
</div>
<a id="a7b3806c429b5b231f316988edd4373aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3806c429b5b231f316988edd4373aa">&#9670;&nbsp;</a></span>dtPointInPolygon()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtPointInPolygon </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>verts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>nverts</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines if the specified point is inside the convex polygon on the xz-plane. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pt</td><td>The point to check. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">verts</td><td>The polygon vertices. [(x, y, z) * <code>nverts</code>] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nverts</td><td>The number of vertices. [Limit: &gt;= 3] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the point is inside the polygon.</dd></dl>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>All points are projected onto the xz-plane, so the y-values are ignored. </p>
</div>
</div>
<a id="a846b4291b0c9a3dde72c6979c428ffa3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a846b4291b0c9a3dde72c6979c428ffa3">&#9670;&nbsp;</a></span>dtRandomPointInConvexPoly()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtRandomPointInConvexPoly </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>npts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>areas</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>out</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af0a088077730ad6995ce4d82093588cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0a088077730ad6995ce4d82093588cc">&#9670;&nbsp;</a></span>dtSqr()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T dtSqr </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>a</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the square of the value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The square of the value. </dd></dl>
</div>
</div>
<a id="af347205bbcdcd802e8a41f0e2897c7f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af347205bbcdcd802e8a41f0e2897c7f2">&#9670;&nbsp;</a></span>dtSwap()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwap </td>
<td>(</td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Swaps the values of the two parameters. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>Value A </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>Value B </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab940927fe9d901d2f763fb7de105239e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab940927fe9d901d2f763fb7de105239e">&#9670;&nbsp;</a></span>dtSwapByte()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapByte </td>
<td>(</td>
<td class="paramtype">unsigned char *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char *&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a42ad975ca7ff142a500805e113bd3ac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42ad975ca7ff142a500805e113bd3ac4">&#9670;&nbsp;</a></span>dtSwapEndian() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapEndian </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af91067419d846eaecd54af7a91874d25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af91067419d846eaecd54af7a91874d25">&#9670;&nbsp;</a></span>dtSwapEndian() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapEndian </td>
<td>(</td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0efb26f29e363d814b1caeac7450d9f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0efb26f29e363d814b1caeac7450d9f7">&#9670;&nbsp;</a></span>dtSwapEndian() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapEndian </td>
<td>(</td>
<td class="paramtype">short *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12856916647f1a32e1964e457fb4e0e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12856916647f1a32e1964e457fb4e0e6">&#9670;&nbsp;</a></span>dtSwapEndian() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapEndian </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a11c2aec43edd3160f39b9b60eed4c763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11c2aec43edd3160f39b9b60eed4c763">&#9670;&nbsp;</a></span>dtSwapEndian() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtSwapEndian </td>
<td>(</td>
<td class="paramtype">unsigned short *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ace29bd80c4e15d0e4e4a5738aaa77408"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace29bd80c4e15d0e4e4a5738aaa77408">&#9670;&nbsp;</a></span>dtTriArea2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtTriArea2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the signed xz-plane area of the triangle ABC, or the relationship of line AB to point C. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>Vertex A. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Vertex B. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>Vertex C. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The signed xz-plane area of the triangle.</dd></dl>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>The vertices are projected onto the xz-plane, so the y-values are ignored.</p>
<p>This is a low cost function than can be used for various purposes. Its main purpose is for point/line relationship testing.</p>
<p>In all cases: A value of zero indicates that all vertices are collinear or represent the same point. (On the xz-plane.)</p>
<p>When used for point/line relationship tests, AB usually represents a line against which the C point is to be tested. In this case:</p>
<p>A positive value indicates that point C is to the left of line AB, looking from A toward B.<br />
A negative value indicates that point C is to the right of lineAB, looking from A toward B.</p>
<p>When used for evaluating a triangle:</p>
<p>The absolute value of the return value is two times the area of the triangle when it is projected onto the xz-plane.</p>
<p>A positive return value indicates:</p>
<ul>
<li>
The vertices are wrapped in the normal Detour wrap direction. </li>
<li>
The triangle's 3D face normal is in the general up direction. </li>
</ul>
<p>A negative return value indicates:</p>
<ul>
<li>
The vertices are reverse wrapped. (Wrapped opposite the normal Detour wrap direction.) </li>
<li>
The triangle's 3D face normal is in the general down direction. </li>
</ul>
</div>
</div>
<a id="acad549159189d387ad9496e51994c70e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acad549159189d387ad9496e51994c70e">&#9670;&nbsp;</a></span>dtVadd()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVadd </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a vector addition. </p>
<p>(<code>v1</code> + <code>v2</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>The base vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>The vector to add to <code>v1</code>. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a20bd1921d4bb81875f48bb8cbf7a63b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20bd1921d4bb81875f48bb8cbf7a63b4">&#9670;&nbsp;</a></span>dtVcopy()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVcopy </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>a</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a vector copy. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The vector to copy. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a950177c2c05a3853ece198cc303ba972"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a950177c2c05a3853ece198cc303ba972">&#9670;&nbsp;</a></span>dtVcross()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVcross </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the cross product of two vectors. </p>
<p>(<code>v1</code> x <code>v2</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The cross product. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A Vector [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A vector [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a000a4b437d73fd37c831c4bcbc3abb8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a000a4b437d73fd37c831c4bcbc3abb8d">&#9670;&nbsp;</a></span>dtVdist()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdist </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the distance between two points. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A point. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The distance between the two points. </dd></dl>
</div>
</div>
<a id="a37a45cfe0cfc45112b6219fba1949e42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37a45cfe0cfc45112b6219fba1949e42">&#9670;&nbsp;</a></span>dtVdist2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdist2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the distance between the specified points on the xz-plane. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A point. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The distance between the point on the xz-plane.</dd></dl>
<p>The vectors are projected onto the xz-plane, so the y-values are ignored. </p>
</div>
</div>
<a id="ad68b02ca8e48bb8098b512fd3157c4d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad68b02ca8e48bb8098b512fd3157c4d7">&#9670;&nbsp;</a></span>dtVdist2DSqr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdist2DSqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the square of the distance between the specified points on the xz-plane. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A point. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The square of the distance between the point on the xz-plane. </dd></dl>
</div>
</div>
<a id="acebfa3b142ae9b3ad052bf0dd0b3a820"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acebfa3b142ae9b3ad052bf0dd0b3a820">&#9670;&nbsp;</a></span>dtVdistSqr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdistSqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the square of the distance between two points. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A point. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The square of the distance between the two points. </dd></dl>
</div>
</div>
<a id="a668c20a766e16f1e88b0ce55fcff6b3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a668c20a766e16f1e88b0ce55fcff6b3a">&#9670;&nbsp;</a></span>dtVdot()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdot </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the dot product of two vectors. </p>
<p>(<code>v1</code> . <code>v2</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>A Vector [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>A vector [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The dot product. </dd></dl>
</div>
</div>
<a id="ab16c954d6f9b1c271916d56a1210fb31"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab16c954d6f9b1c271916d56a1210fb31">&#9670;&nbsp;</a></span>dtVdot2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVdot2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the dot product of two vectors on the xz-plane. </p>
<p>(<code>u</code> . <code>v</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">u</td><td>A vector [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>A vector [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The dot product on the xz-plane.</dd></dl>
<p>The vectors are projected onto the xz-plane, so the y-values are ignored. </p>
</div>
</div>
<a id="ad246e02163e1de850ffe6a2645f3c28e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad246e02163e1de850ffe6a2645f3c28e">&#9670;&nbsp;</a></span>dtVequal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool dtVequal </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p1</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a 'sloppy' colocation check of the specified points. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">p0</td><td>A point. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p1</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the points are considered to be at the same location.</dd></dl>
<p>Basically, this function will return true if the specified points are close enough to eachother to be considered colocated. </p>
</div>
</div>
<a id="a1de203d55d933ccaa2ae9f3e126f4e63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1de203d55d933ccaa2ae9f3e126f4e63">&#9670;&nbsp;</a></span>dtVisfinite()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool dtVisfinite </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks that the specified vector's components are all finite. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if all of the point's components are finite, i.e. not NaN or any of the infinities. </dd></dl>
</div>
</div>
<a id="ae3ddf094d63f2630a272f4dd865db7a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3ddf094d63f2630a272f4dd865db7a3">&#9670;&nbsp;</a></span>dtVisfinite2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool dtVisfinite2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks that the specified vector's 2D components are finite. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>A point. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3d534f22feca897eab0c01da28083bb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d534f22feca897eab0c01da28083bb3">&#9670;&nbsp;</a></span>dtVlen()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVlen </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the scalar length of the vector. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>The vector. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The scalar length of the vector. </dd></dl>
</div>
</div>
<a id="a509bf6e4d1ac9f683c8547163591ff8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a509bf6e4d1ac9f683c8547163591ff8a">&#9670;&nbsp;</a></span>dtVlenSqr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVlenSqr </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the square of the scalar length of the vector. </p>
<p>(len * len) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>The vector. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The square of the scalar length of the vector. </dd></dl>
</div>
</div>
<a id="a7b3295d18cd477fca1fe541b59b1b231"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3295d18cd477fca1fe541b59b1b231">&#9670;&nbsp;</a></span>dtVlerp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVlerp </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a linear interpolation between two vectors. </p>
<p>(<code>v1</code> toward <code>v2</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, x)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>The starting vector. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>The destination vector. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>The interpolation factor. [Limits: 0 &lt;= value &lt;= 1.0] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1c4e6b8a509d183f62f57af1e73e1c6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c4e6b8a509d183f62f57af1e73e1c6e">&#9670;&nbsp;</a></span>dtVmad()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVmad </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>s</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a scaled vector addition. </p>
<p>(<code>v1</code> + (<code>v2</code> * <code>s</code>)) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>The base vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>The vector to scale and add to <code>v1</code>. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>The amount to scale <code>v2</code> by before adding to <code>v1</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0bb8468867be21e93fab6c7fd343ca67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bb8468867be21e93fab6c7fd343ca67">&#9670;&nbsp;</a></span>dtVmax()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVmax </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>mx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Selects the maximum value of each element from the specified vectors. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">mx</td><td>A vector. (Will be updated with the result.) [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>A vector. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a01ec3e541001b08eb054bfaf019c34d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01ec3e541001b08eb054bfaf019c34d7">&#9670;&nbsp;</a></span>dtVmin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVmin </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>mn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Selects the minimum value of each element from the specified vectors. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">mn</td><td>A vector. (Will be updated with the result.) [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>A vector. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a68f410fb499f25b1bf72ff4c6051cb3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68f410fb499f25b1bf72ff4c6051cb3c">&#9670;&nbsp;</a></span>dtVnormalize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVnormalize </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Normalizes the vector. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">v</td><td>The vector to normalize. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aebb664a885e741148b381caeeb4f0dba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebb664a885e741148b381caeeb4f0dba">&#9670;&nbsp;</a></span>dtVperp2D()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float dtVperp2D </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derives the xz-plane 2D perp product of the two vectors. </p>
<p>(uz*vx - ux*vz) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">u</td><td>The LHV vector [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>The RHV vector [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The perp dot product on the xz-plane.</dd></dl>
<p>The vectors are projected onto the xz-plane, so the y-values are ignored. </p>
</div>
</div>
<a id="a865e98b3352fdea9216c36374d1f0b6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a865e98b3352fdea9216c36374d1f0b6a">&#9670;&nbsp;</a></span>dtVscale()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVscale </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Scales the vector by the specified value. </p>
<p>(<code>v</code> * <code>t</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>The vector to scale. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>The scaling factor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a78ab75edc5f87fc90471873c2652ca89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78ab75edc5f87fc90471873c2652ca89">&#9670;&nbsp;</a></span>dtVset()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVset </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>z</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the vector elements to the specified values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The x-value of the vector. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>The y-value of the vector. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">z</td><td>The z-value of the vector. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8b3255050bf09f5459f3c575ba1574b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b3255050bf09f5459f3c575ba1574b4">&#9670;&nbsp;</a></span>dtVsub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void dtVsub </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>v2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a vector subtraction. </p>
<p>(<code>v1</code> - <code>v2</code>) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>The result vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v1</td><td>The base vector. [(x, y, z)] </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">v2</td><td>The vector to subtract from <code>v1</code>. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_49bbc5a28a7ee729bdecc682ba5a63c9.html">Detour</a></li><li class="navelem"><a class="el" href="dir_97c6bac6df0065e0578eb2a70aa0bb50.html">Include</a></li><li class="navelem"><a class="el" href="DetourCommon_8h.html">DetourCommon.h</a></li>
&nbsp;&nbsp;<a href="https://github.com/recastnavigation/recastnavigation">Project Home</a>
| <a href="./License.txt">Licence (ZLib)</a>
| Copyright 2009 Mikko Mononen
</ul>
</div>
</body>
</html>