Commit Graph

267 Commits

Author SHA1 Message Date
ganovelli 585f0462e8 ImportLocal to ImportData. Adjacencies are no more handle by ImportData, but
by speficic functions in append.h (ImportPerxxxAdj(..))
2010-06-16 16:24:26 +00:00
ganovelli de851eb29e inclusion of alltypes.h 2010-05-19 17:16:58 +00:00
Paolo Cignoni 7bd30d3ca0 fixed wrong pointer type in FHAdj class 2010-04-26 14:54:44 +00:00
Paolo Cignoni 3ee9667060 added two helper functions used for the self intersection tests 2010-04-20 00:56:08 +00:00
matteodelle 8b293069af Corrected an error in the template def. of TriMesh 2010-03-29 08:07:22 +00:00
ganovelli 261ff53ab1 [introduction of half edges as alternative representation]
No modification should be necessary for the existing code.

most relevant changes:

creation of folder:
vcg/connectors  
vcg/connectors/hedge.h
vcg/connectors/hedge_component.h

addition to the container of half edges to the trimesh:
HEdgeContainer hedge; // container
int hn;               // number of half edges

addition of 
vcg/trimesh/update/halfedge_indexed.h
which contains:
- the functions to compute the half edge representation from the indexed  and vivecersa
- the functions to add or remove an half edge
2010-03-25 16:52:18 +00:00
ganovelli a2341076c1 added typedef of ScalarType 2010-03-19 17:20:52 +00:00
ganovelli 21dd8aa179 Simplified reflection typedefs:
added type traits to support the mod below:

[ Changes in definition of  TriMesh: PART II ]

Note: No changes to existing code need be the done, this mod
should be fully backward compatible

Old way to define a TriMesh ==============
struct MyMesh: public vcg::tri::TriMesh< vector<MyVertex> , vector <MyFace> >{};

new  ways to define a TriMesh ==============

struct MyMesh: public vcg::tri::TriMesh< CONT1 >{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2>{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2, CONT3>{};

where CONT[i] can be vector< [MyVertex | MyEdge | MyFace ] > 
(the order is unimportant)
2010-03-19 17:19:51 +00:00
Paolo Cignoni cf872a327c Doh! Forgot a const in the getbbox of Face Base 2010-03-18 10:28:10 +00:00
Paolo Cignoni 63e21f15cb Disambiguated the origin of the ScalarType and CoordType in the simplex class. Now it derives from the type specified by the vertexRef component for the faces and from the Coord component for the vertexes. To be sure the ScalarType and CoordTypes are initialized to weird point3<bool> and char just to detect easisly when the wrong types shallow... 2010-03-18 10:02:32 +00:00
ganovelli c40a6c3d97 [ Changes in definition of TriMesh: PART I ]
Note for the developers: the change to make to existing projects is very little 
but strictly necessary to compile. This change IS NOT backward compliant.


==== OLD ==== way to define a TriMesh:

// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

class MyVertex: public VertexSimp2 < MyVertex, MyEdge, MyFace, vertex::Coord3f,...other components>{};
class MyFace: public FaceSimp2 < MyVertex, MyEdge, MyFace, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};


==== NEW ==== way to define a TriMesh:
// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

// declaration of which types is used as VertexType, which type is used as FaceType and so on...
class MyUsedTypes: public vcg::UsedType < vcg::Use<MyVertex>::AsVertexType,
                                          vcg::Use<MyFace>::AsFaceType>{};

class MyVertex: public Vertex < MyUsedTypes, vertex::Coord3f,...other components>{};
class MyFace: public Face < MyUsedTypes, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};

                                 
===== classes introduced          
[vcg::UsedType] : it is a class containing all the types that must be passed to the definition of Vertex, Face, Edge... This
class replaces the list of typenames to pass as first templates and the need to specify the maximal simplicial. So 

<MyVertex, MyEdge, MyFace  becomes <MyUsedTypes<

and 

VertexSimp2 becomes Vertex

[vcg::Use] : an auxiliary class to give a simple way to specify the role of a type

Note 2: the order of templates parameters to vcg::UsedTypes is unimportant, e.g:

class MyUsedTypes: public vcg::UsedType <vcg::Use<MyVertex>::AsVertexType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyFace>::AsFaceType>{};

is the same as:
class MyUsedTypes: public vcg::UsedType <vcg::Use<MyFace>::AsFaceType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyVertex>::AsVertexType>{};

Note 3: you only need to specify the type  you use. If you do not have edges you do not need 
to include vcg::Use<MyEdge>::AsEdgeType in the template list of UsedTypes.
==== the Part II will be a tiny change to the class TriMesh it self.
2010-03-15 10:42:52 +00:00
Paolo Cignoni 5ef6d30d37 Added a test to check in the point to face distance computation to manage the case of degenerated faces. Now correctly resort to distance point to segment. 2010-03-03 00:35:20 +00:00
Paolo Cignoni 18c92582d4 Cleaned up the CompactFaceVector and the CompactVertexVector, Now they correctly manage existing FV and FF topology by preserving them (if they are initialized to something meaningful). 2010-02-22 17:37:51 +00:00
Nico Pietroni 98eba3ef33 corrected minor compiling issues 2010-02-22 01:03:23 +00:00
Paolo Cignoni 446400f6fc Now the compactvertex and compactface funtions use the importlocal chain so we are sure that all the meaningful data is correctly copied (otherwise ocf stuff will not be copied) On the other hand when using ImportLocal we do not copy pointer based stuff like adjacency and *vertex pointers* that must be terefore copied by hand... 2010-02-19 00:21:26 +00:00
Paolo Cignoni 3b152298cc added runtime assert to prevent dangerous simplex to simplex assignment in the case of OCF optional attributes. 2010-02-11 00:14:35 +00:00
Paolo Cignoni a26b0e34f9 Cleaned up Detach functions and added a special, simpler version of Detatch for 2Manifold cases 2010-01-03 02:01:45 +00:00
Paolo Cignoni 7030dbb151 small change. The FFp<i> shortcuts seems no more used... 2009-12-07 08:31:01 +00:00
Marco Di Benedetto 5b076c064e added public: to WedgeColor* and Color Name(). 2009-12-01 17:35:42 +00:00
Paolo Cignoni 302a7725fa removed harmless warnings 2009-11-17 23:34:46 +00:00
Paolo Cignoni 70ae4d5c50 made public the self inspection member 'name' of the components. I do not know why it was not public in that case. 2009-11-05 22:35:56 +00:00
Paolo Cignoni 5ef3e2ca50 added a missing const cQ() for ocf face component 2009-11-01 09:51:53 +00:00
Nico Pietroni ea6553f1d5 corrected funtion NormalAbs::ImportLocal 2009-10-14 14:25:00 +00:00
ganovelli 5c0f228a4d added few missing Has*Ocf 2009-10-08 15:46:31 +00:00
Marco Di Benedetto 6fb6cfbb24 added const to method. 2009-09-03 14:48:22 +00:00
Marco Di Benedetto ae09d558f0 added const to method. 2009-09-03 14:48:08 +00:00
Paolo Cignoni 415228fcd4 Added some missing importLocal functions 2009-08-30 13:54:06 +00:00
Marco Di Benedetto be1d887db6 Renamed LeftT to RightT, added some checks and fixed method name. 2009-08-28 15:26:40 +00:00
granzuglia 14eb3697ec changes in order to compile with gcc 3.x 2009-07-15 16:25:25 +00:00
Marco Di Benedetto 85ccd7dc0b removed unused parameter warning. 2009-06-30 19:00:47 +00:00
Marco Di Benedetto 35189992a9 added WedgeNormalOcf and WedgeColorOcf. 2009-06-28 03:17:42 +00:00
Marco Di Benedetto 86c2311130 added HasWedgeRealNormal() (temporary name, now does not depend on vertex normal type) and added const in cWC(). 2009-06-28 03:16:35 +00:00
Paolo Cignoni eae78a0251 completed the correct working of temporary data inside the refinement functions 2009-06-25 06:19:00 +00:00
Marco Di Benedetto 625497e788 fixed ImportLocal() in WedgeColor: iteration was missing. 2009-06-15 17:26:00 +00:00
Marco Di Benedetto 39156cafe4 completed support for WedgeColor. 2009-06-09 18:23:50 +00:00
Paolo Cignoni 69004410e3 Corrected a wrong function to clear border face flag (and added BORDER012 to the enums of the flags) 2009-06-04 08:15:59 +00:00
Federico Ponchio e888ef1560 removed some useless consts 2009-06-03 12:23:20 +00:00
Paolo Cignoni b96d693960 bool ClearAllF() -> void ClearAllF() (no reason it is a bool returning function) 2009-05-26 22:35:57 +00:00
mtarini ac017fffb6 added few shortcuts to handle faux flags together: IsAnyF, ClearAllF (and a bit-mask FAUX012). 2009-05-26 17:57:24 +00:00
Paolo Cignoni 57a202111c Added the functor PointNormalDistanceFunctor used in the GetClosestFaceNormal. 2009-05-23 20:12:58 +00:00
Paolo Cignoni 291c2790af Removed harmless warnings 2009-05-22 07:54:42 +00:00
mtarini 77f5129ac9 Aggiunto i flags Faux che identificano gli edge dentro una faccia poligonale. 2009-04-20 22:49:33 +00:00
Paolo Cignoni b399b4943f added two assert that checks that you have consistently prepared your mesh before feeding it into a grid for distance checking. 2009-04-19 21:20:08 +00:00
Paolo Cignoni 8be6f002a3 Significant rewrote of the ImportLocal framework. Now it can really manage differently typed meshes.
It still requires that for OCF meshes the user enable stuff as needed.
2009-04-05 23:33:04 +00:00
Paolo Cignoni 7f2d51828f added a missing cQ() constant member 2009-04-05 21:53:09 +00:00
Marco Di Benedetto eeacaeff3b fixed WN and WT assignments (indices used). 2009-03-17 16:40:36 +00:00
Paolo Cignoni 0db413a1f4 fix compilation 2008-12-29 12:01:23 +00:00
Paolo Cignoni 190e1612c7 added VVStarVF that computes the star of a given vertex exploiting VF adjacency 2008-12-21 01:41:07 +00:00
ganovelli 698f6cbd7e [SIMPLEXplus promotion]
This modification removes the old way to define simplexes (already deprecated and unsupported).
In the following SIMPLEX = [vertex|edge|face|tetrahedron]

All the stuff that was in vcg/simplex/SIMPLEXplus/ has now been promoted to vcg/simplex/

Details:
- the folder vcg/simplex/SIMPLEX/with has been removed
- the file vcg/simplex/SIMPLEX/base.h has been renamed into  vcg/simplex/SIMPLEX/base_old.h 
- the content of vcg/simplex/SIMPLEXplus/ has been moved into vcg/simplex/SIMPLEX/
- the folder vcg/simplex/SIMPLEXplus/ has been removed

Actions the update the  code using vcglib:
replace <vcg/simplex/SIMPLEXplus/*> with  <vcg/simplex/SIMPLEX/*> in every include
for MESHLAB users: already done along with this commit
2008-12-19 10:30:51 +00:00
ganovelli 76eefc7fb8 added unsupported to deprecated in the warning 2008-12-12 18:10:36 +00:00
ganovelli cba885edbe missing (unreachable) return added 2008-10-24 09:49:47 +00:00
ganovelli 0d4b3fbed0 [Polygon modification]
Added components to the face to handle generic polygons.
(compiled with .net and gcc)

This commit includes the following files:
vcg/complex/trimesh/base.h
Added deallocation of polygon data in the destructor

vcg/complex/trimesh/allocate.h
generalization from 3 to VN() vertices

vcg/complex/trimesh/update/topology.h
generalization from 3 to VN() vertices

vcg/complex/trimesh/update/flags.h
generalization from 3 to VN() vertices

vcg/simplex/face/pos.h
generalization from 3 to VN() vertices

vcg/simplex/faceplus/base.h
Added the method VN() to query the number of vertices
of the polygon (deafult 3) and methods Prev and Next

vcg/simplex/faceplus/component.h
added Alloc and Dealloc calls along the hierarchies
2008-10-08 09:10:53 +00:00
ganovelli b5bca977a7 added pragma message to deprecate this way to define the simplex 2008-09-28 14:30:09 +00:00
ganovelli 68d900ec7e changes to compile previous commit with gcc 2008-09-24 09:15:38 +00:00
ganovelli f6da3d936d DistanceFunctor templated on the type of the query 2008-09-24 08:41:04 +00:00
Paolo Cignoni d3debc41e4 Changed the SetFF IsFF, ClearFF flag functions to the new names SetF IsF, ClearF 2008-06-30 09:58:43 +00:00
Paolo Cignoni 3779f19eee Corrected nasty bug in the newest version of the point-face distance, now the two versions are quite coherent 2008-06-13 06:03:27 +00:00
Paolo Cignoni 7f4d6cbd76 Added a version of the point-face distance function that does NOT require the precomputed edgeplane additional data. 2008-06-04 13:27:10 +00:00
Paolo Cignoni 36361be798 Big change. removed nexte.
Now the function is NextFE.
added find border function
2008-04-11 10:13:01 +00:00
Paolo Cignoni 0caa683764 better comments, renamed I() -> E()
removed wrong coherent function
2008-04-11 10:11:32 +00:00
Paolo Cignoni de92614c18 FaceType::VerteType --> FaceType::VertexType 2008-04-06 08:55:16 +00:00
Paolo Cignoni a45b2e8fa0 Added I() access function for the z member to the pos 2007-10-17 19:46:50 +00:00
Paolo Cignoni dcd031a38d added some using keywords and templates 2007-07-16 10:00:14 +00:00
Paolo Cignoni 1a3ea71ef5 Added Set method which takes a face pointer and a vertex pointer. 2007-05-28 14:09:41 +00:00
Paolo Cignoni 9b7d4fc359 Initial commit 2007-05-16 15:13:54 +00:00
Paolo Cignoni 1f231b5a3f Added std:: prefix to swap call 2007-05-16 15:12:40 +00:00
Paolo Cignoni d207af03d2 Replaced ambigous StarSize method with NumberOfIncidentVertices and NumberOfIncidentFaces 2007-05-16 15:11:32 +00:00
ganovelli c2e2b2cd0a changes to comply "plus" types 2007-05-04 16:44:06 +00:00
Paolo Cignoni cde27e321a Corrected V() operator. It was plainly wrong. Luckly enough it was not very used 2007-04-20 12:40:31 +00:00
mtarini 22fd220c6f Texture coord name change! "TCoord" and "Texture" are BAD. "TexCoord" is GOOD. 2007-03-12 15:37:19 +00:00
ganovelli 142880a279 added QualityType to comply faceplus type 2007-02-20 14:07:53 +00:00
Paolo Cignoni bcc7bb0c83 Added #ifdefs to guarantee that ComputeNormal would be defined only once 2007-01-13 00:25:36 +00:00
Paolo Cignoni 5c63b84bf8 Added include assert.h 2007-01-11 10:37:08 +00:00
Paolo Cignoni d72aabbe64 Rewrote the template of ComputeNormal functions to a more readable form. 2007-01-11 10:13:11 +00:00
Paolo Cignoni 07fb3ae2df Added access functions F() 2007-01-02 10:06:53 +00:00
Paolo Cignoni b226ba87ba Corrected wrong assert in V(i) access function 2006-12-29 13:13:00 +00:00
Paolo Cignoni efa2743316 Removed Oldstyle uberZ access to FF adjacency 2006-12-06 00:08:21 +00:00
Paolo Cignoni c680da71f9 Added FFlip() and const VFlip() operators 2006-12-04 16:06:12 +00:00
Paolo Cignoni 63f09aa04b Added a missing prototype to ismanifold 2006-11-13 01:57:23 +00:00
Paolo Cignoni 43facb8954 Corrected Detach; added FFCorrectness; Corrected ComplexSize, Dissemination of a lot of assert() 2006-11-09 17:28:42 +00:00
Paolo Cignoni 4be312c7f2 Added ismanifold 2006-11-09 17:22:56 +00:00
Paolo Cignoni be10b9167b Explained the use of V() operator of a pos 2006-10-07 14:24:26 +00:00
Marco Di Benedetto 1fbdc88c2c First Commit. 2006-09-28 13:30:39 +00:00
Paolo Cignoni a4ecdb2635 Better comment on usage of VF iterators 2006-09-25 09:57:49 +00:00
Paolo Cignoni ec2e478c4a changes for compilation on linux. Not sure about using either SphereOfTriangle or SphereOfTetra, please check. 2006-07-12 12:14:31 +00:00
ganovelli 67d370e4f4 added SmallestEnclosingSphere 2006-07-06 12:45:08 +00:00
Marco Di Benedetto 3c222fd583 First Commit. 2006-05-08 15:19:21 +00:00
Paolo Cignoni c7196917fd Added possibility of not updating the topology during a SwapEdge 2006-05-03 21:38:57 +00:00
Paolo Cignoni 9df4f755ec Initial commit. 2006-04-21 08:05:44 +00:00
Paolo Cignoni 381ce72a56 Corrected use of Area with the unambiguous DoubleArea 2006-01-22 10:06:23 +00:00
Paolo Cignoni 92c21e838d Very Important Change: Area->DoubleArea (and no more Area function) 2006-01-22 10:00:56 +00:00
Massimiliano Corsini 009f633576 Rewrite SwapEdge to fix problems with borders 2005-12-19 13:47:26 +00:00
Massimiliano Corsini c334cebb47 Add some user bit 2005-12-16 11:42:23 +00:00
Massimiliano Corsini a088ee1ba6 Remove trivial warnings 2005-12-16 11:01:26 +00:00
Massimiliano Corsini c1ffab75de Add further comment to FlipEdge 2005-12-16 10:47:48 +00:00
Massimiliano Corsini 67dca7d9e6 Fix one bug 2005-12-16 10:43:23 +00:00
Massimiliano Corsini 8133c87819 Add CheckOrientation
Reimplement SwapEdge function
2005-12-16 10:29:10 +00:00
Massimiliano Corsini becbfab7da Replace Pos<FaceType> with PosType 2005-12-15 11:57:48 +00:00
Massimiliano Corsini fa45011ed9 Fix operators 2005-12-15 11:19:00 +00:00
Massimiliano Corsini bd8e59e0b4 Add constructor which takes as input a face and a vertex 2005-12-15 10:53:16 +00:00