worldmodelhighlevel_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 765 行 · 第 1/5 页
HTML
765 行
00204 dMinMag = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>();00205 closestObject = o;00206 }00207 }00208 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00209 <font class="keywordflow">if</font>( dDist != NULL )00210 *dDist = dMinMag;00211 <font class="keywordflow">return</font> closestObject;00212 }00213 <a name="l00227"></a><a class="code" href="classWorldModel.html#a118">00227</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="classLine.html">Line</a> l,00228 <a class="code" href="classVecPosition.html">VecPosition</a> pos1, <a class="code" href="classVecPosition.html">VecPosition</a> pos2,00229 <font class="keywordtype">double</font> *dDistObjToLine, <font class="keywordtype">double</font> *dDistPos1ToPoint)00230 {00231 <a class="code" href="classVecPosition.html">VecPosition</a> posObj;00232 <a class="code" href="classVecPosition.html">VecPosition</a> posOnLine;00233 <font class="keywordtype">double</font> dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00234 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00235 <font class="keywordtype">double</font> dDist = 1000.0;00236 <font class="keywordtype">double</font> dMinDist = 1000.0;00237 <font class="keywordtype">double</font> dDistPos1 = 1000.0;00238 <font class="keywordtype">int</font> iIndex;00239 00240 <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 );00241 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00242 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00243 {00244 posObj = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00245 posOnLine = l.<a class="code" href="classLine.html#a5">getPointOnLineClosestTo</a>( posObj );00246 dDist = posObj.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOnLine );00247 <font class="keywordflow">if</font>( l.<a class="code" href="classLine.html#a7">isInBetween</a>( posOnLine, pos1, pos2 ) && dDist < dMinDist )00248 {00249 dMinDist = dDist;00250 obj = o;00251 dDistPos1 = pos1.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>( posOnLine );00252 }00253 }00254 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00255 <font class="keywordflow">if</font>( dDistObjToLine != NULL )00256 *dDistObjToLine = dMinDist;00257 <font class="keywordflow">if</font>( dDistPos1ToPoint != NULL )00258 *dDistPos1ToPoint = dDistPos1;00259 00260 <font class="keywordflow">return</font> obj;00261 }00262 <a name="l00269"></a><a class="code" href="classWorldModel.html#a119">00269</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a119">WorldModel::getClosestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist )00270 {00271 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> closestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00272 <font class="keywordtype">double</font> dMinMag = 1000.0;00273 <font class="keywordtype">int</font> iIndex;00274 00275 <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 );00276 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00277 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00278 {00279 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o ) < dMinMag )00280 {00281 dMinMag = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00282 closestObject = o;00283 }00284 }00285 00286 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00287 <font class="keywordflow">if</font>( dDist != NULL )00288 *dDist = dMinMag;00289 <font class="keywordflow">return</font> closestObject;00290 }00291 <a name="l00302"></a><a class="code" href="classWorldModel.html#a120">00302</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a120">WorldModel::getSecondClosestInSetTo</a> ( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> obj,00303 <font class="keywordtype">double</font> *dDist, <font class="keywordtype">double</font> dConfThr )00304 {00305 <a class="code" href="classVecPosition.html">VecPosition</a> v;00306 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> closestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00307 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> secondClosestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00308 <font class="keywordtype">double</font> dMinMag = 1000.0;00309 <font class="keywordtype">double</font> dSecondMinMag = 1000.0;00310 <font class="keywordtype">int</font> iIndex;00311 00312 <font class="keywordflow">if</font>( dConfThr == -1.0 ) dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00313 00314 <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 );00315 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00316 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, dConfThr ) )00317 {00318 <font class="keywordflow">if</font>( o != obj )00319 {00320 v = <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( obj ) - <a class="code" href="classWorldModel.html#a51">getGlobalPosition</a>( o );00321 <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() < dMinMag ) <font class="comment">// closer then first</font>00322 {00323 dSecondMinMag = dMinMag; <font class="comment">// put first to second</font>00324 secondClosestObject = closestObject;00325 dMinMag = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>(); <font class="comment">// and this to first</font>00326 closestObject = o;00327 }00328 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>() < dSecondMinMag ) <font class="comment">// between first and 2nd</font>00329 {00330 dSecondMinMag = v.<a class="code" href="classVecPosition.html#a32">getMagnitude</a>(); <font class="comment">// put this to second</font>00331 secondClosestObject = o;00332 }00333 }00334 }00335 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00336 <font class="keywordflow">if</font>( dDist != NULL )00337 *dDist = dSecondMinMag;00338 <font class="keywordflow">return</font> secondClosestObject;00339 }00340 <a name="l00347"></a><a class="code" href="classWorldModel.html#a121">00347</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a121">WorldModel::getSecondClosestRelativeInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <font class="keywordtype">double</font> *dDist )00348 {00349 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> closestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00350 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> secondClosestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00351 <font class="keywordtype">double</font> dMinMag = 1000.0;00352 <font class="keywordtype">double</font> dSecondMinMag = 1000.0;00353 <font class="keywordtype">double</font> d;00354 <font class="keywordtype">int</font> iIndex;00355 00356 <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 );00357 o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00358 o = <a class="code" href="classWorldModel.html#a32">iterateObjectNext</a> ( iIndex, set, 1.0 ) )00359 {00360 d = <a class="code" href="classWorldModel.html#a54">getRelativeDistance</a>( o );00361 <font class="keywordflow">if</font>( d < dMinMag ) <font class="comment">// closer then first</font>00362 {00363 dSecondMinMag = dMinMag; <font class="comment">// put first to second</font>00364 secondClosestObject = closestObject;00365 dMinMag = d; <font class="comment">// and this to first</font>00366 closestObject = o;00367 }00368 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( d < dSecondMinMag ) <font class="comment">// between first and 2nd</font>00369 {00370 dSecondMinMag = d; <font class="comment">// put this to second</font>00371 secondClosestObject = o;00372 }00373 }00374 <a class="code" href="classWorldModel.html#a33">iterateObjectDone</a>( iIndex );00375 <font class="keywordflow">if</font>( dDist != NULL )00376 *dDist = dSecondMinMag;00377 <font class="keywordflow">return</font> secondClosestObject;00378 }00379 00380 <a name="l00391"></a><a class="code" href="classWorldModel.html#a124">00391</a> <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> <a class="code" href="classWorldModel.html#a124">WorldModel::getFurthestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241">ObjectSetT</a> set, <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> objTarget,00392 <font class="keywordtype">double</font> *dDist, <font class="keywordtype">double</font> dConfThr )00393 {00394 <font class="keywordflow">if</font>( dConfThr == -1.0 ) dConfThr = <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a1">getPlayerConfThr</a>();00395 00396 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> furthestObject = <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a>;00397 <font class="keywordtype">double</font> dMaxMag = -1000.0;00398 <a class="code" href="classVecPosition.html">VecPosition</a> v;00399 <font class="keywordtype">int</font> iIndex;00400 00401 <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 );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?