worldmodelupdate_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 629 行 · 第 1/5 页
HTML
629 行
00174 d-><a class="code" href="classDynamicObject.html#a1">setRelativeDistanceChange</a>( dDistChange, time );00175 <font class="keywordflow">if</font>( dDirChange != <a class="code" href="SoccerTypes_8h.html#a19">UnknownDoubleValue</a> )00176 d-><a class="code" href="classDynamicObject.html#a3">setRelativeAngleChange</a>( dDirChange, time );00177 <font class="keywordflow">if</font>( angRelBodyAng != <a class="code" href="SoccerTypes_8h.html#a20">UnknownAngleValue</a> )00178 ((<a class="code" href="classPlayerObject.html">PlayerObject</a>*)d)->setRelativeBodyAngle( angRelBodyAng, time );00179 <font class="keywordflow">if</font>( angRelNeckAng != <a class="code" href="SoccerTypes_8h.html#a20">UnknownAngleValue</a> )00180 ((<a class="code" href="classPlayerObject.html">PlayerObject</a>*)d)->setRelativeNeckAngle( angRelNeckAng, time );00181 <font class="keywordflow">if</font>( isGoalie == <font class="keyword">true</font> && <a class="code" href="classSoccerTypes.html#d12">SoccerTypes::isPlayer</a>( o ))00182 ((<a class="code" href="classPlayerObject.html">PlayerObject</a>*)d)->setIsGoalie( <font class="keyword">true</font> );00183 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d12">SoccerTypes::isPlayer</a>( o ))00184 ((<a class="code" href="classPlayerObject.html">PlayerObject</a>*)d)->setIsGoalie( <font class="keyword">false</font> );00185 d-><a class="code" href="classObject.html#a5">setType</a>( o );00186 d-><a class="code" href="classObject.html#a20">setTimeLastSeen</a>( time );00187 }00188 }00189 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d4">SoccerTypes::isLine</a>( o ) )00190 {00191 <font class="comment">// angle returned is angle of neck angle with line, convert to angle</font>00192 <font class="comment">// of neck with orthogonal to line</font>00193 iDir = ( iDir < 0 ) ? (90 + iDir ) : - (90 - iDir );00194 <a class="code" href="classWorldModel.html#o20">Lines</a>[<a class="code" href="classSoccerTypes.html#d14">SoccerTypes::getIndex</a>(o)].setRelativePosition(dDist,(<font class="keywordtype">double</font>)iDir,time);00195 <a class="code" href="classWorldModel.html#o20">Lines</a>[<a class="code" href="classSoccerTypes.html#d14">SoccerTypes::getIndex</a>(o)].setTimeLastSeen( time );00196 <a class="code" href="classWorldModel.html#o20">Lines</a>[<a class="code" href="classSoccerTypes.html#d14">SoccerTypes::getIndex</a>(o)].setType( o );00197 }00198 }00199 <a name="l00207"></a><a class="code" href="classWorldModel.html#a92">00207</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a92">WorldModel::processPerfectHearInfoBall</a>( <a class="code" href="classVecPosition.html">VecPosition</a> posGlobal,00208 <a class="code" href="classVecPosition.html">VecPosition</a> vel, <font class="keywordtype">double</font> dConf )00209 {00210 <font class="keywordflow">if</font>( <a class="code" href="classWorldModel.html#o13">Ball</a>.<a class="code" href="classObject.html#a4">getConfidence</a>( <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() ) < dConf )00211 {00212 <a class="code" href="classTime.html">Time</a> time = <a class="code" href="classWorldModel.html#a139">getTimeFromConfidence</a>( dConf );00213 <a class="code" href="classWorldModel.html#o13">Ball</a>.<a class="code" href="classObject.html#a12">setGlobalPosition</a>( posGlobal, time );00214 <a class="code" href="classWorldModel.html#o13">Ball</a>.<a class="code" href="classDynamicObject.html#a7">setGlobalVelocity</a>( vel, time );00215 <a class="code" href="classWorldModel.html#c10">updateObjectRelativeFromGlobal</a>( <a class="code" href="SoccerTypes_8h.html#a240a24">OBJECT_BALL</a> );00216 <font class="keywordflow">return</font> <font class="keyword">true</font>;00217 }00218 <font class="keywordflow">return</font> <font class="keyword">false</font>;00219 }00220 <a name="l00232"></a><a class="code" href="classWorldModel.html#a91">00232</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a91">WorldModel::processPerfectHearInfo</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o, <a class="code" href="classVecPosition.html">VecPosition</a> posGlobal,00233 <font class="keywordtype">double</font> dConf, <font class="keywordtype">bool</font> bIsGoalie )00234 {00235 <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d8">SoccerTypes::isBall</a>( o ) || o == <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() )00236 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// ball should be called with processPerfectHearInfoBall</font>00237 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( !<a class="code" href="classSoccerTypes.html#d13">SoccerTypes::isKnownPlayer</a>( o ) )00238 <font class="keywordflow">return</font> <a class="code" href="classWorldModel.html#a93">processUnsureHearInfo</a>( o, posGlobal, dConf );00239 00240 <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 );00241 <font class="keywordflow">if</font>( object == NULL )00242 <font class="keywordflow">return</font> <font class="keyword">false</font>;00243 00244 <a class="code" href="classTime.html">Time</a> time = <a class="code" href="classWorldModel.html#a139">getTimeFromConfidence</a>( dConf ) ;00245 00246 <font class="comment">// if we are not sure about the exact player number of this player in</font>00247 <font class="comment">// the world model (getIsKnownPlayer() == false) we overwrite the</font>00248 <font class="comment">// information of this player since the player who said this information</font>00249 <font class="comment">// is sure about it (otherwise processUnsureHearInfo would be called instead</font>00250 <font class="comment">// of processPERFECTHearInfo)</font>00251 <font class="keywordflow">if</font>( object-><a class="code" href="classObject.html#a4">getConfidence</a>( <a class="code" href="classWorldModel.html#a4">getCurrentTime</a>() ) < dConf ||00252 object-><a class="code" href="classPlayerObject.html#a4">getIsKnownPlayer</a>() == <font class="keyword">false</font> )00253 {00254 object-><a class="code" href="classObject.html#a12">setGlobalPosition</a> ( posGlobal , time );00255 object-><a class="code" href="classObject.html#a20">setTimeLastSeen</a> ( time );00256 object-><a class="code" href="classDynamicObject.html#a7">setGlobalVelocity</a> ( <a class="code" href="classVecPosition.html">VecPosition</a>( 0, 0), time );00257 object-><a class="code" href="classPlayerObject.html#a3">setIsKnownPlayer</a> ( <font class="keyword">true</font> );00258 object-><a class="code" href="classPlayerObject.html#a5">setIsGoalie</a> ( bIsGoalie );00259 <a class="code" href="classWorldModel.html#c10">updateObjectRelativeFromGlobal</a>( o );00260 <font class="keywordflow">return</font> <font class="keyword">true</font>;00261 }00262 <font class="keywordflow">return</font> <font class="keyword">false</font>;00263 }00264 <a name="l00276"></a><a class="code" href="classWorldModel.html#a93">00276</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a93">WorldModel::processUnsureHearInfo</a>( <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o, <a class="code" href="classVecPosition.html">VecPosition</a> pos,00277 <font class="keywordtype">double</font> dConf )00278 {00279 <font class="keywordtype">double</font> dMinDist; <font class="comment">// used to find closest player to pos</font>00280 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> objInitial = o;00281 00282 <font class="keywordflow">if</font>( o != <a class="code" href="SoccerTypes_8h.html#a240a96">OBJECT_TEAMMATE_UNKNOWN</a> && o != <a class="code" href="SoccerTypes_8h.html#a240a108">OBJECT_OPPONENT_UNKNOWN</a> )00283 <font class="keywordflow">return</font> <font class="keyword">false</font>;00284 00285 <font class="comment">// if o is a teammate find closest teammate to pos and store distance</font>00286 <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d9">SoccerTypes::isTeammate</a>( o ) )00287 o = <a class="code" href="classWorldModel.html#a116">getClosestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241a115">OBJECT_SET_TEAMMATES</a>, pos, &dMinDist);00288 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d10">SoccerTypes::isOpponent</a>( o ) ) <font class="comment">// if o is an opponent, do the same</font>00289 o = <a class="code" href="classWorldModel.html#a116">getClosestInSetTo</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a>, pos, &dMinDist);00290 00291 <font class="keywordflow">if</font>( o == <a class="code" href="classWorldModel.html#a34">getAgentObjectType</a>() && 00292 pos.<a class="code" href="classVecPosition.html#a30">getDistanceTo</a>(<a class="code" href="classWorldModel.html#a43">getAgentGlobalPosition</a>())<<a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a7">getPlayerDistTolerance</a>())00293 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// do not update my own position, localization is better</font>00294 00295 <font class="comment">// if opponent or teammate was found and distance lies in tolerance distance</font>00296 <font class="comment">// update this opponent or teammate with the specified information.</font>00297 <font class="comment">// else put the information in the first player position of which we have</font>00298 <font class="comment">// no information.</font>00299 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classSoccerTypes.html#d13">SoccerTypes::isKnownPlayer</a>(o) && 00300 dMinDist < <a class="code" href="classWorldModel.html#o1">PS</a>-><a class="code" href="classPlayerSettings.html#a7">getPlayerDistTolerance</a>())00301 {00302 <a class="code" href="classWorldModel.html#a91">processPerfectHearInfo</a>( o, pos, dConf );00303 <font class="keywordflow">return</font> <font class="keyword">true</font>;00304 }00305 00306 <font class="keywordflow">if</font>( objInitial == <a class="code" href="SoccerTypes_8h.html#a240a96">OBJECT_TEAMMATE_UNKNOWN</a> )00307 o = <a class="code" href="classWorldModel.html#a126">getFirstEmptySpotInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241a115">OBJECT_SET_TEAMMATES</a> );00308 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( objInitial == <a class="code" href="SoccerTypes_8h.html#a240a108">OBJECT_OPPONENT_UNKNOWN</a> )00309 o = <a class="code" href="classWorldModel.html#a126">getFirstEmptySpotInSet</a>( <a class="code" href="SoccerTypes_8h.html#a241a116">OBJECT_SET_OPPONENTS</a> );00310 <font class="keywordflow">else</font>00311 <font class="keywordflow">return</font> <font class="keyword">false</font> ; <font class="comment">// in case of OBJECT_PLAYER_UNKNOWN</font>00312 00313 <font class="keywordflow">if</font>( o != <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a> ) <font class="comment">// can be the case that there is no empty spot</font>00314 {00315 <a class="code" href="classWorldModel.html#a91">processPerfectHearInfo</a>( o, pos, dConf );00316 <a class="code" href="classWorldModel.html#a66">setIsKnownPlayer</a>( o, <font class="keyword">false</font> );00317 }00318 <font class="keywordflow">return</font> <font class="keyword">true</font>;00319 }00320 <a name="l00341"></a><a class="code" href="classWorldModel.html#a94">00341</a> <font class="keywordtype">bool</font> <a class="code" href="classWorldModel.html#a94">WorldModel::processNewHeteroPlayer</a>( <font class="keywordtype">int</font> iIndex, <font class="keywordtype">double</font> dPlayerSpeedMax,00342 <font class="keywordtype">double</font> dStaminaIncMax, <font class="keywordtype">double</font> dPlayerDecay, <font class="keywordtype">double</font> dInertiaMoment,00343 <font class="keywordtype">double</font> dDashPowerRate, <font class="keywordtype">double</font> dPlayerSize, <font class="keywordtype">double</font> dKickableMargin,00344 <font class="keywordtype">double</font> dKickRand, <font class="keywordtype">double</font> dExtraStamina, <font class="keywordtype">double</font> dEffortMax,00345 <font class="keywordtype">double</font> dEffortMin )00346 {00347 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m0">dPlayerSpeedMax</a> = dPlayerSpeedMax;00348 <a class="code" href="classWorldModel.html#o2">pt</a>[iIndex].<a class="code" href="classHeteroPlayerSettings.html#m1">dStaminaIncMax</a> = dStaminaIncMax;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?