Improved documentation to include stars

This commit is contained in:
Paolo Cignoni 2012-12-10 12:40:21 +00:00
parent fd54ab7183
commit 9a1704379f
3 changed files with 34 additions and 21 deletions

View File

@ -106,7 +106,7 @@ This implementation does not work if the vertex is on the border. Just try with
Jumping Pos Jumping Pos
----------- -----------
The Jumping Pos works exactly like the Pos, only it does not bounce when it encounters the border. Instead, it jump around the vertex as if the to border faces sharing the vertex (faces f0 and f2 in the image) were adjacent. The Jumping Pos works exactly like the Pos, only it does not bounce when it encounters the border. Instead, it jump around the vertex as if the to border faces sharing the vertex (faces f0 and f2 in the image) were adjacent.
\code
sf/apps/sample/trimesh_pos_demo/trimesh_pos_demo.cpp sf/apps/sample/trimesh_pos_demo/trimesh_pos_demo.cpp
#include <vcg/simplex/face/jumping_pos.h> // include the definition of jumping pos #include <vcg/simplex/face/jumping_pos.h> // include the definition of jumping pos
@ -126,7 +126,7 @@ sf/apps/sample/trimesh_pos_demo/trimesh_pos_demo.cpp
p.NextFE(); p.NextFE();
}while(p.f!=start); }while(p.f!=start);
} }
\endcode
VF Adjacency VF Adjacency
------------ ------------
@ -154,7 +154,7 @@ VFIterator
---------- ----------
VFIterator is a simple iterator to run over the faces in the one-ring neighborhood of a vertex using the VF Adjacency (it is just like Pos for the FF Adjacency) The following code snippet shows how to use the VFIterator: VFIterator is a simple iterator to run over the faces in the one-ring neighborhood of a vertex using the VF Adjacency (it is just like Pos for the FF Adjacency) The following code snippet shows how to use the VFIterator:
\code
sf/apps/sample/trimesh_pos_demo/trimesh_vfiter_demo.cpp sf/apps/sample/trimesh_pos_demo/trimesh_vfiter_demo.cpp
#include <vcg/simplex/face/pos.h> // include the definition of VFIterator #include <vcg/simplex/face/pos.h> // include the definition of VFIterator
@ -173,6 +173,16 @@ void OneRingNeighborhoodVF( MyVertex * v)
// ...do something with face f // ...do something with face f
} }
} }
\endcode
Stars and Rings
---------------
We have a few handy functions to recover the set of faces/vertices incident on vertex:
- \ref vcg::face::VFOrderedStarFF
- \ref vcg::face::VVStarVF
- \ref vcg::face::VFStarVF
- \ref vcg::face::VFExtendedStarVF
- \ref vcg::face::EFStarFF
Few facts on FF adjacency and VF adjacency Few facts on FF adjacency and VF adjacency
------------------------------------------ ------------------------------------------

View File

@ -186,7 +186,7 @@ SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. # The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments. # Doxygen uses this value to replace tabs by spaces in code fragments.
TAB_SIZE = 2 TAB_SIZE = 8
# This tag can be used to specify a number of aliases that acts # This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value". # as commands in the documentation. An alias has the form "name=value".
@ -665,26 +665,27 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories # directories like "/usr/src/myproject". Separate the files or directories
# with spaces. # with spaces.
INPUT = ../../vcg/complex/allocate.h \ INPUT = . \
../../vcg/simplex/vertex/component.h \
../../vcg/simplex/edge/component.h \
../../vcg/simplex/face/component.h \
../../vcg/simplex/face/topology.h \
../../vcg/complex/complex.h \
../../vcg/complex/allocate.h \
../../vcg/complex/append.h \
../../vcg/complex/algorithms/update \ ../../vcg/complex/algorithms/update \
../../vcg/complex/algorithms/inertia.h \ ../../vcg/complex/algorithms/inertia.h \
../../vcg/complex/algorithms/point_sampling.h \ ../../vcg/complex/algorithms/point_sampling.h \
../../vcg/complex/algorithms/clean.h \ ../../vcg/complex/algorithms/clean.h \
../../vcg/complex/algorithms/refine.h \ ../../vcg/complex/algorithms/refine.h \
../../vcg/complex/algorithms/create/platonic.h \
../../vcg/complex/algorithms/geodesic.h
../../apps/sample/trimesh_base \ ../../apps/sample/trimesh_base \
../../apps/sample/trimesh_attribute \ ../../apps/sample/trimesh_attribute \
../../apps/sample/trimesh_smooth \ ../../apps/sample/trimesh_smooth \
../../apps/sample/trimesh_refine \ ../../apps/sample/trimesh_refine \
../../apps/sample/trimesh_inertia \ ../../apps/sample/trimesh_inertia \
../../apps/sample/trimesh_sampling \ ../../apps/sample/trimesh_sampling
. \
../../vcg/complex/complex.h \
../../vcg/simplex/vertex/component.h \
../../vcg/simplex/face/component.h \
../../vcg/complex/algorithms/create/platonic.h \
../../vcg/complex/append.h \
../../vcg/simplex/edge/component.h \
../../vcg/complex/algorithms/geodesic.h
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is

View File

@ -396,7 +396,7 @@ void SwapEdge(FaceType &f, const int z)
*/ */
template <class FaceType> template <class FaceType>
static bool CheckFlipEdgeNormal(FaceType &f, const int z, const float angleRad) bool CheckFlipEdgeNormal(FaceType &f, const int z, const float angleRad)
{ {
typedef typename FaceType::VertexType VertexType; typedef typename FaceType::VertexType VertexType;
typedef typename VertexType::CoordType CoordType; typedef typename VertexType::CoordType CoordType;
@ -429,7 +429,7 @@ static bool CheckFlipEdgeNormal(FaceType &f, const int z, const float angleRad)
* \param z the edge index * \param z the edge index
*/ */
template <class FaceType> template <class FaceType>
static bool CheckFlipEdge(FaceType &f, int z) bool CheckFlipEdge(FaceType &f, int z)
{ {
typedef typename FaceType::VertexType VertexType; typedef typename FaceType::VertexType VertexType;
typedef typename vcg::face::Pos< FaceType > PosType; typedef typename vcg::face::Pos< FaceType > PosType;
@ -481,7 +481,7 @@ static bool CheckFlipEdge(FaceType &f, int z)
* formed by the face \a f and the face adjacent to the specified edge. * formed by the face \a f and the face adjacent to the specified edge.
*/ */
template <class FaceType> template <class FaceType>
static void FlipEdge(FaceType &f, const int z) void FlipEdge(FaceType &f, const int z)
{ {
assert(z>=0); assert(z>=0);
assert(z<3); assert(z<3);
@ -671,14 +671,15 @@ void EFStarFF( FaceType* fp, int ei,
/*! /*!
* Compute the set of faces adjacent to a given vertex using VF adjacency. * \brief Compute the set of faces adjacent to a given vertex using VF adjacency.
*
* The set is faces is extended of a given number of step * The set is faces is extended of a given number of step
* \param vp pointer to the vertex whose star has to be computed. * \param vp pointer to the vertex whose star has to be computed.
* \param num_step the number of step to extend the star * \param num_step the number of step to extend the star
* \param faceVec a std::vector of Face pointer that is filled with the adjacent faces. * \param faceVec a std::vector of Face pointer that is filled with the adjacent faces.
*/ */
template <class FaceType> template <class FaceType>
static void VFExtendedStarVF(typename FaceType::VertexType* vp, void VFExtendedStarVF(typename FaceType::VertexType* vp,
const int num_step, const int num_step,
std::vector<FaceType*> &faceVec) std::vector<FaceType*> &faceVec)
{ {
@ -710,14 +711,15 @@ static void VFExtendedStarVF(typename FaceType::VertexType* vp,
} }
/*! /*!
* Compute the ordered set of faces adjacent to a given vertex using FF adiacency * \brief Compute the ordered set of faces adjacent to a given vertex using FF adiacency
*
* \param startPos a Pos<FaceType> indicating the vertex whose star has to be computed. * \param startPos a Pos<FaceType> indicating the vertex whose star has to be computed.
* \param faceVec a std::vector of Face pointer that is filled with the adjacent faces. * \param faceVec a std::vector of Face pointer that is filled with the adjacent faces.
* \param edgeVec a std::vector of indexes filled with the indexes of the corresponding edges shared between the faces. * \param edgeVec a std::vector of indexes filled with the indexes of the corresponding edges shared between the faces.
* *
*/ */
template <class FaceType> template <class FaceType>
static void VFOrderedStarFF(Pos<FaceType> &startPos, void VFOrderedStarFF(Pos<FaceType> &startPos,
std::vector<FaceType*> &faceVec, std::vector<FaceType*> &faceVec,
std::vector<int> &edgeVec) std::vector<int> &edgeVec)
{ {