之前leader给了一个txt文档,里面只包含了x 和 z的坐标
如表,第一列是x轴(x的个数为1492个),然后每一个x点都对应着217个z坐标,现在需要根据激光雷达散发出的光束角度和激光雷达距离地面的高度,得出y轴的坐标,不过可以接受的是,y轴上对应的也是坐标值固定的217个点。
部分代码如下:
//创建坐标点 x y z
typedef struct Point
{
double x;
double y;
double z;
};
//按照字符串之间的空格进行字符切割
void split(const string& s, vector<string>& elems, char delim = ' ')
int main()
{
//计算y坐标,存入vector之中
vector<float> PointY;
float m_dbLaserHeight = 12.13f; //扫描仪高度
float fAngleResolution = 0.1667f; //扫描角度分辨率
float fAngleScanRange = 18.0f; //扫描角度范围
unsigned int nAngleMax = (unsigned int)ceil((90 + fAngleScanRange) / fAngleResolution);
unsigned int nAngleMin = (unsigned int)ceil((90 - fAngleScanRange) / fAngleResolution);
for (unsigned int n = nAngleMin; n <= nAngleMax; n++)
{
double dbAngle = n * fAngleResolution;
double db90Angle = (90 - dbAngle)*(3.1415926f / 180); //角度到弧长的转化
double acty = 10.19 - m_dbLaserHeight*tan(db90Angle);
PointY.push_back(acty);
}
}
之前博客里的一篇文章只是显示了x和z轴的点云数据:
下面是添加了y轴数据的点云: