| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <!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" lang="en-US">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=11"/>
- <meta name="generator" content="Doxygen 1.12.0"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>Jolt Physics: Jolt/Physics/Collision/ActiveEdges.h Source File</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>
- <script type="text/javascript" src="clipboard.js"></script>
- <link href="navtree.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="navtreedata.js"></script>
- <script type="text/javascript" src="navtree.js"></script>
- <script type="text/javascript" src="resize.js"></script>
- <script type="text/javascript" src="cookie.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>
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({
- extensions: ["tex2jax.js"],
- jax: ["input/TeX","output/HTML-CSS"],
- });
- </script>
- <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
- <link href="doxygen.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 id="projectrow">
- <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
- <td id="projectalign">
- <div id="projectname">Jolt Physics
- </div>
- <div id="projectbrief">A multi core friendly Game Physics Engine</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.12.0 -->
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- var searchBox = new SearchBox("searchBox", "search/",'.html');
- /* @license-end */
- </script>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function() { codefold.init(0); });
- /* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function() {
- initMenu('',true,false,'search.php','Search',true);
- $(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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function(){initNavTree('_active_edges_8h_source.html',''); initResizable(true); });
- /* @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">
- <div id="MSearchResults">
- <div class="SRPage">
- <div id="SRIndex">
- <div id="SRResults"></div>
- <div class="SRStatus" id="Loading">Loading...</div>
- <div class="SRStatus" id="Searching">Searching...</div>
- <div class="SRStatus" id="NoMatches">No Matches</div>
- </div>
- </div>
- </div>
- </div>
- <div class="header">
- <div class="headertitle"><div class="title">ActiveEdges.h</div></div>
- </div><!--header-->
- <div class="contents">
- <a href="_active_edges_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
- <div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
- <div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
- <div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
- <div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#pragma once</span></div>
- <div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
- <div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include <<a class="code" href="_closest_point_8h.html">Jolt/Geometry/ClosestPoint.h</a>></span></div>
- <div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
- <div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
- <div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
- <div class="foldopen" id="foldopen00012" data-start="{" data-end="}">
- <div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="namespace_active_edges.html"> 12</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespace_active_edges.html">ActiveEdges</a></div>
- <div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>{</div>
- <div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> IsEdgeActive(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inEdgeDirection, <span class="keywordtype">float</span> inCosThresholdAngle)</div>
- <div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> {</div>
- <div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// If normals are opposite the edges are active (the triangles are back to back)</span></div>
- <div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">float</span> cos_angle_normals = inNormal1.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal2);</div>
- <div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordflow">if</span> (cos_angle_normals < -0.999848f) <span class="comment">// cos(179 degrees)</span></div>
- <div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
- <div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
- <div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Check if concave edge, if so we are not active</span></div>
- <div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">if</span> (inNormal1.<a class="code hl_function" href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Cross</a>(inNormal2).<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inEdgeDirection) < 0.0f)</div>
- <div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
- <div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
- <div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Convex edge, active when angle bigger than threshold</span></div>
- <div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">return</span> cos_angle_normals < inCosThresholdAngle;</div>
- <div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> }</div>
- <div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
- <div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code hl_class" href="class_vec3.html">Vec3</a> FixNormal(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV0, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTriangleNormal, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inActiveEdges, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPoint, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inMovementDirection)</div>
- <div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> {</div>
- <div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Check: All of the edges are active, we have the correct normal already. No need to call this function!</span></div>
- <div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inActiveEdges != 0b111);</div>
- <div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
- <div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// If inNormal would affect movement less than inTriangleNormal use inNormal</span></div>
- <div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// This is done since it is really hard to make a distinction between sliding over a horizontal triangulated grid and hitting an edge (in this case you want to use the triangle normal)</span></div>
- <div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// and sliding over a triangulated grid and grazing a vertical triangle with an inactive edge (in this case using the triangle normal will cause the object to bounce back so we want to use the calculated normal).</span></div>
- <div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// To solve this we take a movement hint to give an indication of what direction our object is moving. If the edge normal results in less motion difference than the triangle normal we use the edge normal.</span></div>
- <div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">float</span> normal_length = inNormal.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
- <div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">float</span> triangle_normal_length = inTriangleNormal.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
- <div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">if</span> (inMovementDirection.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal) * triangle_normal_length < inMovementDirection.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inTriangleNormal) * normal_length)</div>
- <div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> inNormal;</div>
- <div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
- <div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// Check: None of the edges are active, we need to use the triangle normal</span></div>
- <div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">if</span> (inActiveEdges == 0)</div>
- <div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> inTriangleNormal;</div>
- <div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
- <div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// Some edges are active.</span></div>
- <div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// If normal is parallel to the triangle normal we don't need to check the active edges.</span></div>
- <div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">if</span> (inTriangleNormal.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal) > 0.999848f * normal_length * triangle_normal_length) <span class="comment">// cos(1 degree)</span></div>
- <div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">return</span> inNormal;</div>
- <div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
- <div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">const</span> <span class="keywordtype">float</span> cEpsilon = 1.0e-4f;</div>
- <div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">const</span> <span class="keywordtype">float</span> cOneMinusEpsilon = 1.0f - cEpsilon;</div>
- <div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
- <div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> colliding_edge;</div>
- <div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
- <div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Test where the contact point is in the triangle</span></div>
- <div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">float</span> u, v, w;</div>
- <div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_function" href="namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85">ClosestPoint::GetBaryCentricCoordinates</a>(inV0 - inPoint, inV1 - inPoint, inV2 - inPoint, u, v, w);</div>
- <div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">if</span> (u > cOneMinusEpsilon)</div>
- <div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> {</div>
- <div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Colliding with v0, edge 0 or 2 needs to be active</span></div>
- <div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> colliding_edge = 0b101;</div>
- <div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
- <div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v > cOneMinusEpsilon)</div>
- <div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> {</div>
- <div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Colliding with v1, edge 0 or 1 needs to be active</span></div>
- <div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> colliding_edge = 0b011;</div>
- <div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> }</div>
- <div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w > cOneMinusEpsilon)</div>
- <div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> {</div>
- <div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// Colliding with v2, edge 1 or 2 needs to be active</span></div>
- <div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> colliding_edge = 0b110;</div>
- <div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
- <div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (u < cEpsilon)</div>
- <div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> {</div>
- <div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Colliding with edge v1, v2, edge 1 needs to be active</span></div>
- <div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> colliding_edge = 0b010;</div>
- <div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
- <div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v < cEpsilon)</div>
- <div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
- <div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// Colliding with edge v0, v2, edge 2 needs to be active</span></div>
- <div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> colliding_edge = 0b100;</div>
- <div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
- <div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w < cEpsilon)</div>
- <div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
- <div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// Colliding with edge v0, v1, edge 0 needs to be active</span></div>
- <div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> colliding_edge = 0b001;</div>
- <div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
- <div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">else</span></div>
- <div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> {</div>
- <div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// Interior hit</span></div>
- <div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">return</span> inTriangleNormal;</div>
- <div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
- <div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
- <div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// If this edge is active, use the provided normal instead of the triangle normal</span></div>
- <div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> (inActiveEdges & colliding_edge) != 0? inNormal : inTriangleNormal;</div>
- <div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
- <div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span>}</div>
- </div>
- <div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
- <div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
- <div class="ttc" id="a_closest_point_8h_html"><div class="ttname"><a href="_closest_point_8h.html">ClosestPoint.h</a></div></div>
- <div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:501</div></div>
- <div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:500</div></div>
- <div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:425</div></div>
- <div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
- <div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
- <div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
- <div class="ttc" id="aclass_vec3_html_a0e078ff09f69e669db71a2b0e37939ff"><div class="ttname"><a href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Vec3::Dot</a></div><div class="ttdeci">JPH_INLINE float Dot(Vec3Arg inV2) const</div><div class="ttdoc">Dot product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:650</div></div>
- <div class="ttc" id="aclass_vec3_html_a224811af391ccfd1e05282eda22d1de8"><div class="ttname"><a href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Vec3::Cross</a></div><div class="ttdeci">JPH_INLINE Vec3 Cross(Vec3Arg inV2) const</div><div class="ttdoc">Cross product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:595</div></div>
- <div class="ttc" id="aclass_vec3_html_a38a9efffc3f9413f3dd702abc73eb9a2"><div class="ttname"><a href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Vec3::Length</a></div><div class="ttdeci">JPH_INLINE float Length() const</div><div class="ttdoc">Length of vector.</div><div class="ttdef"><b>Definition</b> Vec3.inl:682</div></div>
- <div class="ttc" id="anamespace_active_edges_html"><div class="ttname"><a href="namespace_active_edges.html">ActiveEdges</a></div><div class="ttdoc">An active edge is an edge that either has no neighbouring edge or if the angle between the two connec...</div><div class="ttdef"><b>Definition</b> ActiveEdges.h:13</div></div>
- <div class="ttc" id="anamespace_closest_point_html_a194f91c80641bfd1071c5316705a2c85"><div class="ttname"><a href="namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85">ClosestPoint::GetBaryCentricCoordinates</a></div><div class="ttdeci">bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)</div><div class="ttdef"><b>Definition</b> ClosestPoint.h:18</div></div>
- </div><!-- fragment --></div><!-- contents -->
- </div><!-- doc-content -->
- <!-- start footer part -->
- <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_active_edges_8h.html">ActiveEdges.h</a></li>
- <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
- </ul>
- </div>
- </body>
- </html>
|