⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 collapseinfot.hh

📁 penMesh is a generic and efficient data structure for representing and manipulating polygonal meshes
💻 HH
字号:
//=============================================================================//                                                                            //                               OpenMesh                                     //      Copyright (C) 2001-2005 by Computer Graphics Group, RWTH Aachen       //                           www.openmesh.org                                 //                                                                            //-----------------------------------------------------------------------------//                                                                            //                                License                                     //                                                                            //   This library is free software; you can redistribute it and/or modify it //   under the terms of the GNU Library General Public License as published  //   by the Free Software Foundation, version 2.                             //                                                                             //   This library is distributed in the hope that it will be useful, but       //   WITHOUT ANY WARRANTY; without even the implied warranty of                //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         //   Library General Public License for more details.                          //                                                                            //   You should have received a copy of the GNU Library General Public         //   License along with this library; if not, write to the Free Software       //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 //                                                                            //-----------------------------------------------------------------------------//                                                                            //   $Revision: 1.2 $//   $Date: 2005-12-21 13:55:20 $//                                                                            //=============================================================================/** \file CollapseInfoT.hh    Provides data class CollapseInfoT for storing all information    about a halfedge collapse. *///=============================================================================////  STRUCT CollpaseInfoT////=============================================================================#ifndef OPENMESH_DECIMATER_COLLAPSEINFOT_HH#define OPENMESH_DECIMATER_COLLAPSEINFOT_HH//== INCLUDES =================================================================#include <vector>//== NAMESPACE ================================================================namespace OpenMesh  { namespace Decimater {//== CLASS DEFINITION =========================================================/** Stores information about a halfedge collapse.    The class stores information about a halfedge collapse. The most    important information is \c v0v1, \c v1v0, \c v0, \c v1, \c vl,    \c vr, which you can lookup in the following image:      \image html collapse_info.png    \see ModProgMeshT::Info */template <class Mesh>struct CollapseInfoT{public:  /** Initializing constructor.   *   *  Given a mesh and a halfedge handle of the halfedge to be collapsed   *  all important information of a halfedge collapse will be stored.   * \param _mesh Mesh source    * \param _heh Halfedge to collapse. The direction of the halfedge   *        defines the direction of the collapse, i.e. the from-vertex   *        will be removed and the to-vertex remains.   */   CollapseInfoT(Mesh& _mesh, typename Mesh::HalfedgeHandle _heh);  Mesh&                          mesh;  typename Mesh::HalfedgeHandle  v0v1; ///< Halfedge to be collapsed  typename Mesh::HalfedgeHandle  v1v0; ///< Reverse halfedge  typename Mesh::VertexHandle    v0;   ///< Vertex to be removed  typename Mesh::VertexHandle    v1;   ///< Remaining vertex  typename Mesh::Point           p0;   ///< Position of removed vertex  typename Mesh::Point           p1;   ///< Positions of remaining vertex  typename Mesh::FaceHandle      fl;   ///< Left face  typename Mesh::FaceHandle      fr;   ///< Right face  typename Mesh::VertexHandle    vl;   ///< Left vertex  typename Mesh::VertexHandle    vr;   ///< Right vertex  //@{   /** Outer remaining halfedge of diamond spanned by \c v0, \c v1,    *  \c vl, and \c vr   */  typename Mesh::HalfedgeHandle  vlv1, v0vl, vrv0, v1vr;  //@}  /// The one-ring of vertex v0 (the one to be collapsed)  std::vector<typename Mesh::VertexHandle>  one_ring;};//-----------------------------------------------------------------------------// CollapseInfoT::CollapseInfoT( _mesh, _heh )////   Local configuration of halfedge collapse to be stored in CollapseInfoT:/*            vl           *           / \         /   \        / fl  \    v0 *------>* v1        \ fr  /         \   /          \ /           *            vr*/// Parameters://   _mesh               Reference to mesh//   _heh                The halfedge (v0 -> v1) defining the collapse//template <class Mesh>inlineCollapseInfoT<Mesh>::CollapseInfoT(Mesh& _mesh, typename Mesh::HalfedgeHandle _heh) :  mesh(_mesh),  v0v1(_heh),  v1v0(_mesh.opposite_halfedge_handle(v0v1)),  v0(_mesh.to_vertex_handle(v1v0)),  v1(_mesh.to_vertex_handle(v0v1)),  p0(_mesh.point(v0)),  p1(_mesh.point(v1)),  fl(_mesh.face_handle(v0v1)),  fr(_mesh.face_handle(v1v0)){  // get vl  if (fl.is_valid())  {    vlv1 = mesh.next_halfedge_handle(v0v1);    v0vl = mesh.next_halfedge_handle(vlv1);    vl   = mesh.to_vertex_handle(vlv1);    vlv1 = mesh.opposite_halfedge_handle(vlv1);    v0vl = mesh.opposite_halfedge_handle(v0vl);  }  // get vr  if (fr.is_valid())  {    vrv0 = mesh.next_halfedge_handle(v1v0);    v1vr = mesh.next_halfedge_handle(vrv0);    vr   = mesh.to_vertex_handle(vrv0);    vrv0 = mesh.opposite_halfedge_handle(vrv0);    v1vr = mesh.opposite_halfedge_handle(v1vr);  }  // store one-ring  one_ring.clear();  for (typename Mesh::VVIter vv_it=mesh.vv_iter(v0); vv_it; ++vv_it)    one_ring.push_back(vv_it);}  //=============================================================================} // END_NS_DECIMATER} // END_NS_OPENMESH//=============================================================================#endif // OPENMESH_DECIMATER_COLLAPSEINFOT_HH defined//=============================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -