worldmodelhighlevel_8c-source.html

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

HTML
765
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>WorldModelHighLevel.C Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body bgcolor="#ffffff"><!-- Generated by Doxygen 1.2.12 --><center><a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center><hr><h1>WorldModelHighLevel.C</h1><a href="WorldModelHighLevel_8C.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/*</font>00002 <font class="comment">Copyright (c) 2000,2001, Jelle Kok, University of Amsterdam</font>00003 <font class="comment">All rights reserved.</font>00004 <font class="comment"></font>00005 <font class="comment">Redistribution and use in source and binary forms, with or without </font>00006 <font class="comment">modification, are permitted provided that the following conditions are met:</font>00007 <font class="comment"></font>00008 <font class="comment">1. Redistributions of source code must retain the above copyright notice, this </font>00009 <font class="comment">list of conditions and the following disclaimer. </font>00010 <font class="comment"></font>00011 <font class="comment">2. Redistributions in binary form must reproduce the above copyright notice, </font>00012 <font class="comment">this list of conditions and the following disclaimer in the documentation </font>00013 <font class="comment">and/or other materials provided with the distribution. </font>00014 <font class="comment"></font>00015 <font class="comment">3. Neither the name of the University of Amsterdam nor the names of its </font>00016 <font class="comment">contributors may be used to endorse or promote products derived from this </font>00017 <font class="comment">software without specific prior written permission. </font>00018 <font class="comment"></font>00019 <font class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" </font>00020 <font class="comment">AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE </font>00021 <font class="comment">IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE </font>00022 <font class="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE </font>00023 <font class="comment">FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL </font>00024 <font class="comment">DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR </font>00025 <font class="comment">SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER </font>00026 <font class="comment">CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, </font>00027 <font class="comment">OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE </font>00028 <font class="comment">OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</font>00029 <font class="comment">*/</font>00044 <font class="preprocessor">#include&lt;list&gt;</font>            <font class="comment">// needed for list&lt;double&gt;</font>00045 <font class="preprocessor">#include&lt;stdio.h&gt;</font>         <font class="comment">// needed for printf</font>00046 <font class="preprocessor">#include "<a class="code" href="WorldModel_8h.html">WorldModel.h</a>"</font>00047 00048 <a name="l00057"></a><a class="code" href="classWorldModel.html#a113">00057</a> <font class="keywordtype">int</font> <a class="code" href="classWorldModel.html#a113">WorldModel::getNrInSetInRectangle</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set,00058                                        <a class="code" href="classRectangle.html">Rectangle</a> *rect=NULL)00059 {00060   <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>();00061   <font class="keywordtype">int</font>    iNr      = 0;00062   <font class="keywordtype">int</font>    iIndex;00063 00064   <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 );00065        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00066        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00067   {00068     <font class="keywordflow">if</font>( rect == NULL || rect-&gt;isInside( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o ) ) )00069       iNr++;00070   }00071   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00072   <font class="keywordflow">return</font> iNr;00073 }00074 <a name="l00080"></a><a class="code" href="classWorldModel.html#a114">00080</a> <font class="keywordtype">int</font> <a class="code" href="classWorldModel.html#a114">WorldModel::getNrInSetInCircle</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="classCircle.html">Circle</a> c )00081 {00082   <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>();00083   <font class="keywordtype">int</font>    iNr      = 0;00084   <font class="keywordtype">int</font>    iIndex;00085 00086   <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 );00087        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00088        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00089   {00090     <font class="keywordflow">if</font>( c.<a class="code" href="classCircle.html#a10">isInside</a>( <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o ) ) )00091       iNr++;00092   }00093   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00094 00095   <font class="keywordflow">return</font> iNr;00096 }00097 <a name="l00109"></a><a class="code" href="classWorldModel.html#a115">00109</a> <font class="keywordtype">int</font> <a class="code" href="classWorldModel.html#a115">WorldModel::getNrInSetInCone</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> dWidth,00110                                       <a class="code" href="classVecPosition.html">VecPosition</a> start , <a class="code" href="classVecPosition.html">VecPosition</a> end )00111 {00112   <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>();00113   <font class="keywordtype">int</font>         iNr        = 0;00114   <font class="keywordtype">int</font>         iIndex;00115   <a class="code" href="classLine.html">Line</a>        line       = <a class="code" href="classLine.html#d0">Line::makeLineFromTwoPoints</a>( start, end );00116   <a class="code" href="classVecPosition.html">VecPosition</a> posOnLine;00117   <a class="code" href="classVecPosition.html">VecPosition</a> posObj;00118 00119   <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 );00120        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00121        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00122   {00123     posObj    = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00124     posOnLine = line.<a class="code" href="classLine.html#a5">getPointOnLineClosestTo</a>( posObj );00125     <font class="comment">// whether posOnLine lies in cone is checked by three constraints</font>00126     <font class="comment">// - does it lie in triangle (to infinity)</font>00127     <font class="comment">// - lies between start and end (and thus not behind me)</font>00128     <font class="comment">// - does it lie in circle</font>00129     <font class="keywordflow">if</font>(posOnLine.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(posObj) &lt; dWidth*posOnLine.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(start)00130        &amp;&amp; line.<a class="code" href="classLine.html#a7">isInBetween</a>( posOnLine, start, end )00131        &amp;&amp; start.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posObj ) &lt; start.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( end ) )00132         iNr++;00133   }00134   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00135   <font class="keywordflow">return</font> iNr;00136 }00137 <a name="l00148"></a><a class="code" href="classWorldModel.html#a116">00148</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="SoccerTypes_8h.html#a240">ObjectT</a> objTarget,00149                                         <font class="keywordtype">double</font> *dDist, <font class="keywordtype">double</font> dConfThr )00150 {00151   <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>();00152   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     closestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00153   <font class="keywordtype">double</font>      dMinMag       = 1000.0;00154   <a class="code" href="classVecPosition.html">VecPosition</a> v;00155   <font class="keywordtype">int</font>         iIndex;00156 00157   <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 );00158        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00159        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00160   {00161     <font class="keywordflow">if</font>( o != objTarget )               <font class="comment">// do not include target object</font>00162     {00163       v = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( objTarget ) - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00164       <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() &lt; dMinMag )00165       {00166         dMinMag       = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();00167         closestObject = o;00168       }00169     }00170   }00171 00172   <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00173   <font class="keywordflow">if</font>( dDist != NULL )00174     *dDist = dMinMag;00175   <font class="keywordflow">return</font> closestObject;00176 }00177 <a name="l00188"></a><a class="code" href="classWorldModel.html#a117">00188</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="classVecPosition.html">VecPosition</a> pos,00189                                        <font class="keywordtype">double</font> *dDist,  <font class="keywordtype">double</font> dConfThr )00190 {00191   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a>     closestObject   = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00192   <font class="keywordtype">double</font>      dMinMag         = 1000.0;00193   <a class="code" href="classVecPosition.html">VecPosition</a> v;00194   <font class="keywordtype">int</font>         iIndex;00195 00196   <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>();00197   <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 );00198        o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00199        o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00200   {00201     v = pos - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00202     <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() &lt; dMinMag )00203     {

⌨️ 快捷键说明

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