worldmodel_8c-source.html

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

HTML
685
字号
<a name="l00790"></a><a class="code" href="classWorldModel.html#a60">00790</a> <a class="code" href="Geometry_8h.html#a2">AngDeg</a> <a class="code" href="classWorldModel.html#a60">WorldModel::getGlobalAngle</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00791 {00792   <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d4">SoccerTypes::isLine</a>( o ) )00793     <font class="keywordflow">return</font> <a class="code" href="classSoccerTypes.html#d18">SoccerTypes::getGlobalAngleLine</a>( o, <a class="code" href="classWorldModel.html#a16">getSide</a>() );00794   <font class="keywordflow">return</font> <a class="code" href="SoccerTypes_8h.html#a20">UnknownAngleValue</a>;00795 }00796 00797 <a name="l00803"></a><a class="code" href="classWorldModel.html#a61">00803</a> <font class="keywordtype">double</font> <a class="code" href="classWorldModel.html#a61">WorldModel::getConfidence</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o)00804 {00805   <a class="code" href="classObject.html">Object</a> *object = <a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00806   <font class="keywordflow">if</font>( object != NULL )00807     <font class="keywordflow">return</font> object-&gt;<a class="code" href="classObject.html#a4">getConfidence</a>( <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() );00808   <font class="keywordflow">return</font> 0.0;00809 }00810 <a name="l00818"></a><a class="code" href="classWorldModel.html#a62">00818</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a62">WorldModel::isKnownPlayer</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00819 {00820   <a class="code" href="classPlayerObject.html">PlayerObject</a> *object = (<a class="code" href="classPlayerObject.html">PlayerObject</a> *)<a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00821   <font class="keywordflow">if</font>( object != NULL  )00822     <font class="keywordflow">return</font> object-&gt;<a class="code" href="classPlayerObject.html#a4">getIsKnownPlayer</a>();00823   <font class="keywordflow">return</font> <font class="keyword">false</font>;00824 00825 }00826 <a name="l00835"></a><a class="code" href="classWorldModel.html#a63">00835</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a63">WorldModel::getOppGoalieType</a>()00836 {00837   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> objOppMaxX = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00838   <font class="keywordtype">double</font>  x = -100.0, y = <a class="code" href="SoccerTypes_8h.html#a19">UnknownDoubleValue</a>;00839 00840   <font class="keywordflow">for</font>( <font class="keywordtype">int</font> i = 0; i &lt; <a class="code" href="SoccerTypes_8h.html#a1">MAX_OPPONENTS</a>; i++ )00841   {00842     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a135">isConfidenceGood</a>( <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].getType( ) ) )00843     {00844       <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classPlayerObject.html#a6">getIsGoalie</a>() == <font class="keyword">true</font> )00845         <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a6">getType</a>();00846       <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a26">getX</a>() &gt; x )00847       {00848         x          = <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a26">getX</a>();00849         y          = <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a28">getY</a>();00850         objOppMaxX = <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a6">getType</a>();00851       }00852     }00853   }00854 00855   <font class="comment">// if opponent with highest x is nr 1, assume it is goalkeeper when standing</font>00856   <font class="comment">// in own penalty area, otherwise assume goalkeeper closest player to goal.</font>00857   <font class="keywordflow">if</font>(  objOppMaxX == <a class="code" href="SoccerTypes_8h.html#a240a97">OBJECT_OPPONENT_1</a> &amp;&amp; x &gt; <a class="code" href="SoccerTypes_8h.html#a18">PENALTY_X</a> + 4.0 ||00858       (objOppMaxX != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>    &amp;&amp; x &gt; <a class="code" href="SoccerTypes_8h.html#a13">PITCH_LENGTH</a>/2.0 - 6.0 &amp;&amp;00859        fabs( y ) &lt; <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>()/2.0 ))00860     <font class="keywordflow">return</font> objOppMaxX;00861   <font class="keywordflow">return</font> <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00862 }00863 00864 <a name="l00873"></a><a class="code" href="classWorldModel.html#a64">00873</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a64">WorldModel::getOwnGoalieType</a>()00874 {00875   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> objOwnMinX = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00876   <font class="keywordtype">double</font> x = -100.0, y = <a class="code" href="SoccerTypes_8h.html#a19">UnknownDoubleValue</a>;00877   <font class="keywordflow">for</font>( <font class="keywordtype">int</font> i = 0; i &lt; <a class="code" href="SoccerTypes_8h.html#a0">MAX_TEAMMATES</a>; i++ )00878   {00879     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a135">isConfidenceGood</a>( <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].getType( ) ) )00880     {00881       <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classPlayerObject.html#a6">getIsGoalie</a>() == <font class="keyword">true</font> )00882         <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classObject.html#a6">getType</a>();00883       <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a26">getX</a>() &lt; x )00884       {00885         x          = <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a26">getX</a>();00886         y          = <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a28">getY</a>();00887         objOwnMinX = <a class="code" href="classWorldModel.html#o15">Teammates</a>[i].<a class="code" href="classObject.html#a6">getType</a>();00888       }00889     }00890   }00891   <font class="keywordflow">if</font>(  objOwnMinX == <a class="code" href="SoccerTypes_8h.html#a240a85">OBJECT_TEAMMATE_1</a> &amp;&amp; x &lt; - ( <a class="code" href="SoccerTypes_8h.html#a18">PENALTY_X</a> + 4.0 ) ||00892       (objOwnMinX != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>    &amp;&amp; x &lt; - ( <a class="code" href="SoccerTypes_8h.html#a13">PITCH_LENGTH</a>/2.0 - 6.0 ) &amp;&amp;00893        fabs( y ) &lt; <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>()/2.0 ))00894     <font class="keywordflow">return</font> objOwnMinX;00895   <font class="keywordflow">return</font> <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00896 }00897 00898 <a name="l00903"></a><a class="code" href="classWorldModel.html#a65">00903</a> <a class="code" href="classTime.html">Time</a> <a class="code" href="classWorldModel.html#a65">WorldModel::getTimeLastSeen</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00904 {00905   <a class="code" href="classObject.html">Object</a> *object = <a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00906   <font class="keywordflow">if</font>( object != NULL )00907     <font class="keywordflow">return</font> object-&gt;<a class="code" href="classObject.html#a21">getTimeLastSeen</a>(  );00908   <font class="keywordflow">return</font> <a class="code" href="classTime.html">Time</a>( -1, 0);00909 00910 }00911 <a name="l00920"></a><a class="code" href="classWorldModel.html#a66">00920</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a66">WorldModel::setIsKnownPlayer</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o, <font class="keywordtype">bool</font> isKnownPlayer )00921 {00922   <a class="code" href="classPlayerObject.html">PlayerObject</a> *object = (<a class="code" href="classPlayerObject.html">PlayerObject</a>*) <a class="code" href="classWorldModel.html#c0">getObjectPtrFromType</a>( o );00923   <font class="keywordflow">return</font> object-&gt;<a class="code" href="classPlayerObject.html#a3">setIsKnownPlayer</a>( <a class="code" href="classWorldModel.html#a62">isKnownPlayer</a> );00924 }00925 <a name="l00928"></a><a class="code" href="classWorldModel.html#a67">00928</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classWorldModel.html#a67">WorldModel::getPosOpponentGoal</a>( )00929 {00930   <font class="keywordflow">return</font> <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>(00931                         <a class="code" href="classSoccerTypes.html#d7">SoccerTypes::getGoalOpponent</a>( <a class="code" href="classWorldModel.html#a16">getSide</a>() ),00932                         <a class="code" href="classWorldModel.html#a16">getSide</a>( ),00933                         <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>() );00934 }00935 <a name="l00938"></a><a class="code" href="classWorldModel.html#a68">00938</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classWorldModel.html#a68">WorldModel::getPosOwnGoal</a>( )00939 {00940   <font class="keywordflow">return</font> <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>(00941                         <a class="code" href="classSoccerTypes.html#d6">SoccerTypes::getOwnGoal</a>( <a class="code" href="classWorldModel.html#a16">getSide</a>() ),00942                         <a class="code" href="classWorldModel.html#a16">getSide</a>( ),00943                         <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>() );00944 }00945 <a name="l00948"></a><a class="code" href="classWorldModel.html#a69">00948</a> <font class="keywordtype">double</font>  <a class="code" href="classWorldModel.html#a69">WorldModel::getRelDistanceOpponentGoal</a>()00949 {00950   <a class="code" href="classVecPosition.html">VecPosition</a> posGoal;00951   <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o10">sideSide</a> == <a class="code" href="SoccerTypes_8h.html#a246a177">SIDE_LEFT</a> )00952     posGoal = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( <a class="code" href="SoccerTypes_8h.html#a240a26">OBJECT_GOAL_R</a>, <a class="code" href="classWorldModel.html#o10">sideSide</a> );00953   <font class="keywordflow">else</font>00954     posGoal = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( <a class="code" href="SoccerTypes_8h.html#a240a25">OBJECT_GOAL_L</a>, <a class="code" href="classWorldModel.html#o10">sideSide</a> );00955 00956   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>().<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posGoal );00957 00958 }00959 <a name="l00964"></a><a class="code" href="classWorldModel.html#a70">00964</a> <font class="keywordtype">double</font>  <a class="code" href="classWorldModel.html#a70">WorldModel::getRelAngleOpponentGoal</a>()00965 {00966   <a class="code" href="classVecPosition.html">VecPosition</a> posGoal;00967   <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o10">sideSide</a> == <a class="code" href="SoccerTypes_8h.html#a246a177">SIDE_LEFT</a> )00968     posGoal = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( <a class="code" href="SoccerTypes_8h.html#a240a26">OBJECT_GOAL_R</a>, <a class="code" href="classWorldModel.html#o10">sideSide</a> );00969   <font class="keywordflow">else</font>00970     posGoal = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( <a class="code" href="SoccerTypes_8h.html#a240a25">OBJECT_GOAL_L</a>, <a class="code" href="classWorldModel.html#o10">sideSide</a> );00971 00972   <font class="keywordflow">return</font> ( posGoal - <a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>()).getDirection() ;00973 00974 }00975 <a name="l00979"></a><a class="code" href="classWorldModel.html#a71">00979</a> <a class="code" href="classHeteroPlayerSettings.html">HeteroPlayerSettings</a> <a class="code" href="classWorldModel.html#a71">WorldModel::getInfoHeteroPlayer</a>( <font class="keywordtype">int</

⌨️ 快捷键说明

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