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> ) < <a class="code" href="classWorldModel.html#o0">SS</a>-><a class="code" href="classServerSettings.html#a48">getCatchableAreaL</a>() &&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>() > - <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>()) > <a class="code" href="classWorldModel.html#o0">SS</a>-><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>() > - <a class="code" href="SoccerTypes_8h.html#a13">PITCH_LENGTH</a>/2.0 && iCycle < 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>, &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>() < posFlag.<a class="code" href="classVecPosition.html#a26">getX</a>() &&00682 fabs( pos.<a class="code" href="classVecPosition.html#a28">getY</a>() ) < <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>() > posFlag.<a class="code" href="classVecPosition.html#a26">getX</a>() &&00700 fabs(pos.<a class="code" href="classVecPosition.html#a28">getY</a>()) < <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 ) > <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>() &&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 ) > <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a3">getPlayerHighConfThr</a>() &&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>() < <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 ) < 60 &&00759 posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOpp ) < 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 ) < 120 &&00762 posAgent.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOpp ) < 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 < <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 > 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 > 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 + -
显示快捷键?