void CloudEditorWidget::loadFilePCD(const std::string &filename) { PclCloudPtr pcl_cloud_ptr; Cloud3D tmp; if (pcl::io::loadPCDFile<Point3D>(filename, tmp) == -1) throw; pcl_cloud_ptr = PclCloudPtr(new Cloud3D(tmp)); std::vector<int> index; pcl::removeNaNFromPointCloud(*pcl_cloud_ptr, *pcl_cloud_ptr, index); Statistics::clear(); cloud_ptr_ = CloudPtr(new Cloud(*pcl_cloud_ptr, true)); selection_ptr_ = SelectionPtr(new Selection(cloud_ptr_, true)); copy_buffer_ptr_ = CopyBufferPtr(new CopyBuffer(true)); cloud_ptr_->setPointSize(point_size_); cloud_ptr_->setHighlightPointSize(selected_point_size_); tool_ptr_ = boost::shared_ptr<CloudTransformTool>(new CloudTransformTool(cloud_ptr_)); if (isColored(filename)) { swapRBValues(); color_scheme_ = COLOR_BY_RGB; is_colored_ = true; } else { color_scheme_ = COLOR_BY_Z; is_colored_ = false; } }
TransformCommand::TransformCommand(ConstSelectionPtr selection_ptr, CloudPtr cloud_ptr, const float *matrix, float translate_x, float translate_y, float translate_z) : selection_ptr_(selection_ptr), cloud_ptr_(cloud_ptr), translate_x_(translate_x), translate_y_(translate_y), translate_z_(translate_z) { internal_selection_ptr_ = SelectionPtr(new Selection(*selection_ptr)); std::copy(matrix, matrix+MATRIX_SIZE, transform_matrix_); const float *cloud_matrix = cloud_ptr_->getMatrix(); std::copy(cloud_matrix, cloud_matrix+MATRIX_SIZE, cloud_matrix_); invertMatrix(cloud_matrix, cloud_matrix_inv_); cloud_ptr_->getCenter(cloud_center_[X], cloud_center_[Y], cloud_center_[Z]); }
typedef std::deque<int> AidList; valarray<AidList *> *m_pMap; int m_nMinAtomMap; bool m_bUseBruteForce; AidList m_allList; public: AtomPosMap() : m_dSpacing(10.0), m_pMap(NULL), m_nMinAtomMap(100), m_bUseBruteForce(false) {} ~AtomPosMap(); void setTarget(MolCoordPtr pMol) { m_pMol = pMol; } void setSpacing(double d) { m_dSpacing = d; } void generate(SelectionPtr pSel = SelectionPtr()); int searchNearestAtom(const Vector4D &pos); void dumpMaxSize(); void setMinAtomMap(int n) { m_nMinAtomMap = n; } int getMinAtomMap() const { return m_nMinAtomMap; } private: bool checkDist(int ix, int iy, int iz, const Vector4D &pos, int &rimin, double &rdmin); void getNearGrid(const Vector4D &pos, int &ix, int &iy, int &iz);