⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 landmarkreader.c

📁 在LINUX下运行的仿真机器人服务器源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
		return false;	    }	}      else if ( std::string ( attr[i] ) == LandmarkReader::STARTY_KW )	{	  if ( rect_stack.size () == 0 )	    {	      if ( !extract ( attr[i], attr[i+1], rect.starty ) )	      return false;	    }	  else	    {	      if ( !extract ( attr[i], attr[i+1], rect.starty, 			      rect_stack.top ().starty, rect_stack.top ().endy ) )		return false;	    }	}      else if ( std::string ( attr[i] ) == LandmarkReader::ENDX_KW )	{	  if ( rect_stack.size () == 0 )	    {	      if ( !extract ( attr[i], attr[i+1], rect.endx ) )	      return false;	    }	  else	    {	      if ( !extract ( attr[i], attr[i+1], rect.endx, 			      rect_stack.top ().startx, rect_stack.top ().endx ) )		return false;	    }	}      else if ( std::string ( attr[i] ) == LandmarkReader::ENDY_KW )	{	  if ( rect_stack.size () == 0 )	    {	      if ( !extract ( attr[i], attr[i+1], rect.endy ) )	      return false;	    }	  else	    {	      if ( !extract ( attr[i], attr[i+1], rect.endy, 			      rect_stack.top ().starty, rect_stack.top ().endy ) )		return false;	    }	}      else	{	  // error        std::cerr << path << ": " << line	       << ": unknown attribute " << attr[i] << std::endl;	  return false;	}    }  rect_stack.push (rect);  if ( main )    {      pitch = rect;    }  return true;}bool LandmarkReader::processFlag ( const char **attr, bool goal ){  LandmarkReader::flag_t flag = LandmarkReader::DEF_FLAG;   if ( rect_stack.size () > 0 )    {      flag.x = ( rect_stack.top ().startx + rect_stack.top ().endx ) * 0.5;       flag.y = ( rect_stack.top ().starty + rect_stack.top ().endy ) * 0.5;     }  for (int i = 0; attr[i]; i += 2)     {      if ( std::string ( attr[i] ) == LandmarkReader::X_KW )	{	  if ( rect_stack.size () == 0 )	    {	      if ( !extract ( attr[i], attr[i+1], flag.x ) )	      return false;	    }	  else	    {	      if ( !extract ( attr[i], attr[i+1], flag.x, 			      rect_stack.top ().startx, rect_stack.top ().endx ) )		return false;	    }	}      else if ( std::string ( attr[i] ) == LandmarkReader::Y_KW )	{	  if ( rect_stack.size () == 0 )	    {	      if ( !extract ( attr[i], attr[i+1], flag.y ) )	      return false;	    }	  else	    {	      if ( !extract ( attr[i], attr[i+1], flag.y, 			      rect_stack.top ().starty, rect_stack.top ().endy ) )		return false;	    }	}      else if ( std::string ( attr[i] ) == LandmarkReader::NAME_KW )	{	  if ( !extract ( attr[i], attr[i+1], flag.name ) )	    return false;	}      else if ( std::string ( attr[i] ) == LandmarkReader::VER_KW )	{	  if ( !extract ( attr[i], attr[i+1], flag.ver ) )	    return false;	}      else	{	  std::cerr << path << ": " << line	       << ": Unknown attribute " << attr[i] << std::endl;	  return false;	}    }  addFlag ( flag, goal );}#endif // HAVE_LIBEXPAT  // Be very carefull when changing the default values.  If you  // change from abs to percent or visa-versa, make sure you add  // or remove the % sign in the print function and the loadDefaults.std::ostream& LandmarkReader::print ( std::ostream& o ) const{  o << "<?xml version=\"1.0\"?>" << std::endl;  o << "" << std::endl;  o << "" << std::endl;  o << "<mainPitch startx=\"" << LandmarkReader::DEF_PITCH.startx     << "\" starty=\"" << LandmarkReader::DEF_PITCH.starty     << "\" endx=\"" << LandmarkReader::DEF_PITCH.endx     << "\" endy=\"" << LandmarkReader::DEF_PITCH.endy    << "\">" << std::endl;  LandmarkReader::FLAG_C.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_C_T.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_C_B.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_R_T.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_R_B.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_L_T.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_L_B.toXml ( o << "\t" ) << std::endl;  LandmarkReader::GOAL_MOUTH_R.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_G_R_B.toXml ( o << "\t\t" ) << std::endl;  o << "\t\t<goal y=\"" << LandmarkReader::GOAL_R.y     << "%\" name=\"" << LandmarkReader::GOAL_R.name     << "\" ver=\"" << LandmarkReader::GOAL_R.ver     << "\"/>" << std::endl;  LandmarkReader::FLAG_G_R_T.toXml ( o << "\t\t" ) << std::endl;  o << "\t</goalMouth>" << std::endl;  LandmarkReader::GOAL_MOUTH_L.toXml ( o << "\t" ) << std::endl;  LandmarkReader::FLAG_G_L_B.toXml ( o << "\t\t" ) << std::endl;  o << "\t\t<goal y=\"" << LandmarkReader::GOAL_L.y     << "%\" name=\"" << LandmarkReader::GOAL_L.name     << "\" ver=\"" << LandmarkReader::GOAL_L.ver     << "\"/>" << std::endl;  LandmarkReader::FLAG_G_L_T.toXml ( o << "\t\t" ) << std::endl;  o << "\t</goalMouth>" << std::endl;  o << "\t<penaltyArea startx=\"" <<  LandmarkReader::PEN_R.startx     << "\" starty=\"" <<  LandmarkReader::PEN_R.starty     << "\" endx=\"" <<  LandmarkReader::PEN_R.endx << "%\" "     << "endy=\"" <<  LandmarkReader::PEN_R.endy     << "\">" << std::endl;  LandmarkReader::FLAG_P_R_B.toXml ( o << "\t\t" ) << std::endl;  LandmarkReader::FLAG_P_R_C.toXml ( o << "\t\t" ) << std::endl;  LandmarkReader::FLAG_P_R_T.toXml ( o << "\t\t" ) << std::endl;  o << "\t</penaltyArea>" << std::endl;  o << "\t<penaltyArea startx=\"" << LandmarkReader::PEN_L.startx     << "\" starty=\"" << LandmarkReader::PEN_L.starty     << "\" endx=\"" << LandmarkReader::PEN_L.endx << "%\" "     << "endy=\"" << LandmarkReader::PEN_L.endy     << "\">" << std::endl;  LandmarkReader::FLAG_P_L_B.toXml ( o << "\t\t" ) << std::endl;  LandmarkReader::FLAG_P_L_C.toXml ( o << "\t\t" ) << std::endl;  LandmarkReader::FLAG_P_L_T.toXml ( o << "\t\t" ) << std::endl;  o << "\t</penaltyArea>" << std::endl;  o << "\t<outerPitch startx=\"" <<  LandmarkReader::OUTER_PITCH.startx     << "\" starty=\"" <<  LandmarkReader::OUTER_PITCH.starty     << "\" endx=\"" <<  LandmarkReader::OUTER_PITCH.endx     << "\" endy=\"" <<  LandmarkReader::OUTER_PITCH.endy     << "\">" << std::endl;  LandmarkReader::FLAG_T_0.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_R_10.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_R_20.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_R_30.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_R_40.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_R_50.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_L_10.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_L_20.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_L_30.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_L_40.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_T_L_50.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_0.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_R_10.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_R_20.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_R_30.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_R_40.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_R_50.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_L_10.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_L_20.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_L_30.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_L_40.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_B_L_50.toXml ( o << "\t\t", false, true ) << std::endl;  LandmarkReader::FLAG_R_0.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_T_10.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_T_20.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_T_30.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_B_10.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_B_20.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_R_B_30.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_0.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_T_10.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_T_20.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_T_30.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_B_10.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_B_20.toXml ( o << "\t\t", true, false ) << std::endl;  LandmarkReader::FLAG_L_B_30.toXml ( o << "\t\t", true, false ) << std::endl;  o << "\t</outerPitch>" << std::endl;  o << "</mainPitch>" << std::endl;  return o;}  // Be very carefull when changing the default values.  If you  // change from abs to percent or visa-versa, make sure you add  // or remove the % sign in the print function and the loadDefaults.void LandmarkReader::loadDefaults (){  LandmarkReader::flag_t tmp_flag;  rect_stack.push ( LandmarkReader::DEF_PITCH );  addFlag ( LandmarkReader::FLAG_C.percentify ( rect_stack.top (),						 true, true ) );   addFlag ( LandmarkReader::FLAG_C_T.percentify ( rect_stack.top (),						 true, true ) );  addFlag ( LandmarkReader::FLAG_C_B.percentify ( rect_stack.top (),						 true, true ) );  addFlag ( LandmarkReader::FLAG_R_T.percentify ( rect_stack.top (),						 true, true ) );  addFlag ( LandmarkReader::FLAG_R_B.percentify ( rect_stack.top (),						 true, true ) );  addFlag ( LandmarkReader::FLAG_L_T.percentify ( rect_stack.top (),						 true, true ) );  addFlag ( LandmarkReader::FLAG_L_B.percentify ( rect_stack.top (),						 true, true ) );  rect_stack.push ( LandmarkReader::GOAL_MOUTH_R.toRect ( rect_stack.top () ) );  addFlag ( LandmarkReader::FLAG_G_R_B.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::GOAL_R.percentify ( rect_stack.top (),						true, true ), true );  addFlag ( LandmarkReader::FLAG_G_R_T.percentify ( rect_stack.top (),						    true, true ) );  rect_stack.pop ();  rect_stack.push ( LandmarkReader::GOAL_MOUTH_L.toRect ( rect_stack.top () ) );  addFlag ( LandmarkReader::FLAG_G_L_B.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::GOAL_L.percentify ( rect_stack.top (),						true, true ), true );  addFlag ( LandmarkReader::FLAG_G_L_T.percentify ( rect_stack.top (),						    true, true ) );  rect_stack.pop ();  rect_stack.push ( LandmarkReader::PEN_R.percentify ( rect_stack.top (),						       false, false,						       true, false ) );    addFlag ( LandmarkReader::FLAG_P_R_B.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::FLAG_P_R_C.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::FLAG_P_R_T.percentify ( rect_stack.top (),						    true, true ) );  rect_stack.pop ();  rect_stack.push ( LandmarkReader::PEN_L.percentify ( rect_stack.top (),						       false, false,						       true, false ) );  addFlag ( LandmarkReader::FLAG_P_L_B.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::FLAG_P_L_C.percentify ( rect_stack.top (),						    true, true ) );  addFlag ( LandmarkReader::FLAG_P_L_T.percentify ( rect_stack.top (),						    true, true ) );  rect_stack.pop ();  rect_stack.push ( LandmarkReader::OUTER_PITCH );  addFlag ( LandmarkReader::FLAG_T_0.percentify ( rect_stack.top (), 						  false, true ) );  addFlag ( LandmarkReader::FLAG_T_R_10.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_R_20.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_R_30.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_R_40.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_R_50.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_L_10.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_L_20.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_L_30.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_L_40.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_T_L_50.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_0.percentify ( rect_stack.top (), 						  false, true ) );  addFlag ( LandmarkReader::FLAG_B_R_10.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_R_20.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_R_30.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_R_40.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_R_50.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_L_10.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_L_20.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_L_30.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_L_40.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_B_L_50.percentify ( rect_stack.top (), 						     false, true ) );  addFlag ( LandmarkReader::FLAG_R_0.percentify ( rect_stack.top (), 						  true, false ) );  addFlag ( LandmarkReader::FLAG_R_T_10.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_R_T_20.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_R_T_30.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_R_B_10.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_R_B_20.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_R_B_30.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_0.percentify ( rect_stack.top (), 						  true, false ) );  addFlag ( LandmarkReader::FLAG_L_T_10.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_T_20.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_T_30.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_B_10.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_B_20.percentify ( rect_stack.top (), 						     true, false ) );  addFlag ( LandmarkReader::FLAG_L_B_30.percentify ( rect_stack.top (), 						     true, false ) );  rect_stack.pop ();  rect_stack.pop ();}void  LandmarkReader::addFlag ( const LandmarkReader::flag_t& flag,                                 const bool& goal ){  // add goal to stadium  char* sname = new char[16];  char* lname = new char[16];  std::string sub_name;  PObject::obj_type object_type;  if ( goal )    {      strcpy ( sname, (std::string ( "(g " ) + flag.name + ")").c_str () );      strcpy ( lname, (std::string ( "(goal " ) + flag.name + ")").c_str () );      sub_name = "g ";      sub_name += flag.name;      object_type = PObject::OT_GOAL;    }  else    {      strcpy ( sname, (std::string ( "(f " ) + flag.name + ")").c_str () );      strcpy ( lname, (std::string ( "(flag " ) + flag.name + ")").c_str () );      sub_name = flag.name;      object_type = PObject::OT_FLAG;    }  // hmmm... even though the PObject constructor takes a  // const Name, the compiler compains about casting from const,  // so we have to copy the string.  Grrrr....  stad->votable.AssignObject ( new PObject ( object_type, lname, sname, sub_name,					     PVector(flag.x, flag.y), 					     flag.ver)) ;  // dont delete sname and lname 'cause PObject takes them}

⌨️ 快捷键说明

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