Commit Graph

726 Commits

Author SHA1 Message Date
Paolo Cignoni eb642099f1 Corrected another typeclash in the curvature types (a CurVecType definition was missing in the emptycore component) 2014-06-24 08:41:41 +00:00
Nico Pietroni 938eefd398 2014-06-23 09:47:29 +00:00
Paolo Cignoni 4198a3bd7c Cleaned up various type name clashes. There were some components that wrongly re-defined <ScalarType> covering the real <ScalarType> of the simplex. Renamed to something less ambiguous (like CurScalarType for denoting the scalar type used inside curvature types). 2014-06-19 08:31:51 +00:00
giorgiomarcias c1f34b6517 Initialize data members in default constructors (e.g. Pos<FaceType> pos; pos.IsNull() now can't be false). 2014-06-15 21:29:45 +00:00
Paolo Cignoni 8825048e46 BUG corrected: missing initialization of optional per face color data. 2014-04-28 12:01:56 +00:00
Nico Pietroni 335354fdca corrected one wrong assert on FFlinkConditions 2014-03-07 10:36:12 +00:00
Paolo Cignoni e8d745dd10 PolygonalMesh Debugging: forgot a debugging prntf 2014-02-18 20:15:16 +00:00
Paolo Cignoni df29c81227 Removed hideous, nasty, damned bug in polygon component. The ImportData was silently cleaning the vertex references in polygonal faces 2014-02-18 14:08:28 +00:00
Paolo Cignoni 1a4c5ef80d PolygonalMesh Debugging: renamed the SetVN function to __SetVN (it is internal and should not never be called by the users) 2014-02-18 10:58:12 +00:00
Paolo Cignoni eb233462ba PolygonalMesh Debugging: removed the SetVN from the base class (it is internal) 2014-02-18 10:55:12 +00:00
Paolo Cignoni 6efdd91ecc Many small changes to remove useless annoying warnings. 2014-02-13 15:52:17 +00:00
Paolo Cignoni 15bec03c89 Corrected the FHp member of the polygon. 2014-02-13 13:16:09 +00:00
Paolo Cignoni d00d1b90e0 removed useless mesh parameter in FFLinkCondition 2014-02-12 10:58:38 +00:00
Nico Pietroni c5d79ea704 commented out a wrong assert in FFlip function 2014-02-07 11:07:36 +00:00
Nico Pietroni 677295f1a3 added include <set> 2014-02-07 11:06:12 +00:00
Paolo Cignoni 91946b7847 Added basic link condition for FF adjacency and VVOrderedStarFF 2013-12-20 11:42:27 +00:00
Paolo Cignoni 3d150e9aea changed an assert condition in FlipF that could lead to a failure in the case of quad mesh navigation over polygonal faces. 2013-11-25 10:15:54 +00:00
Paolo Cignoni a29df708da Removed warning. Changed a surely verified if condition into an assert.
(chosing the min between 3 elems we had a if-else chain where the last if was useless unless you have NAN )
2013-11-25 10:14:27 +00:00
Paolo Cignoni 1c1e3f778a Include header cleaning and reordering. 2013-11-25 10:12:01 +00:00
Paolo Cignoni 6ec2689383 Corrected weird error in pos assignement operator. 2013-11-11 13:32:33 +00:00
granzuglia d59e519e8f - added missing "#include" 2013-10-16 08:36:05 +00:00
Paolo Cignoni 93eb66356b removed a survived debug printf... 2013-10-09 09:18:56 +00:00
Paolo Cignoni dc842fd034 Corrected a Bug in the VFOrderedStarFF (it could return twice the same face in when asked on boundary faces)
Added FFCollapseEdge 
Added managment of faux edges in swapedges
2013-10-09 08:48:10 +00:00
Paolo Cignoni df97ef0c36 Added zero initialization to quality component. (and corrected a small bug in the ocf quality component) 2013-09-24 13:55:23 +00:00
Paolo Cignoni 344de42c2e removed the return type from the ++ operator of the vfi iterator 2013-09-10 10:54:40 +00:00
Paolo Cignoni 9ad68bc573 Added DihedralAngleRad that computes the signed dihedral angle between the normals of two adjacent faces 2013-06-24 07:55:54 +00:00
Paolo Cignoni f3337dcb7c updated polygon component to the cP/P behavior for access to elements 2013-03-20 08:56:20 +00:00
Paolo Cignoni 4665f36e40 Improved component documentation. Added IsVFInitialized, VFClear function for VF component. Clarified the difference between null and uninitialized for a VF component. 2013-03-13 14:02:03 +00:00
Nico Pietroni e5ed268b6a added function cVFi 2013-02-19 13:56:37 +00:00
Nico Pietroni 60bca978f7 added function VVExtendedStarVF 2013-02-19 13:55:15 +00:00
Paolo Cignoni 8111bcda24 Corrected a very nasty bug introduced in Revision 4782 that reorganized ocf face component and added a standard interface for query the availabiilty of data:
bool FaceType::IsXXXAvaialble() ,must be defined in the XXX ocf type and not in the info type otherwise it would be defined also for non ocf components.
2013-02-06 11:22:11 +00:00
Paolo Cignoni b48b0e568c added initialization of mark component to zero. So all the element it is sure that are unitialized after the first unmarkall. 2012-12-21 15:33:18 +00:00
Paolo Cignoni 8476a1ff20 Reorganized ocf vertex component and added a standard interface for query the availability of data:
now we have 
static bool vertextype::HasXXX() // statically says if a certain type is present
bool vertextype::IsXXXAvaialble() // NON STATIC (always true for non ocf objects)
So now ImportData correctly works for both sides of vertex ocf component.
2012-12-17 22:54:48 +00:00
Paolo Cignoni 5dcf1aec47 forgot a IsCurvatureDirEnabled() 2012-12-17 15:58:16 +00:00
Paolo Cignoni 08aeee8716 Reorganized ocf face component and added a standard interface for query the availabiilty of data:
now we have 
static bool FaceType::HasXXX() // statically says if a certain type is present
bool FaceType::IsXXXAvaialble() // NON STATIC (always true for non ocf objects)
So now ImportData works for face ocf component.
2012-12-17 15:02:34 +00:00
Paolo Cignoni 4d0450d521 added better comment to edge pos implicit ordering 2012-12-17 14:59:29 +00:00
Nico Pietroni fb9a9bbac6 added function FFExtendedStarFF 2012-12-12 16:04:26 +00:00
Paolo Cignoni 9a1704379f Improved documentation to include stars 2012-12-10 12:40:21 +00:00
Paolo Cignoni 3b466514b3 Added Standard exception throwing functions to claim requirements in the mesh algorithmic functions (Te Deum!)
for example, now at the beginning of a function requiring FFAdjacency you should just write:

RequireFFAdjacency(mesh); 

No more assert please.
2012-12-06 10:34:08 +00:00
ganovelli 755eb7dda7 added HasNormal to EmptyCore 2012-12-03 17:47:15 +00:00
Paolo Cignoni ab49388781 Added a VFDetach for face. 2012-11-27 14:03:24 +00:00
Paolo Cignoni 3fb4e6d061 re-Added to all the data members of vertex the const access member 2012-11-27 12:16:16 +00:00
Paolo Cignoni 8b4d04be7a Added a bunch of 'c' to component members to clarify constant access 2012-11-15 19:11:28 +00:00
Paolo Cignoni 51fe0fb938 Added a bunch of 'c' to component members to clarify constant access 2012-11-15 19:07:34 +00:00
Paolo Cignoni 5c266a7ccb HEAVY CHANGE:
The vertex and face component (natural and optional) have been cleaned and reordered.
Particular care has been devoted to have common behaviour in the import, const access, and so. 
If you get compilation errors probably it is due to the fact that if you really need constant access to a member you have to use the "c" prefixed member (e.g. if you access to normal of a constant vertex you should use the cN() member.
2012-11-15 19:04:08 +00:00
Paolo Cignoni f2be4a4d95 mismatch in the VertexVectorHasVFAdjacency and FaceVectorHasVFAdjacency names 2012-11-14 12:37:18 +00:00
Nico Pietroni 3864a934da corrected 1 call of VFStarVF 2012-11-12 12:59:50 +00:00
Paolo Cignoni feb77d945a Significant changes of interface of VFOrderedStarFF (that substitute two very similar VFOrderedStarFF_VF)
Added EFStarFF
2012-11-10 16:53:10 +00:00
Paolo Cignoni 1a8c1dafe2 VFlip() and FFlip are const members but there is no need of returning a pointer to a Const element 2012-11-09 11:11:50 +00:00
Paolo Cignoni 3170472174 added a IMark()->cIMark() 2012-11-08 18:35:38 +00:00
Paolo Cignoni 26ee5e5246 const access to flags -> cFlags() 2012-11-07 22:53:41 +00:00
Paolo Cignoni 9f39a0c7cb added cflags to the emtpycore face component 2012-11-07 15:51:51 +00:00
Paolo Cignoni 1046deb107 Corrected bug recently introduced due to small difference in the signature of the flags functions... 2012-11-07 15:42:14 +00:00
Paolo Cignoni 7bc4277fcd Cleaned up documentation of components (new doxygroup for them, written something for most of them...).
Cleaned Edge components (Added adjacency stuff, implemented the single emptycore)
2012-11-07 01:24:45 +00:00
Paolo Cignoni 2523982d4d harmless gcc warning (comment in comment) 2012-10-31 21:04:58 +00:00
Paolo Cignoni 578ea5ae6b Added control in the creation of a pos that you pass a consistent triple 2012-10-26 12:39:58 +00:00
Nico Pietroni 8e8f537321 corrected order of functions call in NextE() 2012-10-26 12:28:17 +00:00
Paolo Cignoni d784bebe07 Added guards to avoid useless (and sometime dangerous) inclusion of internal file of the vcglib 2012-10-25 21:29:10 +00:00
Paolo Cignoni 671af109a9 improved vertex component documentation 2012-10-25 21:20:10 +00:00
Paolo Cignoni 9658740974 Improving documentation. Reordered groups and started documenting main components 2012-10-25 13:47:31 +00:00
Paolo Cignoni 4c0acdbb7c Removed all the UberXXX members from the various components. No more needed since many years. Still there just because we are quite lazy... 2012-10-25 13:46:08 +00:00
Paolo Cignoni 049c996846 Removed all the UberXXX members from the various components. No more needed since many years. Still there just because we are quite lazy... 2012-10-25 13:16:03 +00:00
Paolo Cignoni cfda5a3eca Removed all the UberXXX members from the various components. No more needed since many years. Still there just because we are quite lazy... 2012-10-25 13:07:25 +00:00
Paolo Cignoni b045c9b992 Removed old useless files. Why do we kept them? 2012-10-25 13:01:34 +00:00
Paolo Cignoni b1a1b36260 Re added the empty component. It can be useful sometimes... 2012-10-19 11:45:51 +00:00
Paolo Cignoni fb60087ee4 component_ocf are now part of the standard inclusion sequence of complex.h
No more need of including them.
It was needed to avoid the issue of wrong inclusion order that could trigger a failure in the partial specialization of the reflection functions that should say if a component is present or not...
2012-10-15 09:17:48 +00:00
Nico Pietroni 8d4bdc467e added function VFExtendedStarVF 2012-10-14 09:24:49 +00:00
Paolo Cignoni a7dc9a853e Better naming for the EdgePlane face component for fast closest query 2012-10-04 16:17:31 +00:00
Paolo Cignoni d97f08e23e Better naming for the EdgePlane face component for fast closest query 2012-10-04 16:15:24 +00:00
Paolo Cignoni 2577210a54 **** SIGNIFICANT CHANGES *****
- Cleaned up include order: Now you only need to include <vcg/complex/complex.h> (no more vertex/base.h etc) 
- Added official VN() EN() FN() const members for knowing number of vertexes etc...
- Added exceptions (at last!)
    Now instead of:
       assert(HasPerVertexNormal(m)) 
    you should write:
      if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException();
2012-10-04 11:10:25 +00:00
Nico Pietroni dcb0d036ff added FindSharedFaces and VFOrderedStarVF functions 2012-09-22 12:54:30 +00:00
Nico Pietroni be2d3613b9 added one more call of VFStarVF that returns also the indexes of vertices as seen from the faces 2012-09-03 15:57:52 +00:00
Marco Di Benedetto c209a384a0 fixed Color4bOcf interface (missing "public" section). 2012-08-22 18:36:59 +00:00
Paolo Cignoni 2aa57698ad better uniform naming for detach attach functions (now there is FFAttach, FFAttachManifold, FFDetach, etc)
changed SharedVertex into FindSharedVertex
added FindSharedEdge
2012-07-27 12:59:27 +00:00
Paolo Cignoni 45b0deb7eb Important Change: ** LastBitFlag ** now is named ** FirstUnusedBitFlag **
Corrected the name of the function allocating a user bit among the flags of the simplexes. 
Changed in ALL the simplexes (vertex, edge, face, etc) and updating functions. 
Note that the LastBitFlag should never be used by common users...
2012-07-18 09:37:32 +00:00
Paolo Cignoni 7ffb878913 SIGNIFICANT CHANGE
About the point to mesh distance functionalities
Now the two different 'path' for this distance computation (with or without the precomputation of planes and edges for triangular faces) are well distinct and with different names:
PointDistanceEP and PointDistanceBase

See the sample/trimesh_closest sample for more details
2012-07-06 15:24:04 +00:00
Paolo Cignoni 24110c34b2 added an Empty Component for the edgePlane component. 2012-07-06 05:07:25 +00:00
granzuglia db57bd4e19 added missing public keyword on the static Name function of some ocf components. 2012-07-03 11:12:21 +00:00
ganovelli 0f99bd505e changes and minor fix to enable input/output with VMI on memory 2012-07-02 14:38:10 +00:00
Nico Pietroni c1e19b4b55 added assert(0) for cVFi function if does not exixts the component 2012-05-25 13:19:03 +00:00
Paolo Cignoni 37759ffcb0 sligthly better comments 2012-05-06 14:42:04 +00:00
Paolo Cignoni e532ec9751 Added VVStarVE and VEStarVE functions (to get stars of vertexes and edges when working with edge meshes) to edge topology. 2012-04-27 09:23:01 +00:00
Marco Di Benedetto 1c5f2c2264 added static capability query function for ocf vertex texcoord (VertexVectorHasPerVertexTexCoord()) (not having it caused false positives). 2012-04-10 16:47:15 +00:00
Marco Di Benedetto a82ac9639f added constant accessors without the infamous "c" prefix for color (C()) and texcoord (T()). 2012-04-10 15:46:20 +00:00
granzuglia 1548d6415a added missing functions in Empty:
- static bool HasCurvatureDir() { return false; }
- static bool IsCurvatureEnabled(const typename TT::VertexType *)  { return false; }
2012-04-06 08:10:32 +00:00
Paolo Cignoni b0d7d5c52e removed harmless gcc warnings 2012-04-04 10:05:35 +00:00
Paolo Cignoni ea701b39b3 Restructured Face component in order to follow the unique emptycore approach that avoid an endless derivation chain in the type definition 2012-04-04 10:04:46 +00:00
Paolo Cignoni 8a631d48c1 Corrected a significant bug in the reflection types for ocf components.
Changed the basic reflection mechanism: Instead of having a function templates over all the four containers now we template over Trimesh and we rely on a second function templated on face/vert that wants a vector<face> ; this second function only is eventually overloaded by another function that needs a vector_ocf of faces. 

That is Before we had:
- in complex.h

template < class  CType0, class CType1, class CType2 , class CType3>
bool HasPerFaceVFAdjacency   (const TriMesh < CType0, CType1, CType2, CType3> & /*m*/) {return TriMesh < CType0 , CType1, CType2, CType3>::FaceContainer::value_type::HasVFAdjacency();}

- in the component_ocf.h

template < class VertContainerType, class FaceType, class Container1, class Container2  >
		bool HasPerFaceVFAdjacency (const TriMesh < VertContainerType , face::vector_ocf< FaceType >, Container1, Container2 > & m)
	{
	  if(FaceType::HasVFAdjacencyOcf()) return m.face.IsVFAdjacencyEnabled();
	  else return FaceType::FaceType::HasVFAdjacency();
	}


While now we have:
- in complex.h

template < class FaceType  > bool   FaceVectorHasPerFaceVFAdjacency     (const std::vector<FaceType  > &) {  return FaceType::HasVFAdjacency(); }
template < class TriMeshType> bool   HasPerFaceVFAdjacency     (const TriMeshType &m) { return tri::FaceVectorHasPerFaceVFAdjacency  (m.vert); }

- and in component_ocf.h

template < class FaceType >
  bool FaceVectorHasPerFaceVFAdjacency(const face::vector_ocf<FaceType> &fv)
  {
    if(FaceType::HasVFAdjacencyOcf()) return fv.IsVFAdjacencyEnabled();
    else return FaceType::HasVFAdjacency();
  }
2012-03-31 01:16:58 +00:00
Nico Pietroni a53447ab1c added VFOrderedStarVF_FF function 2012-03-29 16:36:01 +00:00
ganovelli bbcfbfabc2 added CurvatureDir to Face 2012-03-28 12:39:22 +00:00
ganovelli 749f67c3b6 added curvature direction 2012-03-28 11:56:10 +00:00
Nico Pietroni 4f166fbd95 added Crease Flag access functions 2012-03-16 13:49:04 +00:00
Paolo Cignoni 57bd611892 added assert in the VFIterator to handle uninitialized topology. 2012-03-14 16:02:30 +00:00
Paolo Cignoni f58551601a CHANGE to the VERY USED PointDistanceBase, the basic functor used to find the closest point to a face in all the grids.
It has a bug that could return a nan in some degnerate case where an almost null face has different vertices but the squared distance between them could be zero. 
Now it should handle also these cases.
2012-03-14 15:59:42 +00:00
Paolo Cignoni 159f9d0c0f added an assertion to block the use of VEiterators in case of unitialized VEadjacency 2012-02-09 17:54:25 +00:00
Paolo Cignoni c8e202738c added initialization of VE adjacency components to something that allows to discriminate between the uninitializated adjacency and a vertex with no edges 2012-02-09 17:53:08 +00:00
Paolo Cignoni c32db09276 Changed the name of the Distance from point to plane
from DistancePointPlane
to     SignedDistancePointPlane
to underline the fact that it is SIGNED!!!
2012-01-23 06:47:31 +00:00
Paolo Cignoni 7fb6c417da Missing Include 2012-01-20 07:51:49 +00:00
Paolo Cignoni f4cf3b9221 Changed the name of the Distance from point to plane
from DistancePointPlane
to     SignedDistancePointPlane
to underline the fact that it is SIGNED!!!
2012-01-18 11:44:42 +00:00
ganovelli d256abfaaf added PointScaledDistanceFunctor 2011-12-21 16:15:32 +00:00