1. pcl::Normal在pcl官网中的定义
/*brief A point structure representing normal coordinates and the surface curvature estimate. (SSE friendly)ingroup common*/
struct Normal : public _Normal
{
inline Normal (const _Normal &p)
{
normal_x = p.normal_x;
normal_y = p.normal_y;
normal_z = p.normal_z;
data_n[3] = 0.0f;
curvature = p.curvature;
}
inline Normal ()
{
normal_x = normal_y = normal_z = data_n[3] = 0.0f;
curvature = 0;
}
inline Normal (float n_x, float n_y, float n_z)
{
normal_x = n_x; normal_y = n_y; normal_z = n_z;
curvature = 0;
data_n[3] = 0.0f;
}
friend std::ostream& operator << (std::ostream& os, const Normal& p);
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
2. 官网 tutorial中的资料
union{
float data_n[4]
float normal[3];
struct
{
float normal_x;
float normal_y;
float normal_z;
};
};
union{
struct{
float curvature;
};
float data_c[4];
};
看出,pcl::Normals normal的四个值表示(normal_x, normal_y, normal_z, curvature);
3. 表示pcl::Normal的几种方式:
pcl::PointCloud<pcl::Normal>::Ptr normals (new pcl::PointCloud<pcl::Normal>);
std::cout<<normals->points[100]<<std::endl;
std::cout<<"["<<normals->points[100].normal_x<<" "
<<normals->points[100].normal_y<<" "
<<normals->points[100].normal_z<<" "
<<normals->points[100].curvature<<"]"<<endl;
std::cout<<"["<<normals->points[100].normal[0]<<" "
<<normals->points[100].normal[1]<<" "
<<normals->points[100].normal[2]<<" "
<<normals->points[100].curvature<<"]"<<endl;
std::cout<<"["<<normals->points[100].data_n[0]<<" "
<<normals->points[100].data_n[1]<<" "
<<normals->points[100].data_n[2]<<" "
<<normals->points[100].curvature<<"]"<<endl;
4. 参考
point_types——官网tutorial
point_types——中文版
pcl::Normal构造函数——官网doc
pcl::Normal详细——官网doc
how features work包含Normal的一些使用例子——官网tutorial
估计法向量——官网tutorial
估计法向量——中文版
添加箭头arrow——官网doc
---------------------
原文:https://blog.csdn.net/coldplayplay/article/details/79265444?utm_source=copy