zoukankan      html  css  js  c++  java
  • KdTree

     1 #include <pcl/point_cloud.h>
     2 #include <pcl/kdtree/kdtree_flann.h>
     3 
     4 #include <iostream>
     5 #include <vector>
     6 #include <ctime>
     7 
     8 int
     9 main (int argc, char** argv)
    10 {
    11   srand (time (NULL));
    12 
    13   pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
    14 
    15   // Generate pointcloud data
    16   cloud->width = 1000;
    17   cloud->height = 1;
    18   cloud->points.resize (cloud->width * cloud->height);
    19 
    20   for (size_t i = 0; i < cloud->points.size (); ++i)
    21   {
    22     cloud->points[i].x = 1024.0f * rand () / (RAND_MAX + 1.0f);
    23     cloud->points[i].y = 1024.0f * rand () / (RAND_MAX + 1.0f);
    24     cloud->points[i].z = 1024.0f * rand () / (RAND_MAX + 1.0f);
    25   }
    26 
    27   pcl::KdTreeFLANN<pcl::PointXYZ> kdtree;
    28 
    29   kdtree.setInputCloud (cloud);
    30 
    31   pcl::PointXYZ searchPoint;
    32 
    33   searchPoint.x = 1024.0f * rand () / (RAND_MAX + 1.0f);
    34   searchPoint.y = 1024.0f * rand () / (RAND_MAX + 1.0f);
    35   searchPoint.z = 1024.0f * rand () / (RAND_MAX + 1.0f);
    36 
    37   // K nearest neighbor search
    38 
    39   int K = 10;
    40 
    41   std::vector<int> pointIdxNKNSearch(K);
    42   std::vector<float> pointNKNSquaredDistance(K);
    43 
    44   std::cout << "K nearest neighbor search at (" << searchPoint.x 
    45             << " " << searchPoint.y 
    46             << " " << searchPoint.z
    47             << ") with K=" << K << std::endl;
    48 
    49   if ( kdtree.nearestKSearch (searchPoint, K, pointIdxNKNSearch, pointNKNSquaredDistance) > 0 )
    50   {
    51     for (size_t i = 0; i < pointIdxNKNSearch.size (); ++i)
    52       std::cout << "    "  <<   cloud->points[ pointIdxNKNSearch[i] ].x 
    53                 << " " << cloud->points[ pointIdxNKNSearch[i] ].y 
    54                 << " " << cloud->points[ pointIdxNKNSearch[i] ].z 
    55                 << " (squared distance: " << pointNKNSquaredDistance[i] << ")" << std::endl;
    56   }
    57 
    58   // Neighbors within radius search
    59 
    60   std::vector<int> pointIdxRadiusSearch;
    61   std::vector<float> pointRadiusSquaredDistance;
    62 
    63   float radius = 256.0f * rand () / (RAND_MAX + 1.0f);
    64 
    65   std::cout << "Neighbors within radius search at (" << searchPoint.x 
    66             << " " << searchPoint.y 
    67             << " " << searchPoint.z
    68             << ") with radius=" << radius << std::endl;
    69 
    70 
    71   if ( kdtree.radiusSearch (searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0 )
    72   {
    73     for (size_t i = 0; i < pointIdxRadiusSearch.size (); ++i)
    74       std::cout << "    "  <<   cloud->points[ pointIdxRadiusSearch[i] ].x 
    75                 << " " << cloud->points[ pointIdxRadiusSearch[i] ].y 
    76                 << " " << cloud->points[ pointIdxRadiusSearch[i] ].z 
    77                 << " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << std::endl;
    78   }
    79 
    80 
    81   return 0;
    82 }
    View Code
  • 相关阅读:
    ue4 材质表达式分类
    UE4材质特别属生记录
    tangent space与object space
    better-scroll插件 api
    better-scroll 与 Vue 结合
    git 简介
    vue 插件
    前端小程序——js+canvas 给图片添加水印
    使用Node.js给图片加水印的方法
    Vue框架 周期
  • 原文地址:https://www.cnblogs.com/larry-xia/p/11010402.html
Copyright © 2011-2022 走看看