    

 ## On this page

  

 

 # rocky\_vicinity\_pair\_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\#include "rocky\_boundary\_api.hpp"

<a id="l00004" name="l00004"></a> 4\#include "rocky\_particle\_api.hpp"

<a id="l00005" name="l00005"></a> 5 

<a id="l00011" name="l00011"></a>[ 11](structIRockyVicinityPair.xhtml)struct [IRockyVicinityPair](structIRockyVicinityPair.xhtml)

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

<a id="l00018" name="l00018"></a> 18 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)() const;

<a id="l00019" name="l00019"></a> 19 

<a id="l00025" name="l00025"></a> 25 ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)() const;

<a id="l00026" name="l00026"></a> 26 

<a id="l00032" name="l00032"></a> 32 ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)() const;

<a id="l00033" name="l00033"></a> 33 

<a id="l00037" name="l00037"></a> 37 ROCKY_FUNCTIONS bool [is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)() const;

<a id="l00038" name="l00038"></a> 38 

<a id="l00042" name="l00042"></a> 42 ROCKY_FUNCTIONS bool [is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)() const;

<a id="l00043" name="l00043"></a> 43 

<a id="l00047" name="l00047"></a> 47 ROCKY_FUNCTIONS double [get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)() const;

<a id="l00048" name="l00048"></a> 48 

<a id="l00055" name="l00055"></a> 55 ROCKY_FUNCTIONS double [get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)() const;

<a id="l00056" name="l00056"></a> 56 

<a id="l00058" name="l00058"></a> 58 SDeviceModel* _model;

<a id="l00059" name="l00059"></a> 59 const size\_t _home_id, _near_id;

<a id="l00060" name="l00060"></a> 60 bool _is_particle_particle;

<a id="l00062" name="l00062"></a> 62};



<a id="l00063" name="l00063"></a> 63 

<a id="l00064" name="l00064"></a>[ 64](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyVicinityPair::get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)() const

<a id="l00065" name="l00065"></a> 65{

<a id="l00066" name="l00066"></a> 66 return [IRockyParticle](structIRockyParticle.xhtml) { int(this-&gt;_home_id), this-&gt;_model };

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



<a id="l00068" name="l00068"></a> 68 

<a id="l00069" name="l00069"></a>[ 69](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)inline ROCKY_FUNCTIONS [IRockyParticle](structIRockyParticle.xhtml) [IRockyVicinityPair::get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)() const

<a id="l00070" name="l00070"></a> 70{

<a id="l00071" name="l00071"></a> 71 return [IRockyParticle](structIRockyParticle.xhtml) { int(this-&gt;_near_id), this-&gt;_model };

<a id="l00072" name="l00072"></a> 72}



<a id="l00073" name="l00073"></a> 73 

<a id="l00074" name="l00074"></a>[ 74](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)inline ROCKY_FUNCTIONS [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) [IRockyVicinityPair::get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)() const

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

<a id="l00076" name="l00076"></a> 76 return [IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml) { int(this-&gt;_near_id), this-&gt;_model };

<a id="l00077" name="l00077"></a> 77}



<a id="l00078" name="l00078"></a> 78 

<a id="l00079" name="l00079"></a>[ 79](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)inline ROCKY_FUNCTIONS bool [IRockyVicinityPair::is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)() const

<a id="l00080" name="l00080"></a> 80{

<a id="l00081" name="l00081"></a> 81 return this-&gt;_is_particle_particle;

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



<a id="l00083" name="l00083"></a> 83 

<a id="l00084" name="l00084"></a>[ 84](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)inline ROCKY_FUNCTIONS bool [IRockyVicinityPair::is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)() const

<a id="l00085" name="l00085"></a> 85{

<a id="l00086" name="l00086"></a> 86 return !this-&gt;_is_particle_particle;

<a id="l00087" name="l00087"></a> 87}



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

<a id="l00089" name="l00089"></a>[ 89](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)inline ROCKY_FUNCTIONS double [IRockyVicinityPair::get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)() const

<a id="l00090" name="l00090"></a> 90{

<a id="l00091" name="l00091"></a> 91 return sqrt(this-&gt;[get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)());

<a id="l00092" name="l00092"></a> 92}



<a id="l00093" name="l00093"></a> 93 

<a id="l00094" name="l00094"></a>[ 94](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)inline ROCKY_FUNCTIONS double [IRockyVicinityPair::get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)() const

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

<a id="l00096" name="l00096"></a> 96 const auto home_position = this-&gt;_model-&gt;prt[this-&gt;_home_id].get_centroid();

<a id="l00097" name="l00097"></a> 97 const auto near_position = this-&gt;_is_particle_particle

<a id="l00098" name="l00098"></a> 98 ? this-&gt;_model-&gt;prt[this-&gt;_near_id].get_centroid()

<a id="l00099" name="l00099"></a> 99 : RockyBoundaryTriangle(this-&gt;_model, int(this-&gt;_near_id)).get_centroid();

<a id="l00100" name="l00100"></a> 100 return rocky::vector::dot(near_position - home_position);

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



[IRockyGeometryTriangle](structIRockyGeometryTriangle.xhtml)

**Definition** rocky_boundary_api.hpp:134



[IRockyParticle](structIRockyParticle.xhtml)

**Definition** rocky_particle_api.hpp:27



[IRockyVicinityPair](structIRockyVicinityPair.xhtml)

**Definition** rocky_vicinity_pair_api.hpp:12



[IRockyVicinityPair::get\_near\_particle](structIRockyVicinityPair.xhtml#a1085098207fdb2d038dcf55d10c318e1)

ROCKY_FUNCTIONS IRockyParticle get_near_particle() const

**Definition** rocky_vicinity_pair_api.hpp:69



[IRockyVicinityPair::get\_distance](structIRockyVicinityPair.xhtml#a34b7e627e2b53650ec7a6b230528ee6f)

ROCKY_FUNCTIONS double get_distance() const

**Definition** rocky_vicinity_pair_api.hpp:89



[IRockyVicinityPair::get\_near\_triangle](structIRockyVicinityPair.xhtml#a3d83f2759c519cadcd1a4a4199be6bb1)

ROCKY_FUNCTIONS IRockyGeometryTriangle get_near_triangle() const

**Definition** rocky_vicinity_pair_api.hpp:74



[IRockyVicinityPair::is\_particle\_particle](structIRockyVicinityPair.xhtml#a4e8173adc82c91c5d26edd8b0100c2f3)

ROCKY_FUNCTIONS bool is_particle_particle() const

**Definition** rocky_vicinity_pair_api.hpp:79



[IRockyVicinityPair::get\_home\_particle](structIRockyVicinityPair.xhtml#a6453667273c56febeed7c2806fa4a516)

ROCKY_FUNCTIONS IRockyParticle get_home_particle() const

**Definition** rocky_vicinity_pair_api.hpp:64



[IRockyVicinityPair::get\_squared\_distance](structIRockyVicinityPair.xhtml#ac697ba9682008871b110a31c8be3a48b)

ROCKY_FUNCTIONS double get_squared_distance() const

**Definition** rocky_vicinity_pair_api.hpp:94



[IRockyVicinityPair::is\_particle\_triangle](structIRockyVicinityPair.xhtml#ad5120c027dba90895cf9d05d99e54e7d)

ROCKY_FUNCTIONS bool is_particle_triangle() const

**Definition** rocky_vicinity_pair_api.hpp:84