77 (*input_normals_)[index].getNormalVector3fMap () :
81 rotation_axis_.getNormalVector3fMap () :
82 use_custom_axes_cloud_ ?
83 (*rotation_axes_cloud_)[index].getNormalVector3fMap () :
86 Eigen::ArrayXXd
m_matrix (Eigen::ArrayXXd::Zero (image_width_+1, 2*image_width_+1));
87 Eigen::ArrayXXd
m_averAngles (Eigen::ArrayXXd::Zero (image_width_+1, 2*image_width_+1));
96 bin_size = search_radius_ / image_width_;
103 if (
neighb_cnt <
static_cast<int> (min_pts_neighb_))
106 "Too few points for spin image, use setMinPointCountInNeighbourhood() to decrease the threshold or use larger feature radius",
107 "spin_image.hpp",
"computeSiForPoint");
115 if (support_angle_cos_ > 0.0 || is_angular_)
120 PCL_ERROR (
"[pcl::%s::computeSiForPoint] Normal for the point %d and/or the point %d are not normalized, dot ptoduct is %f.\n",
123 "spin_image.hpp",
"computeSiForPoint");
139 const Eigen::Vector3f direction (
142 if (std::abs(
direction_norm) < 10*std::numeric_limits<double>::epsilon ())
148 if (std::abs(
cos_dir_axis) > (1.0 + 10*std::numeric_limits<float>::epsilon()))
150 PCL_ERROR (
"[pcl::%s::computeSiForPoint] Rotation axis for the point %d are not normalized, dot ptoduct is %f.\n",
152 throw PCLException (
"Some rotation axis is not normalized",
153 "spin_image.hpp",
"computeSiForPoint");
158 double beta = std::numeric_limits<double>::signaling_NaN ();
159 double alpha = std::numeric_limits<double>::signaling_NaN ();
187 if (
alpha_bin ==
static_cast<int> (image_width_))
193 if (
beta_bin ==
int(2*image_width_) )
203 assert (0 <= a && a <= 1);
204 assert (0 <= b && b <= 1);