    

 ## On this page

  

 

 # rocky\_contact\_api

 Last update: 17.07.2025 

<a id="l00001" name="l00001"></a> 1\#pragma once

<a id="l00002" name="l00002"></a> 2 

<a id="l00003" name="l00003"></a> 3// Includes =======================================================================================

<a id="l00004" name="l00004"></a> 4\#include &lt;rocky20/api/rocky\_contact.hpp&gt;

<a id="l00005" name="l00005"></a> 5\#include &lt;rocky20/api/rocky\_material\_api.hpp&gt;

<a id="l00006" name="l00006"></a> 6\#include &lt;rocky20/device/device\_contact.hpp&gt;

<a id="l00007" name="l00007"></a> 7 

<a id="l00008" name="l00008"></a> 8 

<a id="l00009" name="l00009"></a> 9// ================================================================================================

<a id="l00010" name="l00010"></a> 10// IRockyContact

<a id="l00011" name="l00011"></a> 11// ================================================================================================

<a id="l00012" name="l00012"></a> 12 

<a id="l00045" name="l00045"></a>[ 45](structIRockyContact.xhtml)struct [IRockyContact](structIRockyContact.xhtml)

<a id="l00046" name="l00046"></a> 46{

<a id="l00052" name="l00052"></a> 52 ROCKY_FUNCTIONS [IRockyMaterial](structIRockyMaterial.xhtml) [get\_home\_material](structIRockyContact.xhtml#ae1890c831f2bb90143d3459352dee316)() const;

<a id="l00053" name="l00053"></a> 53 

<a id="l00059" name="l00059"></a> 59 ROCKY_FUNCTIONS [IRockyMaterial](structIRockyMaterial.xhtml) [get\_near\_material](structIRockyContact.xhtml#a8ec1a085944bc63f455c4007531aea61)() const;

<a id="l00060" name="l00060"></a> 60 

<a id="l00066" name="l00066"></a> 66 ROCKY_FUNCTIONS [IRockyMaterialInteraction](structIRockyMaterialInteraction.xhtml) [get\_material\_interaction](structIRockyContact.xhtml#aff52effeb3fe2a5015ac05022df63731)() const;

<a id="l00067" name="l00067"></a> 67 

<a id="l00074" name="l00074"></a> 74 ROCKY_FUNCTIONS int [get\_material\_interaction\_index](structIRockyContact.xhtml#ab05070dcc53936225c506abfc2645ff4)() const;

<a id="l00075" name="l00075"></a> 75 

<a id="l00081" name="l00081"></a> 81 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_home\_particle](structIRockyContact.xhtml#aed9e6fcfa92276bc514e21564f0603fb)() const;

<a id="l00082" name="l00082"></a> 82 

<a id="l00087" name="l00087"></a> 87 ROCKY_FUNCTIONS int [get\_home\_particle\_group\_index](structIRockyContact.xhtml#a2cd1c1e40befd0cf6910d663432c3695)() const;

<a id="l00088" name="l00088"></a> 88 

<a id="l00094" name="l00094"></a> 94 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_near\_particle](structIRockyContact.xhtml#a6c85a39640365d283d22437792c51f0f)() const;

<a id="l00095" name="l00095"></a> 95 

<a id="l00100" name="l00100"></a> 100 ROCKY_FUNCTIONS int [get\_near\_particle\_group\_index](structIRockyContact.xhtml#a244d24fa1cc78a23d6f4553d5797ab0b)() const;

<a id="l00101" name="l00101"></a> 101 

<a id="l00107" name="l00107"></a> 107 ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [get\_near\_triangle](structIRockyContact.xhtml#aa2479a695d48de98b5caf29d52134b8a)() const;

<a id="l00108" name="l00108"></a> 108 

<a id="l00113" name="l00113"></a> 113 ROCKY_FUNCTIONS int [get\_near\_geometry\_index](structIRockyContact.xhtml#a3f551f05cfe40b8c6b95b3df8a311ca4)() const;

<a id="l00114" name="l00114"></a> 114 

<a id="l00118" name="l00118"></a> 118 ROCKY_FUNCTIONS bool [is\_particle\_particle\_contact](structIRockyContact.xhtml#a0a27611118aab7a27fb6c1e53939cba1)() const;

<a id="l00119" name="l00119"></a> 119 

<a id="l00123" name="l00123"></a> 123 ROCKY_FUNCTIONS bool [is\_particle\_triangle\_contact](structIRockyContact.xhtml#a9de7fba112ea033f15e8ee1fb0305960)() const;

<a id="l00124" name="l00124"></a> 124 

<a id="l00129" name="l00129"></a> 129 ROCKY_FUNCTIONS bool [is\_frictional](structIRockyContact.xhtml#ae83dc410da7f54a0badbfb0c75fdaa4b)() const;

<a id="l00130" name="l00130"></a> 130 

<a id="l00135" name="l00135"></a> 135 ROCKY_FUNCTIONS bool [is\_adhesive](structIRockyContact.xhtml#a46453e5b227065edb55c7b67177584f9)() const;

<a id="l00136" name="l00136"></a> 136 

<a id="l00140" name="l00140"></a> 140 ROCKY_FUNCTIONS double [get\_previous\_overlap](structIRockyContact.xhtml#ab6c8fca161c75cf870eb059f9ed3b11c)() const;

<a id="l00141" name="l00141"></a> 141 

<a id="l00155" name="l00155"></a> 155 ROCKY_FUNCTIONS double [get\_overlap](structIRockyContact.xhtml#a26aef3fac3655fe686283be4bd2fe7f0)() const;

<a id="l00156" name="l00156"></a> 156 

<a id="l00161" name="l00161"></a> 161 ROCKY_FUNCTIONS double3 [get\_normal\_unit\_vector](structIRockyContact.xhtml#a04a9d6e5ba1478bc00d4955bcaa1a2fd)() const;

<a id="l00162" name="l00162"></a> 162 

<a id="l00167" name="l00167"></a> 167 ROCKY_FUNCTIONS double3 [get\_contact\_position](structIRockyContact.xhtml#aafeae8748cf36743d08f4570b198f001)() const;

<a id="l00168" name="l00168"></a> 168 

<a id="l00176" name="l00176"></a> 176 ROCKY_FUNCTIONS double [get\_scale\_factor](structIRockyContact.xhtml#ad0940d0dcefd839aaba3770689a034bb)() const;

<a id="l00177" name="l00177"></a> 177 

<a id="l00182" name="l00182"></a> 182 ROCKY_FUNCTIONS bool [just\_started\_frictional](structIRockyContact.xhtml#ab280ec2c5bc3fe90ca4822939514d3b5)() const;

<a id="l00183" name="l00183"></a> 183 

<a id="l00188" name="l00188"></a> 188 ROCKY_FUNCTIONS bool [just\_started\_adhesive](structIRockyContact.xhtml#a33e06ba2b8ca80ff15946ac27885dbd7)() const;

<a id="l00189" name="l00189"></a> 189 

<a id="l00197" name="l00197"></a> 197 ROCKY_FUNCTIONS bool [just\_finished\_frictional](structIRockyContact.xhtml#afbda49c86a367e9a4f20492ff5007333)() const;

<a id="l00198" name="l00198"></a> 198 

<a id="l00206" name="l00206"></a> 206 ROCKY_FUNCTIONS bool [just\_finished\_adhesive](structIRockyContact.xhtml#a52439d8dd07c36c9475eb248d7dcb38e)() const;

<a id="l00207" name="l00207"></a> 207 

<a id="l00212" name="l00212"></a> 212 ROCKY_FUNCTIONS bool [is\_loading](structIRockyContact.xhtml#a395c9be7e50adea7317a808279faec0c)() const;

<a id="l00213" name="l00213"></a> 213 

<a id="l00218" name="l00218"></a> 218 ROCKY_FUNCTIONS bool [is\_unloading](structIRockyContact.xhtml#abe5cd05335fe5264bc05d9808b23a9fe)() const;

<a id="l00219" name="l00219"></a> 219 

<a id="l00224" name="l00224"></a> 224 ROCKY_FUNCTIONS bool [is\_positive\_oriented](structIRockyContact.xhtml#a79c5a7fb09b962d62eefe61f27cddcd7)() const;

<a id="l00225" name="l00225"></a> 225 

<a id="l00229" name="l00229"></a> 229 ROCKY_FUNCTIONS double [get\_current\_time](structIRockyContact.xhtml#a6cc48e3759e515587e236d283d904f00)() const;

<a id="l00230" name="l00230"></a> 230 

<a id="l00234" name="l00234"></a> 234 ROCKY_FUNCTIONS double [get\_timestep](structIRockyContact.xhtml#a4cc9eb65e78d4eb4cbe34bb7c7baf85d)() const;

<a id="l00235" name="l00235"></a> 235 

<a id="l00240" name="l00240"></a> 240 ROCKY_FUNCTIONS [IRockyContactScalars](structIRockyContactScalars.xhtml) [get\_particle\_contact\_scalars](structIRockyContact.xhtml#af937221f53319cd4a30871829e3cc7e0)() const;

<a id="l00241" name="l00241"></a> 241 

<a id="l00246" name="l00246"></a> 246 ROCKY_FUNCTIONS [IRockyContactScalars](structIRockyContactScalars.xhtml) [get\_triangle\_contact\_scalars](structIRockyContact.xhtml#ab14e84d2a580a95b2fbcb3d1f5c92a25)() const;

<a id="l00247" name="l00247"></a> 247 

<a id="l00255" name="l00255"></a> 255 ROCKY_FUNCTIONS double [get\_home\_stiffness](structIRockyContact.xhtml#a1816640d165bb54d339ee9aaf2873046)() const;

<a id="l00256" name="l00256"></a> 256 

<a id="l00264" name="l00264"></a> 264 ROCKY_FUNCTIONS double [get\_near\_stiffness](structIRockyContact.xhtml#aa49e3ddd3916fabf25a90e8fefb5cc4c)() const;

<a id="l00265" name="l00265"></a> 265 

<a id="l00272" name="l00272"></a> 272 ROCKY_FUNCTIONS double [get\_equivalent\_stiffness](structIRockyContact.xhtml#aa373c6f200518285d6bb85817d12ccae)() const;

<a id="l00273" name="l00273"></a> 273 

<a id="l00280" name="l00280"></a> 280 ROCKY_FUNCTIONS double [get\_home\_stiffness\_fraction](structIRockyContact.xhtml#aff778f8122d9ea2f81da59e1ff279b45)() const;

<a id="l00281" name="l00281"></a> 281 

<a id="l00289" name="l00289"></a> 289 ROCKY_FUNCTIONS double [get\_reduced\_young\_modulus](structIRockyContact.xhtml#acc8512372077732bfe12aa3483f2e35b)() const;

<a id="l00290" name="l00290"></a> 290 

<a id="l00295" name="l00295"></a> 295 ROCKY_FUNCTIONS double [get\_equivalent\_mass](structIRockyContact.xhtml#ae4f9b67c0a4577089b37854e9fa5fe9b)() const;

<a id="l00296" name="l00296"></a> 296 

<a id="l00301" name="l00301"></a> 301 ROCKY_FUNCTIONS double [get\_equivalent\_radius](structIRockyContact.xhtml#a473c87b27145d22e24f15e67ab160d89)() const;

<a id="l00302" name="l00302"></a> 302 

<a id="l00315" name="l00315"></a> 315 ROCKY_FUNCTIONS double [get\_normal\_contact\_force](structIRockyContact.xhtml#a9e085d9bb5684b5d34c33525bb1d021c)() const;

<a id="l00316" name="l00316"></a> 316 

<a id="l00336" name="l00336"></a> 336 ROCKY_FUNCTIONS double3 [get\_tangential\_contact\_force](structIRockyContact.xhtml#aca5aae0a4d0c2033bbad4da067657704)() const;

<a id="l00337" name="l00337"></a> 337 

<a id="l00357" name="l00357"></a> 357 ROCKY_FUNCTIONS double3 [calculate\_relative\_velocity](structIRockyContact.xhtml#af05c086a0b75c761b13fa744061789e4)() const;

<a id="l00358" name="l00358"></a> 358 

<a id="l00365" name="l00365"></a> 365 ROCKY_FUNCTIONS double [get\_restitution\_coefficient](structIRockyContact.xhtml#a6e335a5d032dded094c6b36ad5ea23c1)() const;

<a id="l00366" name="l00366"></a> 366 

<a id="l00378" name="l00378"></a> 378 ROCKY_FUNCTIONS void [set\_restitution\_coefficient](structIRockyContact.xhtml#ad5f45118ba3d4bdedd2194640fc4c79d)(double value);

<a id="l00379" name="l00379"></a> 379 

<a id="l00386" name="l00386"></a> 386 ROCKY_FUNCTIONS double [get\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#a00daba07ec1b0b1df0be1e8d761a408e)() const;

<a id="l00387" name="l00387"></a> 387 

<a id="l00399" name="l00399"></a> 399 ROCKY_FUNCTIONS void [set\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#aaa4594d0c921983edc1d1033661c6500)(double value);

<a id="l00400" name="l00400"></a> 400 

<a id="l00407" name="l00407"></a> 407 ROCKY_FUNCTIONS double [get\_static\_friction\_coefficient](structIRockyContact.xhtml#a9b6c747c62166e351d363d693e18c46a)() const;

<a id="l00408" name="l00408"></a> 408 

<a id="l00420" name="l00420"></a> 420 ROCKY_FUNCTIONS void [set\_static\_friction\_coefficient](structIRockyContact.xhtml#a5a3233239461058a2f33a9f49494666c)(double value);

<a id="l00421" name="l00421"></a> 421 

<a id="l00429" name="l00429"></a> 429 ROCKY_FUNCTIONS double [get\_sliding\_distance](structIRockyContact.xhtml#afe041153be8e43d3e5d7c7a500a49501)() const;

<a id="l00430" name="l00430"></a> 430 

<a id="l00438" name="l00438"></a> 438 ROCKY_FUNCTIONS bool [get\_is\_sliding\_marker](structIRockyContact.xhtml#a1acfe6d4f8e36c9fd417a658aac1c041)() const;

<a id="l00439" name="l00439"></a> 439 

<a id="l00447" name="l00447"></a> 447 ROCKY_FUNCTIONS double [get\_normal\_relative\_velocity](structIRockyContact.xhtml#a379476b7b01576be8fc0eb3f0dde7a1e)() const;

<a id="l00448" name="l00448"></a> 448 

<a id="l00456" name="l00456"></a> 456 ROCKY_FUNCTIONS double3 [get\_tangential\_relative\_velocity](structIRockyContact.xhtml#a9fab3f0e6f78ea64e96209fbbd540b85)() const;

<a id="l00457" name="l00457"></a> 457 

<a id="l00465" name="l00465"></a> 465 ROCKY_FUNCTIONS double [get\_normal\_adhesion\_force](structIRockyContact.xhtml#a21587a9de6f69f4af1d215c3879fca66)() const;

<a id="l00466" name="l00466"></a> 466 

<a id="l00474" name="l00474"></a> 474 ROCKY_FUNCTIONS double3 [get\_tangential\_adhesion\_force](structIRockyContact.xhtml#a20d7ffad55e1c1c28c848eb3b09c41f2)() const;

<a id="l00475" name="l00475"></a> 475 

<a id="l00482" name="l00482"></a> 482 ROCKY_FUNCTIONS double3 [get\_previous\_normal\_vector](structIRockyContact.xhtml#afa684887b3dcfad056850ccfdf399ec3)() const;

<a id="l00483" name="l00483"></a> 483 

<a id="l00492" name="l00492"></a> 492 ROCKY_FUNCTIONS double3 [get\_previous\_moment\_vector](structIRockyContact.xhtml#a4d10fc8ec36500e0a8f6673f3e7628fd)() const;

<a id="l00493" name="l00493"></a> 493 

<a id="l00506" name="l00506"></a> 506 ROCKY_FUNCTIONS void [set\_previous\_moment\_vector](structIRockyContact.xhtml#a302215189897e9ad39f8d7a3ff571d6c)(double3 value);

<a id="l00507" name="l00507"></a> 507 

<a id="l00509" name="l00509"></a> 509 RockyContact *_impl;

<a id="l00510" name="l00510"></a> 510 double current_time;

<a id="l00512" name="l00512"></a> 512};



<a id="l00513" name="l00513"></a> 513 

<a id="l00514" name="l00514"></a>[ 514](structIRockyContact.xhtml#ae1890c831f2bb90143d3459352dee316)inline ROCKY_FUNCTIONS [IRockyMaterial](structIRockyMaterial.xhtml) [IRockyContact::get\_home\_material](structIRockyContact.xhtml#ae1890c831f2bb90143d3459352dee316)() const

<a id="l00515" name="l00515"></a> 515{

<a id="l00516" name="l00516"></a> 516 return [IRockyMaterial](structIRockyMaterial.xhtml)(this-&gt;_impl-&gt;get_home_material());

<a id="l00517" name="l00517"></a> 517}



<a id="l00518" name="l00518"></a> 518 

<a id="l00519" name="l00519"></a>[ 519](structIRockyContact.xhtml#a8ec1a085944bc63f455c4007531aea61)inline ROCKY_FUNCTIONS [IRockyMaterial](structIRockyMaterial.xhtml) [IRockyContact::get\_near\_material](structIRockyContact.xhtml#a8ec1a085944bc63f455c4007531aea61)() const

<a id="l00520" name="l00520"></a> 520{

<a id="l00521" name="l00521"></a> 521 return [IRockyMaterial](structIRockyMaterial.xhtml)(this-&gt;_impl-&gt;get_near_material());

<a id="l00522" name="l00522"></a> 522}



<a id="l00523" name="l00523"></a> 523 

<a id="l00524" name="l00524"></a>[ 524](structIRockyContact.xhtml#aff52effeb3fe2a5015ac05022df63731)inline ROCKY_FUNCTIONS [IRockyMaterialInteraction](structIRockyMaterialInteraction.xhtml) [IRockyContact::get\_material\_interaction](structIRockyContact.xhtml#aff52effeb3fe2a5015ac05022df63731)() const

<a id="l00525" name="l00525"></a> 525{

<a id="l00526" name="l00526"></a> 526 return [IRockyMaterialInteraction](structIRockyMaterialInteraction.xhtml)(this-&gt;_impl-&gt;get_material_interaction());

<a id="l00527" name="l00527"></a> 527}



<a id="l00528" name="l00528"></a> 528 

<a id="l00529" name="l00529"></a>[ 529](structIRockyContact.xhtml#ab05070dcc53936225c506abfc2645ff4)inline ROCKY_FUNCTIONS int [IRockyContact::get\_material\_interaction\_index](structIRockyContact.xhtml#ab05070dcc53936225c506abfc2645ff4)() const

<a id="l00530" name="l00530"></a> 530{

<a id="l00531" name="l00531"></a> 531 return this-&gt;_impl-&gt;get_material_interaction_index();

<a id="l00532" name="l00532"></a> 532}



<a id="l00533" name="l00533"></a> 533 

<a id="l00534" name="l00534"></a>[ 534](structIRockyContact.xhtml#a0a27611118aab7a27fb6c1e53939cba1)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_particle\_particle\_contact](structIRockyContact.xhtml#a0a27611118aab7a27fb6c1e53939cba1)() const

<a id="l00535" name="l00535"></a> 535{

<a id="l00536" name="l00536"></a> 536 return this-&gt;_impl-&gt;is_particle_particle();

<a id="l00537" name="l00537"></a> 537}



<a id="l00538" name="l00538"></a> 538 

<a id="l00539" name="l00539"></a>[ 539](structIRockyContact.xhtml#a9de7fba112ea033f15e8ee1fb0305960)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_particle\_triangle\_contact](structIRockyContact.xhtml#a9de7fba112ea033f15e8ee1fb0305960)() const

<a id="l00540" name="l00540"></a> 540{

<a id="l00541" name="l00541"></a> 541 return this-&gt;_impl-&gt;is_particle_triangle();

<a id="l00542" name="l00542"></a> 542}



<a id="l00543" name="l00543"></a> 543 

<a id="l00544" name="l00544"></a>[ 544](structIRockyContact.xhtml#ae83dc410da7f54a0badbfb0c75fdaa4b)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_frictional](structIRockyContact.xhtml#ae83dc410da7f54a0badbfb0c75fdaa4b)() const

<a id="l00545" name="l00545"></a> 545{

<a id="l00546" name="l00546"></a> 546 return this-&gt;_impl-&gt;is_frictional();

<a id="l00547" name="l00547"></a> 547}



<a id="l00548" name="l00548"></a> 548 

<a id="l00549" name="l00549"></a>[ 549](structIRockyContact.xhtml#a46453e5b227065edb55c7b67177584f9)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_adhesive](structIRockyContact.xhtml#a46453e5b227065edb55c7b67177584f9)() const

<a id="l00550" name="l00550"></a> 550{

<a id="l00551" name="l00551"></a> 551 return this-&gt;_impl-&gt;is_adhesive();

<a id="l00552" name="l00552"></a> 552}



<a id="l00553" name="l00553"></a> 553 

<a id="l00554" name="l00554"></a>[ 554](structIRockyContact.xhtml#aed9e6fcfa92276bc514e21564f0603fb)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyContact::get\_home\_particle](structIRockyContact.xhtml#aed9e6fcfa92276bc514e21564f0603fb)() const

<a id="l00555" name="l00555"></a> 555{

<a id="l00556" name="l00556"></a> 556 return [IRockyParticle](structIRockyParticle.xhtml)(this-&gt;_impl-&gt;get_home_particle_index(), this-&gt;_impl-&gt;model);

<a id="l00557" name="l00557"></a> 557}



<a id="l00558" name="l00558"></a> 558 

<a id="l00559" name="l00559"></a>[ 559](structIRockyContact.xhtml#a2cd1c1e40befd0cf6910d663432c3695)inline ROCKY_FUNCTIONS int [IRockyContact::get\_home\_particle\_group\_index](structIRockyContact.xhtml#a2cd1c1e40befd0cf6910d663432c3695)() const

<a id="l00560" name="l00560"></a> 560{

<a id="l00561" name="l00561"></a> 561 return this-&gt;_impl-&gt;get_home_particle_base_group_index();

<a id="l00562" name="l00562"></a> 562}



<a id="l00563" name="l00563"></a> 563 

<a id="l00564" name="l00564"></a>[ 564](structIRockyContact.xhtml#a6c85a39640365d283d22437792c51f0f)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyContact::get\_near\_particle](structIRockyContact.xhtml#a6c85a39640365d283d22437792c51f0f)() const

<a id="l00565" name="l00565"></a> 565{

<a id="l00566" name="l00566"></a> 566 return [IRockyParticle](structIRockyParticle.xhtml)(this-&gt;_impl-&gt;get_near_particle_index(), this-&gt;_impl-&gt;model);

<a id="l00567" name="l00567"></a> 567}



<a id="l00568" name="l00568"></a> 568 

<a id="l00569" name="l00569"></a>[ 569](structIRockyContact.xhtml#a244d24fa1cc78a23d6f4553d5797ab0b)inline ROCKY_FUNCTIONS int [IRockyContact::get\_near\_particle\_group\_index](structIRockyContact.xhtml#a244d24fa1cc78a23d6f4553d5797ab0b)() const

<a id="l00570" name="l00570"></a> 570{

<a id="l00571" name="l00571"></a> 571 return this-&gt;_impl-&gt;get_near_particle_base_group_index();

<a id="l00572" name="l00572"></a> 572}



<a id="l00573" name="l00573"></a> 573 

<a id="l00574" name="l00574"></a>[ 574](structIRockyContact.xhtml#aa2479a695d48de98b5caf29d52134b8a)inline ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [IRockyContact::get\_near\_triangle](structIRockyContact.xhtml#aa2479a695d48de98b5caf29d52134b8a)() const

<a id="l00575" name="l00575"></a> 575{

<a id="l00576" name="l00576"></a> 576 return [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml)(this-&gt;_impl-&gt;get_near_triangle_index(), this-&gt;_impl-&gt;model);

<a id="l00577" name="l00577"></a> 577}



<a id="l00578" name="l00578"></a> 578 

<a id="l00579" name="l00579"></a>[ 579](structIRockyContact.xhtml#a3f551f05cfe40b8c6b95b3df8a311ca4)inline ROCKY_FUNCTIONS int [IRockyContact::get\_near\_geometry\_index](structIRockyContact.xhtml#a3f551f05cfe40b8c6b95b3df8a311ca4)() const

<a id="l00580" name="l00580"></a> 580{

<a id="l00581" name="l00581"></a> 581 return this-&gt;_impl-&gt;get_near_boundary_index();

<a id="l00582" name="l00582"></a> 582}



<a id="l00583" name="l00583"></a> 583 

<a id="l00584" name="l00584"></a>[ 584](structIRockyContact.xhtml#a26aef3fac3655fe686283be4bd2fe7f0)inline ROCKY_FUNCTIONS double [IRockyContact::get\_overlap](structIRockyContact.xhtml#a26aef3fac3655fe686283be4bd2fe7f0)() const

<a id="l00585" name="l00585"></a> 585{

<a id="l00586" name="l00586"></a> 586 return this-&gt;_impl-&gt;get_overlap();

<a id="l00587" name="l00587"></a> 587}



<a id="l00588" name="l00588"></a> 588 

<a id="l00589" name="l00589"></a>[ 589](structIRockyContact.xhtml#ab6c8fca161c75cf870eb059f9ed3b11c)inline ROCKY_FUNCTIONS double [IRockyContact::get\_previous\_overlap](structIRockyContact.xhtml#ab6c8fca161c75cf870eb059f9ed3b11c)() const

<a id="l00590" name="l00590"></a> 590{

<a id="l00591" name="l00591"></a> 591 return this-&gt;_impl-&gt;get_previous_overlap();

<a id="l00592" name="l00592"></a> 592}



<a id="l00593" name="l00593"></a> 593 

<a id="l00594" name="l00594"></a>[ 594](structIRockyContact.xhtml#a04a9d6e5ba1478bc00d4955bcaa1a2fd)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_normal\_unit\_vector](structIRockyContact.xhtml#a04a9d6e5ba1478bc00d4955bcaa1a2fd)() const

<a id="l00595" name="l00595"></a> 595{

<a id="l00596" name="l00596"></a> 596 return this-&gt;_impl-&gt;get_normal_unit_vector();

<a id="l00597" name="l00597"></a> 597}



<a id="l00598" name="l00598"></a> 598 

<a id="l00599" name="l00599"></a>[ 599](structIRockyContact.xhtml#aafeae8748cf36743d08f4570b198f001)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_contact\_position](structIRockyContact.xhtml#aafeae8748cf36743d08f4570b198f001)() const

<a id="l00600" name="l00600"></a> 600{

<a id="l00601" name="l00601"></a> 601 return this-&gt;_impl-&gt;get_contact_position();

<a id="l00602" name="l00602"></a> 602}



<a id="l00603" name="l00603"></a> 603 

<a id="l00604" name="l00604"></a>[ 604](structIRockyContact.xhtml#ad0940d0dcefd839aaba3770689a034bb)inline ROCKY_FUNCTIONS double [IRockyContact::get\_scale\_factor](structIRockyContact.xhtml#ad0940d0dcefd839aaba3770689a034bb)() const

<a id="l00605" name="l00605"></a> 605{

<a id="l00606" name="l00606"></a> 606 return this-&gt;_impl-&gt;get_scale_factor();

<a id="l00607" name="l00607"></a> 607}



<a id="l00608" name="l00608"></a> 608 

<a id="l00609" name="l00609"></a>[ 609](structIRockyContact.xhtml#a6cc48e3759e515587e236d283d904f00)inline ROCKY_FUNCTIONS double [IRockyContact::get\_current\_time](structIRockyContact.xhtml#a6cc48e3759e515587e236d283d904f00)() const

<a id="l00610" name="l00610"></a> 610{

<a id="l00611" name="l00611"></a> 611 return this-&gt;current_time;

<a id="l00612" name="l00612"></a> 612}



<a id="l00613" name="l00613"></a> 613 

<a id="l00614" name="l00614"></a>[ 614](structIRockyContact.xhtml#a4cc9eb65e78d4eb4cbe34bb7c7baf85d)inline ROCKY_FUNCTIONS double [IRockyContact::get\_timestep](structIRockyContact.xhtml#a4cc9eb65e78d4eb4cbe34bb7c7baf85d)() const

<a id="l00615" name="l00615"></a> 615{

<a id="l00616" name="l00616"></a> 616 return this-&gt;_impl-&gt;get_timestep();

<a id="l00617" name="l00617"></a> 617}



<a id="l00618" name="l00618"></a> 618 

<a id="l00619" name="l00619"></a>[ 619](structIRockyContact.xhtml#ab280ec2c5bc3fe90ca4822939514d3b5)inline ROCKY_FUNCTIONS bool [IRockyContact::just\_started\_frictional](structIRockyContact.xhtml#ab280ec2c5bc3fe90ca4822939514d3b5)() const

<a id="l00620" name="l00620"></a> 620{

<a id="l00621" name="l00621"></a> 621 return this-&gt;_impl-&gt;just_started_frictional();

<a id="l00622" name="l00622"></a> 622}



<a id="l00623" name="l00623"></a> 623 

<a id="l00624" name="l00624"></a>[ 624](structIRockyContact.xhtml#a33e06ba2b8ca80ff15946ac27885dbd7)inline ROCKY_FUNCTIONS bool [IRockyContact::just\_started\_adhesive](structIRockyContact.xhtml#a33e06ba2b8ca80ff15946ac27885dbd7)() const

<a id="l00625" name="l00625"></a> 625{

<a id="l00626" name="l00626"></a> 626 return this-&gt;_impl-&gt;just_started_adhesive();

<a id="l00627" name="l00627"></a> 627}



<a id="l00628" name="l00628"></a> 628 

<a id="l00629" name="l00629"></a>[ 629](structIRockyContact.xhtml#afbda49c86a367e9a4f20492ff5007333)inline ROCKY_FUNCTIONS bool [IRockyContact::just\_finished\_frictional](structIRockyContact.xhtml#afbda49c86a367e9a4f20492ff5007333)() const

<a id="l00630" name="l00630"></a> 630{

<a id="l00631" name="l00631"></a> 631 return this-&gt;_impl-&gt;just_finished_frictional();

<a id="l00632" name="l00632"></a> 632}



<a id="l00633" name="l00633"></a> 633 

<a id="l00634" name="l00634"></a>[ 634](structIRockyContact.xhtml#a52439d8dd07c36c9475eb248d7dcb38e)inline ROCKY_FUNCTIONS bool [IRockyContact::just\_finished\_adhesive](structIRockyContact.xhtml#a52439d8dd07c36c9475eb248d7dcb38e)() const

<a id="l00635" name="l00635"></a> 635{

<a id="l00636" name="l00636"></a> 636 return this-&gt;_impl-&gt;just_finished_adhesive();

<a id="l00637" name="l00637"></a> 637}



<a id="l00638" name="l00638"></a> 638 

<a id="l00639" name="l00639"></a>[ 639](structIRockyContact.xhtml#a395c9be7e50adea7317a808279faec0c)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_loading](structIRockyContact.xhtml#a395c9be7e50adea7317a808279faec0c)() const

<a id="l00640" name="l00640"></a> 640{

<a id="l00641" name="l00641"></a> 641 return this-&gt;_impl-&gt;is_loading();

<a id="l00642" name="l00642"></a> 642}



<a id="l00643" name="l00643"></a> 643 

<a id="l00644" name="l00644"></a>[ 644](structIRockyContact.xhtml#abe5cd05335fe5264bc05d9808b23a9fe)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_unloading](structIRockyContact.xhtml#abe5cd05335fe5264bc05d9808b23a9fe)() const

<a id="l00645" name="l00645"></a> 645{

<a id="l00646" name="l00646"></a> 646 return this-&gt;_impl-&gt;is_unloading();

<a id="l00647" name="l00647"></a> 647}



<a id="l00648" name="l00648"></a> 648 

<a id="l00649" name="l00649"></a>[ 649](structIRockyContact.xhtml#a9e085d9bb5684b5d34c33525bb1d021c)inline ROCKY_FUNCTIONS double [IRockyContact::get\_normal\_contact\_force](structIRockyContact.xhtml#a9e085d9bb5684b5d34c33525bb1d021c)() const

<a id="l00650" name="l00650"></a> 650{

<a id="l00651" name="l00651"></a> 651 return this-&gt;_impl-&gt;get_scaled_normal_force();

<a id="l00652" name="l00652"></a> 652}



<a id="l00653" name="l00653"></a> 653 

<a id="l00654" name="l00654"></a>[ 654](structIRockyContact.xhtml#aca5aae0a4d0c2033bbad4da067657704)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_tangential\_contact\_force](structIRockyContact.xhtml#aca5aae0a4d0c2033bbad4da067657704)() const

<a id="l00655" name="l00655"></a> 655{

<a id="l00656" name="l00656"></a> 656 if (this-&gt;_impl-&gt;get_scalars().has_tangential_force_enabled())

<a id="l00657" name="l00657"></a> 657 return this-&gt;_impl-&gt;get_scaled_tangential_force();

<a id="l00658" name="l00658"></a> 658 else

<a id="l00659" name="l00659"></a> 659 return double3{};

<a id="l00660" name="l00660"></a> 660}



<a id="l00661" name="l00661"></a> 661 

<a id="l00662" name="l00662"></a>[ 662](structIRockyContact.xhtml#a79c5a7fb09b962d62eefe61f27cddcd7)inline ROCKY_FUNCTIONS bool [IRockyContact::is\_positive\_oriented](structIRockyContact.xhtml#a79c5a7fb09b962d62eefe61f27cddcd7)() const 

<a id="l00663" name="l00663"></a> 663{

<a id="l00664" name="l00664"></a> 664 return this-&gt;_impl-&gt;is_positive_oriented();

<a id="l00665" name="l00665"></a> 665}



<a id="l00666" name="l00666"></a> 666 

<a id="l00667" name="l00667"></a> 667// Composite properties

<a id="l00668" name="l00668"></a> 668 

<a id="l00669" name="l00669"></a>[ 669](structIRockyContact.xhtml#a1816640d165bb54d339ee9aaf2873046)inline ROCKY_FUNCTIONS double [IRockyContact::get\_home\_stiffness](structIRockyContact.xhtml#a1816640d165bb54d339ee9aaf2873046)() const

<a id="l00670" name="l00670"></a> 670{

<a id="l00671" name="l00671"></a> 671 return this-&gt;_impl-&gt;get_home_stiffness();

<a id="l00672" name="l00672"></a> 672}



<a id="l00673" name="l00673"></a> 673 

<a id="l00674" name="l00674"></a>[ 674](structIRockyContact.xhtml#aa49e3ddd3916fabf25a90e8fefb5cc4c)inline ROCKY_FUNCTIONS double [IRockyContact::get\_near\_stiffness](structIRockyContact.xhtml#aa49e3ddd3916fabf25a90e8fefb5cc4c)() const

<a id="l00675" name="l00675"></a> 675{

<a id="l00676" name="l00676"></a> 676 return this-&gt;_impl-&gt;get_near_stiffness();

<a id="l00677" name="l00677"></a> 677}



<a id="l00678" name="l00678"></a> 678 

<a id="l00679" name="l00679"></a>[ 679](structIRockyContact.xhtml#aa373c6f200518285d6bb85817d12ccae)inline ROCKY_FUNCTIONS double [IRockyContact::get\_equivalent\_stiffness](structIRockyContact.xhtml#aa373c6f200518285d6bb85817d12ccae)() const

<a id="l00680" name="l00680"></a> 680{

<a id="l00681" name="l00681"></a> 681 return this-&gt;_impl-&gt;get_equivalent_stiffness();

<a id="l00682" name="l00682"></a> 682}



<a id="l00683" name="l00683"></a> 683 

<a id="l00684" name="l00684"></a>[ 684](structIRockyContact.xhtml#aff778f8122d9ea2f81da59e1ff279b45)inline ROCKY_FUNCTIONS double [IRockyContact::get\_home\_stiffness\_fraction](structIRockyContact.xhtml#aff778f8122d9ea2f81da59e1ff279b45)() const

<a id="l00685" name="l00685"></a> 685{

<a id="l00686" name="l00686"></a> 686 return this-&gt;_impl-&gt;get_home_stiffness_fraction();

<a id="l00687" name="l00687"></a> 687}



<a id="l00688" name="l00688"></a> 688 

<a id="l00689" name="l00689"></a>[ 689](structIRockyContact.xhtml#acc8512372077732bfe12aa3483f2e35b)inline ROCKY_FUNCTIONS double [IRockyContact::get\_reduced\_young\_modulus](structIRockyContact.xhtml#acc8512372077732bfe12aa3483f2e35b)() const

<a id="l00690" name="l00690"></a> 690{

<a id="l00691" name="l00691"></a> 691 return this-&gt;_impl-&gt;get_reduced_young_modulus();

<a id="l00692" name="l00692"></a> 692}



<a id="l00693" name="l00693"></a> 693 

<a id="l00694" name="l00694"></a>[ 694](structIRockyContact.xhtml#ae4f9b67c0a4577089b37854e9fa5fe9b)inline ROCKY_FUNCTIONS double [IRockyContact::get\_equivalent\_mass](structIRockyContact.xhtml#ae4f9b67c0a4577089b37854e9fa5fe9b)() const

<a id="l00695" name="l00695"></a> 695{

<a id="l00696" name="l00696"></a> 696 return this-&gt;_impl-&gt;get_equivalent_mass();

<a id="l00697" name="l00697"></a> 697}



<a id="l00698" name="l00698"></a> 698 

<a id="l00699" name="l00699"></a>[ 699](structIRockyContact.xhtml#a473c87b27145d22e24f15e67ab160d89)inline ROCKY_FUNCTIONS double [IRockyContact::get\_equivalent\_radius](structIRockyContact.xhtml#a473c87b27145d22e24f15e67ab160d89)() const

<a id="l00700" name="l00700"></a> 700{

<a id="l00701" name="l00701"></a> 701 return this-&gt;_impl-&gt;get_equivalent_radius();

<a id="l00702" name="l00702"></a> 702}



<a id="l00703" name="l00703"></a> 703 

<a id="l00704" name="l00704"></a>[ 704](structIRockyContact.xhtml#af05c086a0b75c761b13fa744061789e4)inline ROCKY_FUNCTIONS double3 [IRockyContact::calculate\_relative\_velocity](structIRockyContact.xhtml#af05c086a0b75c761b13fa744061789e4)() const

<a id="l00705" name="l00705"></a> 705{

<a id="l00706" name="l00706"></a> 706 double3 home_trans_velocity, near_trans_velocity;

<a id="l00707" name="l00707"></a> 707 double3 home_rotat_velocity, near_rotat_velocity;

<a id="l00708" name="l00708"></a> 708 double3 home_arm, near_arm;

<a id="l00709" name="l00709"></a> 709 

<a id="l00710" name="l00710"></a> 710 device::calculate_contact_velocities(

<a id="l00711" name="l00711"></a> 711 *this-&gt;_impl,

<a id="l00712" name="l00712"></a> 712 home_trans_velocity, near_trans_velocity,

<a id="l00713" name="l00713"></a> 713 home_rotat_velocity, near_rotat_velocity,

<a id="l00714" name="l00714"></a> 714 home_arm, near_arm,

<a id="l00715" name="l00715"></a> 715 this-&gt;current_time

<a id="l00716" name="l00716"></a> 716 );

<a id="l00717" name="l00717"></a> 717 

<a id="l00718" name="l00718"></a> 718 if (this-&gt;[is\_particle\_particle\_contact](structIRockyContact.xhtml#a0a27611118aab7a27fb6c1e53939cba1)())

<a id="l00719" name="l00719"></a> 719 {

<a id="l00720" name="l00720"></a> 720 return device::get_relative_velocity_particle_particle(

<a id="l00721" name="l00721"></a> 721 home_trans_velocity, near_trans_velocity,

<a id="l00722" name="l00722"></a> 722 home_rotat_velocity, near_rotat_velocity,

<a id="l00723" name="l00723"></a> 723 home_arm, near_arm

<a id="l00724" name="l00724"></a> 724 );

<a id="l00725" name="l00725"></a> 725 }

<a id="l00726" name="l00726"></a> 726 else

<a id="l00727" name="l00727"></a> 727 {

<a id="l00728" name="l00728"></a> 728 return device::get_relative_velocity_particle_triangle(

<a id="l00729" name="l00729"></a> 729 home_trans_velocity, near_trans_velocity,

<a id="l00730" name="l00730"></a> 730 home_rotat_velocity, home_arm

<a id="l00731" name="l00731"></a> 731 );

<a id="l00732" name="l00732"></a> 732 }

<a id="l00733" name="l00733"></a> 733}



<a id="l00734" name="l00734"></a> 734 

<a id="l00735" name="l00735"></a> 735// Scalars

<a id="l00736" name="l00736"></a> 736 

<a id="l00737" name="l00737"></a>[ 737](structIRockyContact.xhtml#af937221f53319cd4a30871829e3cc7e0)inline ROCKY_FUNCTIONS [IRockyContactScalars](structIRockyContactScalars.xhtml) [IRockyContact::get\_particle\_contact\_scalars](structIRockyContact.xhtml#af937221f53319cd4a30871829e3cc7e0)() const

<a id="l00738" name="l00738"></a> 738{

<a id="l00739" name="l00739"></a> 739 return this-&gt;_impl-&gt;get_particle_contact_scalars();

<a id="l00740" name="l00740"></a> 740}



<a id="l00741" name="l00741"></a> 741 

<a id="l00742" name="l00742"></a>[ 742](structIRockyContact.xhtml#ab14e84d2a580a95b2fbcb3d1f5c92a25)inline ROCKY_FUNCTIONS [IRockyContactScalars](structIRockyContactScalars.xhtml) [IRockyContact::get\_triangle\_contact\_scalars](structIRockyContact.xhtml#ab14e84d2a580a95b2fbcb3d1f5c92a25)() const

<a id="l00743" name="l00743"></a> 743{

<a id="l00744" name="l00744"></a> 744 return this-&gt;_impl-&gt;get_triangle_contact_scalars();

<a id="l00745" name="l00745"></a> 745}



<a id="l00746" name="l00746"></a> 746 

<a id="l00747" name="l00747"></a>[ 747](structIRockyContact.xhtml#afa684887b3dcfad056850ccfdf399ec3)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_previous\_normal\_vector](structIRockyContact.xhtml#afa684887b3dcfad056850ccfdf399ec3)() const

<a id="l00748" name="l00748"></a> 748{

<a id="l00749" name="l00749"></a> 749 return this-&gt;_impl-&gt;get_previous_normal_vector();

<a id="l00750" name="l00750"></a> 750}



<a id="l00751" name="l00751"></a> 751 

<a id="l00752" name="l00752"></a>[ 752](structIRockyContact.xhtml#a4d10fc8ec36500e0a8f6673f3e7628fd)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_previous\_moment\_vector](structIRockyContact.xhtml#a4d10fc8ec36500e0a8f6673f3e7628fd)() const

<a id="l00753" name="l00753"></a> 753{

<a id="l00754" name="l00754"></a> 754 return this-&gt;_impl-&gt;get_previous_moment_vector();

<a id="l00755" name="l00755"></a> 755}



<a id="l00756" name="l00756"></a> 756 

<a id="l00757" name="l00757"></a>[ 757](structIRockyContact.xhtml#a302215189897e9ad39f8d7a3ff571d6c)inline ROCKY_FUNCTIONS void [IRockyContact::set\_previous\_moment\_vector](structIRockyContact.xhtml#a302215189897e9ad39f8d7a3ff571d6c)(double3 value)

<a id="l00758" name="l00758"></a> 758{

<a id="l00759" name="l00759"></a> 759 this-&gt;_impl-&gt;set_previous_moment_vector(value);

<a id="l00760" name="l00760"></a> 760}



<a id="l00761" name="l00761"></a> 761 

<a id="l00762" name="l00762"></a> 762// Variable Properties

<a id="l00763" name="l00763"></a>[ 763](structIRockyContact.xhtml#a00daba07ec1b0b1df0be1e8d761a408e)inline ROCKY_FUNCTIONS double [IRockyContact::get\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#a00daba07ec1b0b1df0be1e8d761a408e)() const

<a id="l00764" name="l00764"></a> 764{

<a id="l00765" name="l00765"></a> 765 return this-&gt;_impl-&gt;get_dynamic_friction_coefficient();

<a id="l00766" name="l00766"></a> 766}



<a id="l00767" name="l00767"></a> 767 

<a id="l00768" name="l00768"></a>[ 768](structIRockyContact.xhtml#a9b6c747c62166e351d363d693e18c46a)inline ROCKY_FUNCTIONS double [IRockyContact::get\_static\_friction\_coefficient](structIRockyContact.xhtml#a9b6c747c62166e351d363d693e18c46a)() const

<a id="l00769" name="l00769"></a> 769{

<a id="l00770" name="l00770"></a> 770 return this-&gt;_impl-&gt;get_static_friction_coefficient();

<a id="l00771" name="l00771"></a> 771}



<a id="l00772" name="l00772"></a> 772 

<a id="l00773" name="l00773"></a>[ 773](structIRockyContact.xhtml#aaa4594d0c921983edc1d1033661c6500)inline ROCKY_FUNCTIONS void [IRockyContact::set\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#aaa4594d0c921983edc1d1033661c6500)(double value)

<a id="l00774" name="l00774"></a> 774{

<a id="l00775" name="l00775"></a> 775 this-&gt;_impl-&gt;set_dynamic_friction_coefficient(value);

<a id="l00776" name="l00776"></a> 776}



<a id="l00777" name="l00777"></a> 777 

<a id="l00778" name="l00778"></a>[ 778](structIRockyContact.xhtml#a5a3233239461058a2f33a9f49494666c)inline ROCKY_FUNCTIONS void [IRockyContact::set\_static\_friction\_coefficient](structIRockyContact.xhtml#a5a3233239461058a2f33a9f49494666c)(double value)

<a id="l00779" name="l00779"></a> 779{

<a id="l00780" name="l00780"></a> 780 this-&gt;_impl-&gt;set_static_friction_coefficient(value);

<a id="l00781" name="l00781"></a> 781}



<a id="l00782" name="l00782"></a> 782 

<a id="l00783" name="l00783"></a>[ 783](structIRockyContact.xhtml#a6e335a5d032dded094c6b36ad5ea23c1)inline ROCKY_FUNCTIONS double [IRockyContact::get\_restitution\_coefficient](structIRockyContact.xhtml#a6e335a5d032dded094c6b36ad5ea23c1)() const

<a id="l00784" name="l00784"></a> 784{

<a id="l00785" name="l00785"></a> 785 return this-&gt;_impl-&gt;get_restitution_coefficient();

<a id="l00786" name="l00786"></a> 786}



<a id="l00787" name="l00787"></a> 787 

<a id="l00788" name="l00788"></a>[ 788](structIRockyContact.xhtml#ad5f45118ba3d4bdedd2194640fc4c79d)inline ROCKY_FUNCTIONS void [IRockyContact::set\_restitution\_coefficient](structIRockyContact.xhtml#ad5f45118ba3d4bdedd2194640fc4c79d)(double value)

<a id="l00789" name="l00789"></a> 789{

<a id="l00790" name="l00790"></a> 790 this-&gt;_impl-&gt;set_restitution_coefficient(value);

<a id="l00791" name="l00791"></a> 791}



<a id="l00792" name="l00792"></a> 792 

<a id="l00793" name="l00793"></a>[ 793](structIRockyContact.xhtml#afe041153be8e43d3e5d7c7a500a49501)inline ROCKY_FUNCTIONS double [IRockyContact::get\_sliding\_distance](structIRockyContact.xhtml#afe041153be8e43d3e5d7c7a500a49501)() const

<a id="l00794" name="l00794"></a> 794{

<a id="l00795" name="l00795"></a> 795 return this-&gt;_impl-&gt;get_sliding_distance();

<a id="l00796" name="l00796"></a> 796}



<a id="l00797" name="l00797"></a> 797 

<a id="l00798" name="l00798"></a>[ 798](structIRockyContact.xhtml#a1acfe6d4f8e36c9fd417a658aac1c041)inline ROCKY_FUNCTIONS bool [IRockyContact::get\_is\_sliding\_marker](structIRockyContact.xhtml#a1acfe6d4f8e36c9fd417a658aac1c041)() const

<a id="l00799" name="l00799"></a> 799{

<a id="l00800" name="l00800"></a> 800 return this-&gt;_impl-&gt;get_is_sliding_marker();

<a id="l00801" name="l00801"></a> 801}



<a id="l00802" name="l00802"></a> 802 

<a id="l00803" name="l00803"></a>[ 803](structIRockyContact.xhtml#a379476b7b01576be8fc0eb3f0dde7a1e)inline ROCKY_FUNCTIONS double [IRockyContact::get\_normal\_relative\_velocity](structIRockyContact.xhtml#a379476b7b01576be8fc0eb3f0dde7a1e)() const

<a id="l00804" name="l00804"></a> 804{

<a id="l00805" name="l00805"></a> 805 return this-&gt;_impl-&gt;get_normal_relative_velocity();

<a id="l00806" name="l00806"></a> 806}



<a id="l00807" name="l00807"></a> 807 

<a id="l00808" name="l00808"></a>[ 808](structIRockyContact.xhtml#a9fab3f0e6f78ea64e96209fbbd540b85)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_tangential\_relative\_velocity](structIRockyContact.xhtml#a9fab3f0e6f78ea64e96209fbbd540b85)() const

<a id="l00809" name="l00809"></a> 809{

<a id="l00810" name="l00810"></a> 810 return this-&gt;_impl-&gt;get_tangential_relative_velocity();

<a id="l00811" name="l00811"></a> 811}



<a id="l00812" name="l00812"></a> 812 

<a id="l00813" name="l00813"></a>[ 813](structIRockyContact.xhtml#a21587a9de6f69f4af1d215c3879fca66)inline ROCKY_FUNCTIONS double [IRockyContact::get\_normal\_adhesion\_force](structIRockyContact.xhtml#a21587a9de6f69f4af1d215c3879fca66)() const

<a id="l00814" name="l00814"></a> 814{

<a id="l00815" name="l00815"></a> 815 return this-&gt;_impl-&gt;get_normal_adhesion_force();

<a id="l00816" name="l00816"></a> 816}



<a id="l00817" name="l00817"></a> 817 

<a id="l00818" name="l00818"></a>[ 818](structIRockyContact.xhtml#a20d7ffad55e1c1c28c848eb3b09c41f2)inline ROCKY_FUNCTIONS double3 [IRockyContact::get\_tangential\_adhesion\_force](structIRockyContact.xhtml#a20d7ffad55e1c1c28c848eb3b09c41f2)() const

<a id="l00819" name="l00819"></a> 819{

<a id="l00820" name="l00820"></a> 820 return this-&gt;_impl-&gt;get_tangential_adhesion_force();

<a id="l00821" name="l00821"></a> 821}



[IRockyContactScalars](structIRockyContactScalars.xhtml)

**Definition** rocky_contact_scalars.hpp:278



[IRockyContact](structIRockyContact.xhtml)

**Definition** rocky_contact_api.hpp:46



[IRockyContact::get\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#a00daba07ec1b0b1df0be1e8d761a408e)

ROCKY_FUNCTIONS double get_dynamic_friction_coefficient() const

**Definition** rocky_contact_api.hpp:763



[IRockyContact::get\_normal\_unit\_vector](structIRockyContact.xhtml#a04a9d6e5ba1478bc00d4955bcaa1a2fd)

ROCKY_FUNCTIONS double3 get_normal_unit_vector() const

**Definition** rocky_contact_api.hpp:594



[IRockyContact::is\_particle\_particle\_contact](structIRockyContact.xhtml#a0a27611118aab7a27fb6c1e53939cba1)

ROCKY_FUNCTIONS bool is_particle_particle_contact() const

**Definition** rocky_contact_api.hpp:534



[IRockyContact::get\_home\_stiffness](structIRockyContact.xhtml#a1816640d165bb54d339ee9aaf2873046)

ROCKY_FUNCTIONS double get_home_stiffness() const

**Definition** rocky_contact_api.hpp:669



[IRockyContact::get\_is\_sliding\_marker](structIRockyContact.xhtml#a1acfe6d4f8e36c9fd417a658aac1c041)

ROCKY_FUNCTIONS bool get_is_sliding_marker() const

**Definition** rocky_contact_api.hpp:798



[IRockyContact::get\_tangential\_adhesion\_force](structIRockyContact.xhtml#a20d7ffad55e1c1c28c848eb3b09c41f2)

ROCKY_FUNCTIONS double3 get_tangential_adhesion_force() const

**Definition** rocky_contact_api.hpp:818



[IRockyContact::get\_normal\_adhesion\_force](structIRockyContact.xhtml#a21587a9de6f69f4af1d215c3879fca66)

ROCKY_FUNCTIONS double get_normal_adhesion_force() const

**Definition** rocky_contact_api.hpp:813



[IRockyContact::get\_near\_particle\_group\_index](structIRockyContact.xhtml#a244d24fa1cc78a23d6f4553d5797ab0b)

ROCKY_FUNCTIONS int get_near_particle_group_index() const

**Definition** rocky_contact_api.hpp:569



[IRockyContact::get\_overlap](structIRockyContact.xhtml#a26aef3fac3655fe686283be4bd2fe7f0)

ROCKY_FUNCTIONS double get_overlap() const

**Definition** rocky_contact_api.hpp:584



[IRockyContact::get\_home\_particle\_group\_index](structIRockyContact.xhtml#a2cd1c1e40befd0cf6910d663432c3695)

ROCKY_FUNCTIONS int get_home_particle_group_index() const

**Definition** rocky_contact_api.hpp:559



[IRockyContact::set\_previous\_moment\_vector](structIRockyContact.xhtml#a302215189897e9ad39f8d7a3ff571d6c)

ROCKY_FUNCTIONS void set_previous_moment_vector(double3 value)

**Definition** rocky_contact_api.hpp:757



[IRockyContact::just\_started\_adhesive](structIRockyContact.xhtml#a33e06ba2b8ca80ff15946ac27885dbd7)

ROCKY_FUNCTIONS bool just_started_adhesive() const

**Definition** rocky_contact_api.hpp:624



[IRockyContact::get\_normal\_relative\_velocity](structIRockyContact.xhtml#a379476b7b01576be8fc0eb3f0dde7a1e)

ROCKY_FUNCTIONS double get_normal_relative_velocity() const

**Definition** rocky_contact_api.hpp:803



[IRockyContact::is\_loading](structIRockyContact.xhtml#a395c9be7e50adea7317a808279faec0c)

ROCKY_FUNCTIONS bool is_loading() const

**Definition** rocky_contact_api.hpp:639



[IRockyContact::get\_near\_geometry\_index](structIRockyContact.xhtml#a3f551f05cfe40b8c6b95b3df8a311ca4)

ROCKY_FUNCTIONS int get_near_geometry_index() const

**Definition** rocky_contact_api.hpp:579



[IRockyContact::is\_adhesive](structIRockyContact.xhtml#a46453e5b227065edb55c7b67177584f9)

ROCKY_FUNCTIONS bool is_adhesive() const

**Definition** rocky_contact_api.hpp:549



[IRockyContact::get\_equivalent\_radius](structIRockyContact.xhtml#a473c87b27145d22e24f15e67ab160d89)

ROCKY_FUNCTIONS double get_equivalent_radius() const

**Definition** rocky_contact_api.hpp:699



[IRockyContact::get\_timestep](structIRockyContact.xhtml#a4cc9eb65e78d4eb4cbe34bb7c7baf85d)

ROCKY_FUNCTIONS double get_timestep() const

**Definition** rocky_contact_api.hpp:614



[IRockyContact::get\_previous\_moment\_vector](structIRockyContact.xhtml#a4d10fc8ec36500e0a8f6673f3e7628fd)

ROCKY_FUNCTIONS double3 get_previous_moment_vector() const

**Definition** rocky_contact_api.hpp:752



[IRockyContact::just\_finished\_adhesive](structIRockyContact.xhtml#a52439d8dd07c36c9475eb248d7dcb38e)

ROCKY_FUNCTIONS bool just_finished_adhesive() const

**Definition** rocky_contact_api.hpp:634



[IRockyContact::set\_static\_friction\_coefficient](structIRockyContact.xhtml#a5a3233239461058a2f33a9f49494666c)

ROCKY_FUNCTIONS void set_static_friction_coefficient(double value)

**Definition** rocky_contact_api.hpp:778



[IRockyContact::get\_near\_particle](structIRockyContact.xhtml#a6c85a39640365d283d22437792c51f0f)

ROCKY_FUNCTIONS IRockyParticle get_near_particle() const

**Definition** rocky_contact_api.hpp:564



[IRockyContact::get\_current\_time](structIRockyContact.xhtml#a6cc48e3759e515587e236d283d904f00)

ROCKY_FUNCTIONS double get_current_time() const

**Definition** rocky_contact_api.hpp:609



[IRockyContact::get\_restitution\_coefficient](structIRockyContact.xhtml#a6e335a5d032dded094c6b36ad5ea23c1)

ROCKY_FUNCTIONS double get_restitution_coefficient() const

**Definition** rocky_contact_api.hpp:783



[IRockyContact::is\_positive\_oriented](structIRockyContact.xhtml#a79c5a7fb09b962d62eefe61f27cddcd7)

ROCKY_FUNCTIONS bool is_positive_oriented() const

**Definition** rocky_contact_api.hpp:662



[IRockyContact::get\_near\_material](structIRockyContact.xhtml#a8ec1a085944bc63f455c4007531aea61)

ROCKY_FUNCTIONS IRockyMaterial get_near_material() const

**Definition** rocky_contact_api.hpp:519



[IRockyContact::get\_static\_friction\_coefficient](structIRockyContact.xhtml#a9b6c747c62166e351d363d693e18c46a)

ROCKY_FUNCTIONS double get_static_friction_coefficient() const

**Definition** rocky_contact_api.hpp:768



[IRockyContact::is\_particle\_triangle\_contact](structIRockyContact.xhtml#a9de7fba112ea033f15e8ee1fb0305960)

ROCKY_FUNCTIONS bool is_particle_triangle_contact() const

**Definition** rocky_contact_api.hpp:539



[IRockyContact::get\_normal\_contact\_force](structIRockyContact.xhtml#a9e085d9bb5684b5d34c33525bb1d021c)

ROCKY_FUNCTIONS double get_normal_contact_force() const

**Definition** rocky_contact_api.hpp:649



[IRockyContact::get\_tangential\_relative\_velocity](structIRockyContact.xhtml#a9fab3f0e6f78ea64e96209fbbd540b85)

ROCKY_FUNCTIONS double3 get_tangential_relative_velocity() const

**Definition** rocky_contact_api.hpp:808



[IRockyContact::get\_near\_triangle](structIRockyContact.xhtml#aa2479a695d48de98b5caf29d52134b8a)

ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const

**Definition** rocky_contact_api.hpp:574



[IRockyContact::get\_equivalent\_stiffness](structIRockyContact.xhtml#aa373c6f200518285d6bb85817d12ccae)

ROCKY_FUNCTIONS double get_equivalent_stiffness() const

**Definition** rocky_contact_api.hpp:679



[IRockyContact::get\_near\_stiffness](structIRockyContact.xhtml#aa49e3ddd3916fabf25a90e8fefb5cc4c)

ROCKY_FUNCTIONS double get_near_stiffness() const

**Definition** rocky_contact_api.hpp:674



[IRockyContact::set\_dynamic\_friction\_coefficient](structIRockyContact.xhtml#aaa4594d0c921983edc1d1033661c6500)

ROCKY_FUNCTIONS void set_dynamic_friction_coefficient(double value)

**Definition** rocky_contact_api.hpp:773



[IRockyContact::get\_contact\_position](structIRockyContact.xhtml#aafeae8748cf36743d08f4570b198f001)

ROCKY_FUNCTIONS double3 get_contact_position() const

**Definition** rocky_contact_api.hpp:599



[IRockyContact::get\_material\_interaction\_index](structIRockyContact.xhtml#ab05070dcc53936225c506abfc2645ff4)

ROCKY_FUNCTIONS int get_material_interaction_index() const

**Definition** rocky_contact_api.hpp:529



[IRockyContact::get\_triangle\_contact\_scalars](structIRockyContact.xhtml#ab14e84d2a580a95b2fbcb3d1f5c92a25)

ROCKY_FUNCTIONS IRockyContactScalars get_triangle_contact_scalars() const

**Definition** rocky_contact_api.hpp:742



[IRockyContact::just\_started\_frictional](structIRockyContact.xhtml#ab280ec2c5bc3fe90ca4822939514d3b5)

ROCKY_FUNCTIONS bool just_started_frictional() const

**Definition** rocky_contact_api.hpp:619



[IRockyContact::get\_previous\_overlap](structIRockyContact.xhtml#ab6c8fca161c75cf870eb059f9ed3b11c)

ROCKY_FUNCTIONS double get_previous_overlap() const

**Definition** rocky_contact_api.hpp:589



[IRockyContact::is\_unloading](structIRockyContact.xhtml#abe5cd05335fe5264bc05d9808b23a9fe)

ROCKY_FUNCTIONS bool is_unloading() const

**Definition** rocky_contact_api.hpp:644



[IRockyContact::get\_tangential\_contact\_force](structIRockyContact.xhtml#aca5aae0a4d0c2033bbad4da067657704)

ROCKY_FUNCTIONS double3 get_tangential_contact_force() const

**Definition** rocky_contact_api.hpp:654



[IRockyContact::get\_reduced\_young\_modulus](structIRockyContact.xhtml#acc8512372077732bfe12aa3483f2e35b)

ROCKY_FUNCTIONS double get_reduced_young_modulus() const

**Definition** rocky_contact_api.hpp:689



[IRockyContact::get\_scale\_factor](structIRockyContact.xhtml#ad0940d0dcefd839aaba3770689a034bb)

ROCKY_FUNCTIONS double get_scale_factor() const

**Definition** rocky_contact_api.hpp:604



[IRockyContact::set\_restitution\_coefficient](structIRockyContact.xhtml#ad5f45118ba3d4bdedd2194640fc4c79d)

ROCKY_FUNCTIONS void set_restitution_coefficient(double value)

**Definition** rocky_contact_api.hpp:788



[IRockyContact::get\_home\_material](structIRockyContact.xhtml#ae1890c831f2bb90143d3459352dee316)

ROCKY_FUNCTIONS IRockyMaterial get_home_material() const

**Definition** rocky_contact_api.hpp:514



[IRockyContact::get\_equivalent\_mass](structIRockyContact.xhtml#ae4f9b67c0a4577089b37854e9fa5fe9b)

ROCKY_FUNCTIONS double get_equivalent_mass() const

**Definition** rocky_contact_api.hpp:694



[IRockyContact::is\_frictional](structIRockyContact.xhtml#ae83dc410da7f54a0badbfb0c75fdaa4b)

ROCKY_FUNCTIONS bool is_frictional() const

**Definition** rocky_contact_api.hpp:544



[IRockyContact::get\_home\_particle](structIRockyContact.xhtml#aed9e6fcfa92276bc514e21564f0603fb)

ROCKY_FUNCTIONS IRockyParticle get_home_particle() const

**Definition** rocky_contact_api.hpp:554



[IRockyContact::calculate\_relative\_velocity](structIRockyContact.xhtml#af05c086a0b75c761b13fa744061789e4)

ROCKY_FUNCTIONS double3 calculate_relative_velocity() const

**Definition** rocky_contact_api.hpp:704



[IRockyContact::get\_particle\_contact\_scalars](structIRockyContact.xhtml#af937221f53319cd4a30871829e3cc7e0)

ROCKY_FUNCTIONS IRockyContactScalars get_particle_contact_scalars() const

**Definition** rocky_contact_api.hpp:737



[IRockyContact::get\_previous\_normal\_vector](structIRockyContact.xhtml#afa684887b3dcfad056850ccfdf399ec3)

ROCKY_FUNCTIONS double3 get_previous_normal_vector() const

**Definition** rocky_contact_api.hpp:747



[IRockyContact::just\_finished\_frictional](structIRockyContact.xhtml#afbda49c86a367e9a4f20492ff5007333)

ROCKY_FUNCTIONS bool just_finished_frictional() const

**Definition** rocky_contact_api.hpp:629



[IRockyContact::get\_sliding\_distance](structIRockyContact.xhtml#afe041153be8e43d3e5d7c7a500a49501)

ROCKY_FUNCTIONS double get_sliding_distance() const

**Definition** rocky_contact_api.hpp:793



[IRockyContact::get\_material\_interaction](structIRockyContact.xhtml#aff52effeb3fe2a5015ac05022df63731)

ROCKY_FUNCTIONS IRockyMaterialInteraction get_material_interaction() const

**Definition** rocky_contact_api.hpp:524



[IRockyContact::get\_home\_stiffness\_fraction](structIRockyContact.xhtml#aff778f8122d9ea2f81da59e1ff279b45)

ROCKY_FUNCTIONS double get_home_stiffness_fraction() const

**Definition** rocky_contact_api.hpp:684



[IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml)

**Definition** rocky_boundary_api.hpp:134



[IRockyMaterialInteraction](structIRockyMaterialInteraction.xhtml)

**Definition** rocky_material_api.hpp:71



[IRockyMaterial](structIRockyMaterial.xhtml)

**Definition** rocky_material_api.hpp:20



[IRockyParticle](structIRockyParticle.xhtml)

**Definition** rocky_particle_api.hpp:27