worldmodelhighlevel_8c-source.html

来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 765 行 · 第 1/5 页

HTML
765
字号
00204       dMinMag         = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();00205       closestObject   = o;00206     }00207   }00208   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00209   <font class="keywordflow">if</font>( dDist != NULL )00210     *dDist = dMinMag;00211   <font class="keywordflow">return</font> closestObject;00212 }00213 <a name="l00227"></a><a class="code" href="classWorldModel.html#a118">00227</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a116">WorldModel::getClosestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="classLine.html">Line</a> l,00228                               <a class="code" href="classVecPosition.html">VecPosition</a> pos1, <a class="code" href="classVecPosition.html">VecPosition</a> pos2,00229                               <font class="keywordtype">double</font> *dDistObjToLine, <font class="keywordtype">double</font> *dDistPos1ToPoint)00230 {00231   <a class="code" href="classVecPosition.html">VecPosition</a> posObj;00232   <a class="code" href="classVecPosition.html">VecPosition</a> posOnLine;00233   <font class="keywordtype">double</font>      dConfThr  = <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00234   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     obj       = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00235   <font class="keywordtype">double</font>      dDist     = 1000.0;00236   <font class="keywordtype">double</font>      dMinDist  = 1000.0;00237   <font class="keywordtype">double</font>      dDistPos1 = 1000.0;00238   <font class="keywordtype">int</font>         iIndex;00239 00240   <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, dConfThr );00241        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00242        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00243   {00244     posObj    = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00245     posOnLine = l.<a class="code" href="classLine.html#a5">getPointOnLineClosestTo</a>( posObj );00246     dDist     = posObj.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOnLine );00247     <font class="keywordflow">if</font>( l.<a class="code" href="classLine.html#a7">isInBetween</a>( posOnLine, pos1, pos2 ) &amp;&amp; dDist &lt; dMinDist )00248     {00249       dMinDist  = dDist;00250       obj       = o;00251       dDistPos1 = pos1.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOnLine );00252     }00253   }00254   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00255   <font class="keywordflow">if</font>( dDistObjToLine != NULL )00256     *dDistObjToLine = dMinDist;00257   <font class="keywordflow">if</font>( dDistPos1ToPoint != NULL )00258     *dDistPos1ToPoint = dDistPos1;00259 00260   <font class="keywordflow">return</font> obj;00261 }00262 <a name="l00269"></a><a class="code" href="classWorldModel.html#a119">00269</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a119">WorldModel::getClosestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist )00270 {00271   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     closestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00272   <font class="keywordtype">double</font>      dMinMag       = 1000.0;00273   <font class="keywordtype">int</font>         iIndex;00274 00275   <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, 1.0 );00276        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00277        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00278   {00279     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o ) &lt; dMinMag )00280     {00281       dMinMag       = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00282       closestObject = o;00283     }00284   }00285 00286   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00287   <font class="keywordflow">if</font>( dDist != NULL )00288     *dDist = dMinMag;00289   <font class="keywordflow">return</font> closestObject;00290 }00291 <a name="l00302"></a><a class="code" href="classWorldModel.html#a120">00302</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a120">WorldModel::getSecondClosestInSetTo</a> ( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj,00303                                               <font class="keywordtype">double</font> *dDist,  <font class="keywordtype">double</font> dConfThr )00304 {00305   <a class="code" href="classVecPosition.html">VecPosition</a> v;00306   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     closestObject       = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00307   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     secondClosestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00308   <font class="keywordtype">double</font>      dMinMag             = 1000.0;00309   <font class="keywordtype">double</font>      dSecondMinMag       = 1000.0;00310   <font class="keywordtype">int</font>         iIndex;00311 00312   <font class="keywordflow">if</font>( dConfThr == -1.0 ) dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00313 00314   <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, dConfThr );00315        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00316        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00317   {00318     <font class="keywordflow">if</font>( o != obj )00319     {00320       v = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( obj ) - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00321       <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() &lt; dMinMag )                  <font class="comment">// closer then first</font>00322       {00323         dSecondMinMag         = dMinMag;                <font class="comment">// put first to second</font>00324         secondClosestObject   = closestObject;00325         dMinMag               = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();       <font class="comment">// and this to first</font>00326         closestObject         = o;00327       }00328       <font class="keywordflow">else</font> <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() &lt; dSecondMinMag )       <font class="comment">// between first and 2nd</font>00329       {00330         dSecondMinMag         = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();       <font class="comment">// put this to second</font>00331         secondClosestObject   = o;00332       }00333     }00334   }00335   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00336   <font class="keywordflow">if</font>( dDist != NULL )00337     *dDist = dSecondMinMag;00338   <font class="keywordflow">return</font> secondClosestObject;00339 }00340 <a name="l00347"></a><a class="code" href="classWorldModel.html#a121">00347</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a121">WorldModel::getSecondClosestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist )00348 {00349   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     closestObject       = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00350   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     secondClosestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00351   <font class="keywordtype">double</font>      dMinMag             = 1000.0;00352   <font class="keywordtype">double</font>      dSecondMinMag       = 1000.0;00353   <font class="keywordtype">double</font>      d;00354   <font class="keywordtype">int</font>         iIndex;00355 00356   <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, 1.0 );00357        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00358        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00359   {00360     d = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00361     <font class="keywordflow">if</font>( d &lt; dMinMag )                                 <font class="comment">// closer then first</font>00362     {00363       dSecondMinMag         = dMinMag;                <font class="comment">// put first to second</font>00364       secondClosestObject   = closestObject;00365       dMinMag               = d;                      <font class="comment">// and this to first</font>00366       closestObject         = o;00367     }00368     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( d &lt; dSecondMinMag )                      <font class="comment">// between first and 2nd</font>00369     {00370       dSecondMinMag         = d;                      <font class="comment">// put this to second</font>00371       secondClosestObject   = o;00372     }00373   }00374   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00375   <font class="keywordflow">if</font>( dDist != NULL )00376     *dDist = dSecondMinMag;00377   <font class="keywordflow">return</font> secondClosestObject;00378 }00379 00380 <a name="l00391"></a><a class="code" href="classWorldModel.html#a124">00391</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a124">WorldModel::getFurthestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> objTarget,00392                                         <font class="keywordtype">double</font> *dDist, <font class="keywordtype">double</font> dConfThr )00393 {00394   <font class="keywordflow">if</font>( dConfThr == -1.0 ) dConfThr      = <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00395 00396   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     furthestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00397   <font class="keywordtype">double</font>      dMaxMag       = -1000.0;00398   <a class="code" href="classVecPosition.html">VecPosition</a> v;00399   <font class="keywordtype">int</font>         iIndex;00400 00401   <font class="keywordflow">for</font>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a31">iterateObjectStart</a>( iIndex, set, dConfThr );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?