worldmodelhighlevel_8c-source.html

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

HTML
765
字号
00402        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00403        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00404   {00405     <font class="keywordflow">if</font>( o != objTarget )00406     {00407       v = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( objTarget ) - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00408       <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() &gt; dMaxMag )00409       {00410         dMaxMag        = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();00411         furthestObject = o;00412       }00413     }00414   }00415   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00416   <font class="keywordflow">if</font>( dDist != NULL )00417     *dDist = dMaxMag;00418   <font class="keywordflow">return</font> furthestObject;00419 }00420 <a name="l00427"></a><a class="code" href="classWorldModel.html#a125">00427</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a125">WorldModel::getFurthestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist  )00428 {00429   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     furthestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00430   <font class="keywordtype">double</font>      dMaxMag       = -1000.0;00431   <font class="keywordtype">int</font>         iIndex;00432 00433   <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 );00434        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00435        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00436   {00437     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o ) &gt; dMaxMag )00438     {00439       dMaxMag        = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00440       furthestObject = o;00441     }00442   }00443   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00444   <font class="keywordflow">if</font>( dDist != NULL )00445     *dDist = dMaxMag;00446   <font class="keywordflow">return</font> furthestObject;00447 }00448 00449 <a name="l00459"></a><a class="code" href="classWorldModel.html#a122">00459</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a122">WorldModel::getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj,00460                                         <font class="keywordtype">int</font> *iCyclesToIntercept )00461 {00462   <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>();00463   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     fastestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00464   <font class="keywordtype">int</font>         iCycles       = -1;00465   <font class="keywordtype">int</font>         iCyclesToObj  = 100;00466   <font class="keywordtype">int</font>         iMinCycles    = 100;00467   <font class="keywordtype">int</font>         iIndex;00468   <a class="code" href="classVecPosition.html">VecPosition</a> posObj;00469 00470   <font class="keywordflow">while</font>( iCycles &lt; iMinCycles &amp;&amp; iCycles &lt; 100)00471   {00472     iCycles    = iCycles + 1  ;00473     iMinCycles = 100;00474     posObj     = <a class="code" href="classWorldModel.html#a107">predictPosAfterNrCycles</a>( obj, iCycles );00475 00476     <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 );00477        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00478        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00479     {00480       <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(posObj)/<a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>()00481               &lt; iMinCycles )00482       {00483         iCyclesToObj = (int)rint(<a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(posObj)00484                              /<a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>());00485         iMinCycles = iCyclesToObj;00486         fastestObject = o;00487       }00488     }00489     <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00490   }00491 00492   <font class="keywordflow">if</font>( iCyclesToIntercept != NULL )00493     *iCyclesToIntercept  = iMinCycles;00494   <font class="keywordflow">return</font> fastestObject;00495 }00496 <a name="l00507"></a><a class="code" href="classWorldModel.html#a123">00507</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a122">WorldModel::getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="classVecPosition.html">VecPosition</a> pos,00508                       <a class="code" href="classVecPosition.html">VecPosition</a> vel, <font class="keywordtype">double</font> dDecay, <font class="keywordtype">int</font> *iCyclesToIntercept)00509 {00510   <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>();00511   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> fastestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00512   <font class="keywordtype">int</font>     iCycles       = 0;00513   <font class="keywordtype">int</font>     iCyclesToObj  = 100;00514   <font class="keywordtype">int</font>     iMinCycles    = 100;00515   <font class="keywordtype">int</font>     iIndex;00516 00517   <font class="keywordflow">while</font>( iCycles &lt; iMinCycles &amp;&amp; iCycles &lt; 100)00518   {00519     iCycles    = iCycles + 1  ;00520     iMinCycles = 100;00521 00522     <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 );00523        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00524        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00525     {00526        <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(pos)/<a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>()00527               &lt; iMinCycles )00528       {00529         iCyclesToObj = (int)rint(<a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>(o).<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(pos)00530                              /<a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a14">getPlayerSpeedMax</a>() );00531         iMinCycles    = iCyclesToObj;00532         fastestObject = o;00533       }00534     }00535     <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00536     pos += vel;00537     vel *= dDecay;00538   }00539 00540   <font class="keywordflow">if</font>( iCyclesToIntercept != NULL )00541     *iCyclesToIntercept = iMinCycles;00542   <font class="keywordflow">return</font> fastestObject;00543 }00544 <a name="l00552"></a><a class="code" href="classWorldModel.html#a126">00552</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a126">WorldModel::getFirstEmptySpotInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set )00553 {00554   <font class="keywordtype">int</font>     iIndex;00555 00556   <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,  0.0 );00557        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00558        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 0.0 ) )00559   {00560     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a61">getConfidence</a>( o ) &lt; <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>() &amp;&amp;00561         o != <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() )00562       <font class="keywordflow">return</font> o;00563   }00564   <font class="keywordflow">return</font> <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00565 }00566 00567 <a name="l00574"></a><a class="code" href="classWorldModel.html#a127">00574</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a127">WorldModel::isVisible</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00575 {00576   <a class="code" href="classObject.html">Object</a> *object = <a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00577 00578   <font class="keywordflow">if</font>( object != NULL &amp;&amp;00579       object-&gt;<a class="code" href="classObject.html#a21">getTimeLastSeen</a>() == <a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>() )00580     <font class="keywordflow">return</font> <font class="keyword">true</font>;00581 00582   <font class="keywordflow">return</font> <font class="keyword">false</font>;00583 }00584 <a name="l00589"></a><a class="code" href="classWorldModel.html#a128">00589</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a128">WorldModel::isBallKickable</a>()00590 {00591   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) &lt; <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a210">getMaximalKickDist</a>();00592 }00593 <a name="l00603"></a><a class="code" href="classWorldModel.html#a129">00603</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a129">WorldModel::isBallCatchable</a>()00604 {00605   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a1">getTimeSinceLastCatch</a>()            &gt; <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a54">getCatchBanCycle</a>()  &amp;&amp;

⌨️ 快捷键说明

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