worldmodelhighlevel_8c-source.html

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

HTML
765
字号
00606          <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#a48">getCatchableAreaL</a>() &amp;&amp;00607          <a class="code" href="classWorldModel.html#a133">isInOwnPenaltyArea</a>( <a class="code" href="classWorldModel.html#a47">getBallPos</a>() );00608 }00609 <a name="l00619"></a><a class="code" href="classWorldModel.html#a130">00619</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a130">WorldModel::isBallHeadingToGoal</a>(  )00620 {00621   <font class="keywordflow">if</font>( !<a class="code" href="classWorldModel.html#a135">isConfidenceGood</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> ) ||00622       <a class="code" href="classWorldModel.html#a47">getBallPos</a>().<a class="code" href="classVecPosition.html#a26">getX</a>() &gt;  - <a class="code" href="SoccerTypes_8h.html#a18">PENALTY_X</a> + 5.0 )00623     <font class="keywordflow">return</font> <font class="keyword">false</font>;00624 00625   <font class="comment">// make line from ball heading and goal line</font>00626   <a class="code" href="classLine.html">Line</a> l = <a class="code" href="classLine.html#d1">Line::makeLineFromPositionAndAngle</a>(<a class="code" href="classWorldModel.html#a47">getBallPos</a>(), <a class="code" href="classWorldModel.html#a49">getBallDirection</a>());00627   <a class="code" href="classLine.html">Line</a> l2= <a class="code" href="classLine.html#d0">Line::makeLineFromTwoPoints</a>( <a class="code" href="classWorldModel.html#a68">getPosOwnGoal</a>(), <a class="code" href="classWorldModel.html#a68">getPosOwnGoal</a>() +00628                                                          <a class="code" href="classVecPosition.html">VecPosition</a>( 0, 10 ));00629 00630   <font class="comment">// if intersection is outside goalwidth, not heading to goal</font>00631   <a class="code" href="classVecPosition.html">VecPosition</a> posIntersect = l.<a class="code" href="classLine.html#a2">getIntersection</a>( l2 );00632   <font class="keywordflow">if</font>( fabs(posIntersect.<a class="code" href="classVecPosition.html#a28">getY</a>()) &gt; <a class="code" href="classWorldModel.html#o0">SS</a>-&gt;<a class="code" href="classServerSettings.html#a4">getGoalWidth</a>()/2.0 + 3.0)00633     <font class="keywordflow">return</font> <font class="keyword">false</font>;00634 00635   <font class="comment">// check whether ball will be behind goal line within 20 cycles.</font>00636   <a class="code" href="classVecPosition.html">VecPosition</a> pos    = <a class="code" href="classWorldModel.html#a47">getBallPos</a>();00637   <font class="keywordtype">int</font>         iCycle = 1;00638   <font class="keywordflow">while</font>( pos.<a class="code" href="classVecPosition.html#a26">getX</a>() &gt; - <a class="code" href="SoccerTypes_8h.html#a13">PITCH_LENGTH</a>/2.0 &amp;&amp; iCycle &lt; 20)00639   {00640     pos = <a class="code" href="classWorldModel.html#a107">predictPosAfterNrCycles</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, iCycle );00641     iCycle ++;00642   }00643 00644   <font class="keywordflow">return</font> ( iCycle == 20 ) ? <font class="keyword">false</font> : <font class="keyword">true</font>;00645 }00646 <a name="l00651"></a><a class="code" href="classWorldModel.html#a131">00651</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a131">WorldModel::isBallInOurPossesion</a>( )00652 {00653   <font class="keywordtype">int</font>     iCyc;00654   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o = <a class="code" href="classWorldModel.html#a122">getFastestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241a117">OBJECT_SET_PLAYERS</a>, <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a>, &amp;iCyc );00655 00656   <font class="keywordflow">if</font>( o == <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a> )00657     <font class="keywordflow">return</font> <font class="keyword">false</font>;00658   <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d9">SoccerTypes::isTeammate</a>( o ) )00659     <font class="keywordflow">return</font> <font class="keyword">true</font>;00660   <font class="keywordflow">else</font>00661     <font class="keywordflow">return</font> <font class="keyword">false</font>;00662 }00663 <a name="l00666"></a><a class="code" href="classWorldModel.html#a132">00666</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a132">WorldModel::isBallInOwnPenaltyArea</a>( )00667 {00668   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a133">isInOwnPenaltyArea</a>( <a class="code" href="classWorldModel.html#a47">getBallPos</a>() );00669 }00670 <a name="l00675"></a><a class="code" href="classWorldModel.html#a133">00675</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a133">WorldModel::isInOwnPenaltyArea</a>( <a class="code" href="classVecPosition.html">VecPosition</a> pos )00676 {00677   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     objFlag = ( <a class="code" href="classWorldModel.html#a16">getSide</a>() == <a class="code" href="SoccerTypes_8h.html#a246a177">SIDE_LEFT</a> )00678                               ?  <a class="code" href="SoccerTypes_8h.html#a240a79">OBJECT_FLAG_P_L_C</a>00679                               :  <a class="code" href="SoccerTypes_8h.html#a240a82">OBJECT_FLAG_P_R_C</a> ;00680   <a class="code" href="classVecPosition.html">VecPosition</a> posFlag = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( objFlag, <a class="code" href="classWorldModel.html#a16">getSide</a>());00681   <font class="keywordflow">if</font>( pos.<a class="code" href="classVecPosition.html#a26">getX</a>()         &lt; posFlag.<a class="code" href="classVecPosition.html#a26">getX</a>() &amp;&amp;00682       fabs( pos.<a class="code" href="classVecPosition.html#a28">getY</a>() ) &lt; <a class="code" href="SoccerTypes_8h.html#a17">PENALTY_AREA_WIDTH</a>/2.0 )00683     <font class="keywordflow">return</font> <font class="keyword">true</font>;00684 00685   <font class="keywordflow">return</font> <font class="keyword">false</font>;00686 }00687 <a name="l00692"></a><a class="code" href="classWorldModel.html#a134">00692</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a134">WorldModel::isInTheirPenaltyArea</a>( <a class="code" href="classVecPosition.html">VecPosition</a> pos )00693 {00694   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     objFlag = ( <a class="code" href="classWorldModel.html#a16">getSide</a>() == <a class="code" href="SoccerTypes_8h.html#a246a177">SIDE_LEFT</a> )00695                               ?  <a class="code" href="SoccerTypes_8h.html#a240a82">OBJECT_FLAG_P_R_C</a>00696                               :  <a class="code" href="SoccerTypes_8h.html#a240a79">OBJECT_FLAG_P_L_C</a> ;00697   <a class="code" href="classVecPosition.html">VecPosition</a> posFlag = <a class="code" href="classSoccerTypes.html#d17">SoccerTypes::getGlobalPositionFlag</a>( objFlag, <a class="code" href="classWorldModel.html#a16">getSide</a>());00698 00699   <font class="keywordflow">if</font> ( pos.<a class="code" href="classVecPosition.html#a26">getX</a>() &gt; posFlag.<a class="code" href="classVecPosition.html#a26">getX</a>() &amp;&amp;00700        fabs(pos.<a class="code" href="classVecPosition.html#a28">getY</a>()) &lt; <a class="code" href="SoccerTypes_8h.html#a17">PENALTY_AREA_WIDTH</a>/2.0 )00701     <font class="keywordflow">return</font> <font class="keyword">true</font>;00702 00703   <font class="keywordflow">return</font> <font class="keyword">false</font>;00704 }00705 <a name="l00712"></a><a class="code" href="classWorldModel.html#a135">00712</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a135">WorldModel::isConfidenceGood</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00713 {00714   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a61">getConfidence</a>( o ) &gt; <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>() &amp;&amp;00715          o != <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>();00716 }00717 <a name="l00724"></a><a class="code" href="classWorldModel.html#a136">00724</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a136">WorldModel::isConfidenceVeryGood</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o )00725 {00726   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a61">getConfidence</a>( o ) &gt; <a class="code" href="classWorldModel.html#o1">PS</a>-&gt;<a class="code" href="classPlayerSettings.html#a3">getPlayerHighConfThr</a>() &amp;&amp;00727          o != <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>();00728 }00729 <a name="l00733"></a><a class="code" href="classWorldModel.html#a137">00733</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a137">WorldModel::isOnside</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj )00734 {00735   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( obj ).<a class="code" href="classVecPosition.html#a26">getX</a>() &lt; <a class="code" href="classWorldModel.html#a140">getOffsideX</a>() - 1.0;00736 }00737 <a name="l00745"></a><a class="code" href="classWorldModel.html#a138">00745</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a138">WorldModel::isOpponentAtAngle</a>( <a class="code" href="Geometry_8h.html#a2">AngDeg</a> ang , <font class="keywordtype">double</font> dDist )00746 {00747   <a class="code" href="classVecPosition.html">VecPosition</a> posAgent   = <a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>();00748   <a class="code" href="classVecPosition.html">VecPosition</a> posOpp;00749   <a class="code" href="Geometry_8h.html#a2">AngDeg</a>      angOpp;00750   <font class="keywordtype">int</font>         iIndex;00751 00752   <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, <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a> );00753        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00754        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a> ) )00755   {00756     posOpp    = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00757     angOpp    = ( posOpp - posAgent ).getDirection() ;00758     <font class="keywordflow">if</font>( fabs( angOpp - ang ) &lt; 60 &amp;&amp;00759         posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOpp ) &lt; dDist )00760       <font class="keywordflow">return</font> <font class="keyword">true</font>;00761     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( fabs( angOpp - ang ) &lt; 120 &amp;&amp;00762              posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOpp ) &lt; dDist/2.0 )00763       <font class="keywordflow">return</font> <font class="keyword">true</font>;00764   }00765   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00766   <font class="keywordflow">return</font> <font class="keyword">false</font>;00767 }00768 <a name="l00775"></a><a class="code" href="classWorldModel.html#a139">00775</a> <a class="code" href="classTime.html">Time</a> <a class="code" href="classWorldModel.html#a139">WorldModel::getTimeFromConfidence</a>( <font class="keywordtype">double</font> dConf )00776 {00777   <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>()-(int)((1.00-dConf)*100);00778 }00779 <a name="l00786"></a><a class="code" href="classWorldModel.html#a140">00786</a> <font class="keywordtype">double</font> <a class="code" href="classWorldModel.html#a140">WorldModel::getOffsideX</a>( )00787 {00788   <font class="keywordtype">double</font>  dHighestX = 0.0;00789   <font class="keywordtype">double</font>  dSecondX  = 0.0;00790   <font class="keywordtype">double</font>  x;00791   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o;00792   <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 ++ )00793   {00794     o = <a class="code" href="classWorldModel.html#o16">Opponents</a>[i].<a class="code" href="classObject.html#a6">getType</a>();00795     <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a135">isConfidenceGood</a>( o ) )00796     {00797       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>();00798       <font class="keywordflow">if</font>( x &gt; dHighestX )         <font class="comment">// if larger x than highest</font>00799       {00800         dSecondX  = dHighestX;    <font class="comment">// make second the previous highest</font>00801         dHighestX = x;            <font class="comment">// and this the new one</font>00802       }00803       <font class="keywordflow">else</font> <font class="keywordflow">if</font>( x &gt; dSecondX )     <font class="comment">// if smaller than highest and larger than 2nd</font>00804         dSecondX = x;             <font class="comment">// make it the second</font>00805     }00806   }00807   x = <a class="code" href="classWorldModel.html#o13">Ball</a>.<a class="code" href="classObject.html#a13">getGlobalPosition</a>().<a class="code" href="classVecPosition.html#a26">getX</a>();00808   <font class="keywordflow">return</font> <a class="code" href="Geometry_8h.html#a1">max</a>( x, dSecondX );00809 }00810 <a name="l00825"></a><a class="code" href="classWorldModel.html#a141">00825</a> <a class="code" href="classVecPosition.html">VecPosition</a> <a class="code" href="classWorldModel.html#a141">WorldModel::getOuterPositionInField</a>( <a class="code" href="classVecPosition.html">VecPosition</a> pos, <a class="code" href="Geometry_8h.html#a2">AngDeg</a> ang,00826                                   <font class="keywordtype">double</font> dDist, <font class="keywordtype">bool</font> bWithPenalty )00827 {00828   <a class="code" href="classVecPosition.html">VecPosition</a> posShoot;00829 

⌨️ 快捷键说明

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