forked from speed-dreams/speed-dreams-code
Passes cpplint tests.
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@3038 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: a2cd1f51b251f5954ac68cb8fcb373d7e7206168 Former-commit-id: 36c21e192510b46185f028fc6a44f69a7eff057e
This commit is contained in:
parent
59d4cfeb2f
commit
9641d32eec
2 changed files with 60 additions and 71 deletions
|
@ -23,16 +23,17 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "cardata.h"
|
||||
#include "linalg.h" //v2d
|
||||
#include <robottools.h> //Rt*
|
||||
#include "src/drivers/kilo2008/cardata.h"
|
||||
|
||||
#include <algorithm> //for_each, find
|
||||
#include <robottools.h> // Rt*
|
||||
|
||||
void
|
||||
SingleCardata::update()
|
||||
{
|
||||
trackangle = RtTrackSideTgAngleL(&(((tCarElt*)car)->_trkPos));
|
||||
#include <list>
|
||||
#include <algorithm> // for_each, find
|
||||
|
||||
#include "src/drivers/kilo2008/linalg.h" // v2d
|
||||
|
||||
void SingleCardata::update() {
|
||||
trackangle = RtTrackSideTgAngleL(const_cast<tTrkLocPos*>(&(car->_trkPos)));
|
||||
speed = getSpeed(car, trackangle);
|
||||
angle = trackangle - car->_yaw;
|
||||
NORM_PI_PI(angle);
|
||||
|
@ -45,13 +46,12 @@ SingleCardata::update()
|
|||
fabs(car->_dimension_y * sin(angle) +
|
||||
car->_dimension_x * cos(angle))) + 0.1;
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
corner2[i].ax = corner1[i].ax;
|
||||
corner2[i].ay = corner1[i].ay;
|
||||
corner1[i].ax = car->_corner_x(i);
|
||||
corner1[i].ay = car->_corner_y(i);
|
||||
}//for i
|
||||
for (int i = 0; i < 4; i++) {
|
||||
corner2[i].ax = corner1[i].ax;
|
||||
corner2[i].ay = corner1[i].ay;
|
||||
corner1[i].ax = car->_corner_x(i);
|
||||
corner1[i].ay = car->_corner_y(i);
|
||||
} // for i
|
||||
|
||||
lastspeed[2].ax = lastspeed[1].ax;
|
||||
lastspeed[2].ay = lastspeed[1].ay;
|
||||
|
@ -59,70 +59,61 @@ SingleCardata::update()
|
|||
lastspeed[1].ay = lastspeed[0].ay;
|
||||
lastspeed[0].ax = car->_speed_X;
|
||||
lastspeed[0].ay = car->_speed_Y;
|
||||
}//update
|
||||
} // update
|
||||
|
||||
|
||||
// compute speed component parallel to the track.
|
||||
double
|
||||
SingleCardata::getSpeed(const tCarElt * car, const double ltrackangle)
|
||||
{
|
||||
double SingleCardata::getSpeed(const tCarElt * car, const double ltrackangle) {
|
||||
v2d speed(car->_speed_X, car->_speed_Y);
|
||||
v2d dir(cos(ltrackangle), sin(ltrackangle));
|
||||
return speed * dir;
|
||||
}//getSpeed
|
||||
} // getSpeed
|
||||
|
||||
|
||||
void
|
||||
SingleCardata::init(const CarElt * pcar)
|
||||
{
|
||||
void SingleCardata::init(const CarElt * pcar) {
|
||||
car = pcar;
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
corner1[i].ax = corner2[i].ax = car->_corner_x(i);
|
||||
corner1[i].ay = corner2[i].ay = car->_corner_y(i);
|
||||
}//for i
|
||||
for (int i = 0; i < 4; i++) {
|
||||
corner1[i].ax = corner2[i].ax = car->_corner_x(i);
|
||||
corner1[i].ay = corner2[i].ay = car->_corner_y(i);
|
||||
} // for i
|
||||
lastspeed[0].ax = lastspeed[1].ax = lastspeed[2].ax = car->_speed_X;
|
||||
lastspeed[0].ay = lastspeed[1].ay = lastspeed[2].ay = car->_speed_Y;
|
||||
}//init
|
||||
} // init
|
||||
|
||||
|
||||
Cardata::Cardata(tSituation * s)
|
||||
{
|
||||
Cardata::Cardata(tSituation * s) {
|
||||
data = new std::list<SingleCardata>(s->_ncars);
|
||||
std::list<SingleCardata>::iterator it = data->begin();
|
||||
for(int i = 0; it != data->end(); it++, i++)
|
||||
{
|
||||
it->init(s->cars[i]);
|
||||
}
|
||||
}//Cardata
|
||||
for (int i = 0; it != data->end(); it++, i++) {
|
||||
it->init(s->cars[i]);
|
||||
}
|
||||
} // Cardata
|
||||
|
||||
|
||||
Cardata::~Cardata()
|
||||
{
|
||||
Cardata::~Cardata() {
|
||||
delete data;
|
||||
}//~Cardata
|
||||
} // ~Cardata
|
||||
|
||||
|
||||
static inline void Cupdate(SingleCardata &a) {a.update();}
|
||||
static inline void Cupdate(SingleCardata &a) { // NOLINT(runtime/references)
|
||||
a.update();
|
||||
}
|
||||
|
||||
void
|
||||
Cardata::update() const
|
||||
{
|
||||
void Cardata::update() const {
|
||||
std::for_each(data->begin(), data->end(), Cupdate);
|
||||
}//update
|
||||
} // update
|
||||
|
||||
|
||||
inline bool operator==(const SingleCardata& a, const tCarElt* b)
|
||||
{return a.thisCar(b);}
|
||||
|
||||
SingleCardata *
|
||||
Cardata::findCar(const tCarElt * car) const
|
||||
{
|
||||
|
||||
SingleCardata * Cardata::findCar(const tCarElt * car) const {
|
||||
SingleCardata *ret = NULL;
|
||||
|
||||
std::list<SingleCardata>::iterator it = std::find(data->begin(), data->end(), car);
|
||||
if(it != data->end())
|
||||
std::list<SingleCardata>::iterator it =
|
||||
std::find(data->begin(), data->end(), car);
|
||||
if (it != data->end())
|
||||
ret = &(*it);
|
||||
|
||||
|
||||
return ret;
|
||||
}//findCar
|
||||
} // findCar
|
||||
|
|
|
@ -28,16 +28,15 @@
|
|||
each other (for that is the class Opponents/Opponent responsible).
|
||||
*/
|
||||
|
||||
#ifndef _CARDATA_H_
|
||||
#define _CARDATA_H_
|
||||
#ifndef SRC_DRIVERS_KILO2008_CARDATA_H_
|
||||
#define SRC_DRIVERS_KILO2008_CARDATA_H_
|
||||
|
||||
#include <car.h> //tCarElt
|
||||
#include <raceman.h> //tSituation
|
||||
#include <list> //std::list
|
||||
#include <car.h> // tCarElt
|
||||
#include <raceman.h> // tSituation
|
||||
#include <list> // std::list
|
||||
|
||||
class SingleCardata
|
||||
{
|
||||
public:
|
||||
class SingleCardata {
|
||||
public:
|
||||
void init(const tCarElt * car);
|
||||
|
||||
inline double getSpeedInTrackDirection() const { return speed; }
|
||||
|
@ -51,9 +50,9 @@ public:
|
|||
inline tPosd *getLastSpeed() { return lastspeed;}
|
||||
|
||||
void update();
|
||||
//void operator() (void) {this->update();}
|
||||
|
||||
protected:
|
||||
// void operator() (void) {this->update();}
|
||||
|
||||
protected:
|
||||
static double getSpeed(const tCarElt * car, const double trackangle);
|
||||
|
||||
double speed; // speed in direction of the track.
|
||||
|
@ -70,18 +69,17 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
// TODO: use singleton pattern.
|
||||
class Cardata
|
||||
{
|
||||
public:
|
||||
Cardata(tSituation * s);
|
||||
// TODO(kilo): use singleton pattern.
|
||||
class Cardata {
|
||||
public:
|
||||
explicit Cardata(tSituation * s);
|
||||
~Cardata();
|
||||
|
||||
void update() const;
|
||||
SingleCardata *findCar(const tCarElt * car) const;
|
||||
|
||||
protected:
|
||||
std::list<SingleCardata> *data; // List with car data.
|
||||
protected:
|
||||
std::list<SingleCardata> *data; // List with car data.
|
||||
};
|
||||
|
||||
#endif // _CARDATA_H_
|
||||
#endif // SRC_DRIVERS_KILO2008_CARDATA_H_
|
||||
|
|
Loading…
Reference in a new issue