00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_ACTION_BODY_KICK_ONE_STEP_H
00033 #define RCSC_ACTION_BODY_KICK_ONE_STEP_H
00034
00035 #include <rcsc/player/soccer_action.h>
00036 #include <rcsc/geom/vector_2d.h>
00037
00038 namespace rcsc {
00039
00046 class Body_KickOneStep
00047 : public BodyAction {
00048 private:
00050 Vector2D M_target_point;
00052 double M_first_speed;
00053
00055 Vector2D M_ball_result_pos;
00057 Vector2D M_ball_result_vel;
00059 int M_kick_step;
00060 public:
00066 Body_KickOneStep( const Vector2D & target_point,
00067 const double & first_speed )
00068 : M_target_point( target_point )
00069 , M_first_speed( first_speed )
00070 , M_ball_result_pos( Vector2D::INVALIDATED )
00071 , M_ball_result_vel( Vector2D::INVALIDATED )
00072 , M_kick_step( 0 )
00073 { }
00074
00080 bool execute( PlayerAgent * agent );
00081
00086 const
00087 Vector2D & ballResultPos() const
00088 {
00089 return M_ball_result_pos;
00090 }
00091
00096 const
00097 Vector2D & ballResultVel() const
00098 {
00099 return M_ball_result_vel;
00100 }
00101
00102
00110 static
00111 Vector2D get_max_possible_vel( const AngleDeg & target_angle,
00112 const double & kick_rate,
00113 const Vector2D & ball_vel );
00114 };
00115
00116 }
00117
00118 #endif