Go to the documentation of this file.00001
00010 #include "convert2d.h"
00011 #include "RangeSensor.h"
00012
00013 using namespace std;
00014
00015
00025 void qrk::convert2d(vector<qrk::Point<long> >& points,
00026 const RangeSensor* sensor, const vector<long>& data,
00027 const Position<long>& offset, int max_length)
00028 {
00029 int min_distance = sensor->minDistance();
00030 int max_distance = (max_length < 0) ? sensor->maxDistance() : max_length;
00031
00032 double offset_radian = offset.to_rad();
00033
00034 int index = 0;
00035 for (vector<long>::const_iterator it = data.begin();
00036 it != data.end(); ++it, ++index) {
00037 long distance = *it;
00038 if ((distance <= min_distance) || (distance >= max_distance)) {
00039 continue;
00040 }
00041
00042 double radian = sensor->index2rad(index) + offset_radian;
00043 int x = static_cast<long>(distance * cos(radian)) + offset.x;
00044 int y = static_cast<long>(distance * sin(radian)) + offset.y;
00045
00046 points.push_back(Point<long>(x, y));
00047 }
00048 }
00049
00050
00051 void qrk::convert2d(vector<qrk::Point<long> >& points,
00052 const RangeSensor* sensor, const vector<long>& data,
00053 int max_length)
00054 {
00055 convert2d(points, sensor, data, Position<long>(0, 0, deg(0)), max_length);
00056 }