Commit Graph

587 Commits

Author SHA1 Message Date
Paolo Cignoni 8a47aaf62f removed a double init of a member of vector ocf and reordered members 2010-04-20 00:57:25 +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 2f8a8945cc added inclusion of used_types.h 2010-03-19 17:21:25 +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
ganovelli 9fc476b130 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:18:00 +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 2a18ebd5f5 Heavily restructured component of vertex simplex. Compacted all the emptyXXXX into a single EmptyCore class. Cleaned up the interface for the optional stuff now there is a standard static function that can say if a given component is enabled or not. 2010-03-04 13:34:38 +00:00
Paolo Cignoni 5e1f0ce521 Heavily restructured component of vertex simplex. Compacted all the emptyXXXX into a single EmptyCore class. Cleaned up the interface for the optional stuff now there is a standard static function that can say if a given component is enabled or not. 2010-03-03 16:01:39 +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 fc6483307b added a missing cVFi() 2010-02-23 16:45:45 +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
Paolo Cignoni 3e7b2267f0 added a missing const to the distance functor 2009-12-02 15:11:00 +00:00
Marco Di Benedetto 939da657a9 added public: to TexCoord* Name(). 2009-12-01 17:36:27 +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
Paolo Cignoni 6051c1eeaa added a missing IsVFAdjacencyEnabled and a missing typename 2009-10-29 17:16:41 +00:00
Nico Pietroni 74bd57f2fa missing CurvatureType and CurvatureDirType inside EmptyCurvatureData 2009-10-14 17:19:56 +00:00
mtarini 1664791bf3 minor: local variable rename to avoid weird compilation problems. 2009-10-14 14:30:28 +00:00
Nico Pietroni c57e10951c corrected funtion Normal::ImportLocal 2009-10-14 14:25:59 +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
Nico Pietroni 98e834c540 corrected 1 bug in PointDistance function 2009-09-18 09:16:17 +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 015d94f736 fixed typo in normal and color (was ImporLocal()). 2009-06-29 05:46:43 +00:00
Marco Di Benedetto 460e6bd73a fixed initialization and resizing bugs on texcoords. 2009-06-29 03:33:56 +00:00
Marco Di Benedetto e5d07a7d62 added specializations for HasPerVertexNormal() and HasPerVertexColor(). 2009-06-28 22:41:05 +00:00
Marco Di Benedetto 24327b218c added HasColorOcf(). 2009-06-28 22:39:57 +00:00
Marco Di Benedetto 4dae9d3d97 added cN() and fixed assert in color. 2009-06-28 03:18:49 +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
Marco Di Benedetto 29b9011026 added HasNormalOcf() and HasColorOcf(). 2009-06-28 03:14:48 +00:00
Paolo Cignoni eae78a0251 completed the correct working of temporary data inside the refinement functions 2009-06-25 06:19:00 +00:00
Paolo Cignoni ace6a183b3 added a missing HasPerVertexTexture() 2009-06-24 20:30:36 +00:00
Paolo Cignoni a88ee5b244 Added ocf management of per vertex texture coord 2009-06-23 20:45:44 +00:00
Paolo Cignoni c534298f2f removed harmless warning 2009-06-23 20:45:06 +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
Paolo Cignoni 2631ae5351 Added sph49f, disabled ImportLocal for a while 2009-03-25 07:51:28 +00:00
Paolo Cignoni b8fc43e7c6 Added non optional per vertex radius component 2009-03-18 15:53:52 +00:00
Marco Di Benedetto eeacaeff3b fixed WN and WT assignments (indices used). 2009-03-17 16:40:36 +00:00
ganovelli 729cd02057 [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
2009-01-14 17:45:18 +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
Paolo Cignoni eca304e5f5 mark of Vertex should not be named HasFaceMarkOcf!! 2008-12-21 01:39:46 +00:00
ganovelli 8a1fdbe37f [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:34:41 +00:00
ganovelli 045832c348 [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:34:17 +00:00
ganovelli d88ae15696 [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:33:51 +00:00
ganovelli 4f8ed978a7 [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:33:23 +00:00
ganovelli f9a1578c8d [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:33:01 +00:00
ganovelli 49b4970452 [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:32:32 +00:00
ganovelli c9b6f8f7c8 2008-12-19 10:31:56 +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 ca3f973398 added unsupported to deprecated in the warning 2008-12-12 18:11:42 +00:00
ganovelli 76eefc7fb8 added unsupported to deprecated in the warning 2008-12-12 18:10:36 +00:00
Paolo Cignoni 007d6b94f5 added two const to the next and prev index returning functions 2008-12-05 22:42:55 +00:00
ganovelli 3cbdda3232 added EmptyEEAdj to the type holder 2008-11-27 18:21:01 +00:00
ganovelli a00abdc73c added EmptyHEData in EdgeBase 2008-11-26 17:43:28 +00:00
ganovelli cb547de5ec removed a few bugs, added EmptyHEData class 2008-11-26 17:42:55 +00:00
ganovelli 327874865a removed a few bugs on calls to Alloc() 2008-11-26 17:41:47 +00:00
Paolo Cignoni c7719d7d35 Corrected wrong max_band 2008-11-20 13:29:26 +00:00
Paolo Cignoni 360da1dd58 small changes (this-> disambiguations) and a type hack to grant compilation on mac gcc 2008-11-13 09:44:46 +00:00
ganovelli f80c878644 [EDGE SUPPORT] Added template parameter to query function to comply mods in vcg/complex/trimesh/base.h 2008-11-12 16:21:30 +00:00
ganovelli 81a4a5b4f5 added missing cC() access to color 2008-11-12 16:20:53 +00:00
ganovelli 62ff8885c0 Added missing Prev and Next to PolyInfo
[EDGE SUPPORT] Added PFEAdj (pointer to edge)
2008-11-12 16:19:52 +00:00
ganovelli d3ba33039b [EDGE SUPPORT] Added template parameter to qyery function to comply mods in vcg/complex/trimesh/base.h 2008-11-12 16:18:28 +00:00
ganovelli 085d51edfa [EDGE SUPPORT] added FEAdj component 2008-11-12 16:17:07 +00:00
ganovelli 896e0edc04 minor - just identation 2008-11-12 16:15:52 +00:00
ganovelli be05277504 added the components to implement the half edge data structure:
HEOppAdj   : pointer to the opposite half edge
HEVAdj     : pointer to the vertex 
HENextAdj  : pointer to the next half edge
HEPrevAdj  : pointe to the previous half edge
EFAdj      : pointer to the face
HEdgeData  : groups all previous except (HEPrevAdj)
2008-11-12 16:14:13 +00:00
Paolo Cignoni 4e46ff3be6 Added HasPerVertexRadius(mesh) 2008-10-31 12:27:37 +00:00
Paolo Cignoni 7befff7bec make point2 derived Eigen's Matrix, and a set of minimal fixes to make meshlab compile
with both old and new version. The fixes include:
- dot product: vec0 * vec1 => vec0.dot(vec1) (I added .dot() to the old Point classes too)
- Transpose: Transpose is an Eigen type, so we cannot keep it if Eigen is used. Therefore
  I added a .tranpose() to old matrix classes, and modified most of the Transpose() to transpose()
  both in vcg and meshlab. In fact, transpose() are free with Eigen, it simply returns a transpose
  expression without copies. On the other be carefull:  m = m.transpose() won't work as expected,
  here me must evaluate to a temporary: m = m.transpose().eval(); However, this operation in very
  rarely needed: you transpose at the same sime you set m, or you use m.transpose() directly.
- the last issue is Normalize which both modifies *this and return a ref to it. This behavior
  don't make sense anymore when using expression template, e.g., in (a+b).Normalize(), the type
  of a+b if not a Point (or whatever Vector types), it an expression of the addition of 2 points,
  so we cannot modify the value of *this, since there is no value. Therefore I've already changed
  all those .Normalize() of expressions to the Eigen's version .normalized().
- Finally I've changed the Zero to SetZero in the old Point classes too.
2008-10-28 00:59:46 +00:00
ganovelli d5113f6204 added missing functions
IsCurvatureDirEnabled
EnableCurvatureDir

and debugged CurvatureDirTypeOcf, which
returned wrong values and [MAJOR] wasted
8 floats per vertex every time it was included in the type (enabled or not)
2008-10-24 09:54:23 +00:00
ganovelli 3a5b6ed2f3 added missing checks in ImportLocal 2008-10-24 09:50:55 +00:00
ganovelli cba885edbe missing (unreachable) return added 2008-10-24 09:49:47 +00:00