美文网首页
(七)pcl-common篇-geometry.h

(七)pcl-common篇-geometry.h

作者: GoodTekken | 来源:发表于2022-02-20 07:59 被阅读0次
#include<pcl/point_cloud.h>
#include<pcl/point_types.h>
#include<pcl/visualization/pcl_visualizer.h> //cout endl

#include <pcl/common/geometry.h>
#include <Eigen/Core>
#include <math.h>

typedef pcl::PointXYZ PointT;

int main()
{
    //(1)两点间的距离
    //float pcl::geometry::distance (const PointT &p1, const PointT &p2)
    float distance = pcl::geometry::distance(PointT(0, 0, 0), PointT(1, 2, 3));

    //(2)两点间的距离的平方
    //float pcl::geometry::squaredDistance (const PointT &p1, const PointT &p2)
    float squaredDistance = pcl::geometry::squaredDistance(PointT(0, 0, 0), PointT(1, 2, 3));

    //(3)返回投影的点(原点-法向量-投影)
    //void  pcl::geometry::project (const PointT &point, const PointT &plane_origin, const NormalT &plane_normal, PointT &projected)
    pcl::Normal plane_normal(0,0,1);
    PointT a;
    //pcl::geometry::project(PointT(3, 3, 3), PointT(0, 0, 0), pcl::Normal(0,0,1), a);//失败,

    //void pcl::geometry::project(const Eigen::Vector3f & point, const Eigen::Vector3f & plane_origin, const Eigen::Vector3f & plane_normal, Eigen::Vector3f & projected)
    //平面的法向量长度为1时,投影点可以落在平面上{返回投影的点(原点-法向量-投影)}
    Eigen::Vector3f projected;
    //pcl::geometry::project(Eigen::Vector3f(3,3,3), Eigen::Vector3f(0,0,0), Eigen::Vector3f(0,0,1), projected);
    pcl::geometry::project(Eigen::Vector3f(3, 3, 3), Eigen::Vector3f(0, 0, 0), Eigen::Vector3f(sqrt(3)/3, sqrt(3)/3, sqrt(3)/3), projected);

    //(4)给定一个由 plane_origin 和 plane_normal 定义的平面,找到从 plane_origin 指向平面上点的投影的单位向量
    //Eigen::Vector3f pcl::geometry::projectedAsUnitVector(Eigen::Vector3f const& point, Eigen::Vector3f const& plane_origin, Eigen::Vector3f const& plane_normal)
    //投影是(3,3,0),从原点(0,0,0)出发到(3,3,0)的单位向量即为((根号2)/2,(根号2)/2,0)。
    Eigen::Vector3f unit_vector = pcl::geometry::projectedAsUnitVector(Eigen::Vector3f(3, 3, 3), Eigen::Vector3f(0, 0, 0), Eigen::Vector3f(0,0,1));

    //(5)定义一个与轴正交的随机单位向量。
    //Eigen::Vector3f pcl::geometry::randomOrthogonalAxis (Eigen::Vector3f const &axis)
    Eigen::Vector3f random_unit_vector = pcl::geometry::randomOrthogonalAxis(Eigen::Vector3f(0,0,1));
    Eigen::Vector3f random_unit_vector1 = pcl::geometry::randomOrthogonalAxis(Eigen::Vector3f(0, 0, 1));

    system("pause");
    return 0;
}

参考文章:
http://pointclouds.org/documentation/common_2include_2pcl_2common_2geometry_8h.html
http://pointclouds.org/documentation/common_2include_2pcl_2common_2geometry_8h_source.html

相关文章

网友评论

      本文标题:(七)pcl-common篇-geometry.h

      本文链接:https://www.haomeiwen.com/subject/omkmlrtx.html