Commit Graph

62 Commits

Author SHA1 Message Date
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
Paolo Cignoni 4db69febbe big replacement .Zero => .SetZero, and start of Eigen's compatibilities (currently disabled by default) 2008-10-27 14:48:14 +00:00
Paolo Cignoni 5082a0cb03 Corrected a very small bug in the finalize of the quadric simplification, (RW flags were not correctly restored at the end of the simplification) 2008-07-17 06:52:56 +00:00
Paolo Cignoni 437d258a22 Added (from an idea of Fabio Ganovelli) the possibility of adding face-quality driving quadrics. For each face, three quadric perpendicular to the face plane and passing through the edges are added (just like for borders, but with a much lower weight). In case of very planar surface these quadrics try to keep the original shapes of triangles, preferring small edge collapse. Without this in planar zones collapse order could be random. 2008-07-15 07:15:18 +00:00
Paolo Cignoni 7053bdabf0 removed harmless warnings 2008-07-15 06:57:25 +00:00
Paolo Cignoni b626643efb Re-factored the Heap-Simplex ratio parameter. Now it is something that should be asked to the localmodification class. 2008-07-10 09:44:09 +00:00
Nico Pietroni b3c2645005 changed line 215 for compilation problems in case of class extension (just semantic) 2008-07-03 10:21:17 +00:00
Nico Pietroni 1a2be8bdfa changed line 268 for compilation problems in case of class extension (just semantic) 2008-07-03 10:20:12 +00:00
Paolo Cignoni 89d09cb1b4 Fix a bug in TopoEdgeFlip::UpdateHeap (walking a around a border vertex). 2008-05-06 12:05:55 +00:00
Paolo Cignoni c918066b8e Old and useless comments erased. 2008-04-23 16:34:56 +00:00
Paolo Cignoni 108af1cd44 Static method Insert added, to avoid some code repetition. 2008-04-17 18:11:47 +00:00
Paolo Cignoni f93ee8b17d Improvement in the delaunay test in TriEdgeFlip::ComputePriority. 2008-04-17 15:02:03 +00:00
Paolo Cignoni aa91e279c3 Added code to avoid swap of tex coords after flip. 2008-04-11 15:01:47 +00:00
Paolo Cignoni 81d6e1df96 Edge index of a pos is now E() and no more I() 2008-04-11 13:25:15 +00:00
Paolo Cignoni a68e2a247e New version of PlanarEdgeFlip::UpdateHeap method 2008-04-08 14:06:31 +00:00
Paolo Cignoni f240adbf08 Fixed bug in PlanarEdgeFlip::UpdateHeap method. 2008-04-08 13:53:15 +00:00
Paolo Cignoni a8e1f18844 Added TopoEdgeFlip class. Some refactoring. 2008-04-07 13:48:35 +00:00
Paolo Cignoni 9f5f1f9fd3 Added templated parameter in PlanarEdgeFlip to set quality function for triangles. 2008-04-02 19:32:26 +00:00
Paolo Cignoni 82976a2001 f->P(i) instead of f->V(i)->P() 2008-03-29 12:05:59 +00:00
Paolo Cignoni dfa921ff88 Refactoring in the code written to retrieve four vertexes around the edge to flip 2008-03-26 15:01:44 +00:00
Paolo Cignoni 3e090a41ff Added a test to avoid degenerative flip which produce two identical overlapping faces.
Little code refactoring.
The planar swap now try to improve the average quality of faces, instead of improving the quality of the worst face.
2008-03-20 15:45:54 +00:00
Paolo Cignoni d78ce1aee8 Minor changes. 2008-03-08 12:43:26 +00:00
Paolo Cignoni 2aac6ba625 TriEdgeFlip::ComputPriority now use vcg::CircumCenter(triangle) to compute circumcenter coordinates 2008-03-02 11:00:10 +00:00
Paolo Cignoni 9841c8db32 _pos.V(i) become _pos.F()->V(i); TriEdgeFlip now access members of parent class with this->... 2008-03-01 11:16:30 +00:00
Paolo Cignoni 12c8c9f3ff Added Allocator::DeleteFace and Allocator::DeleteVertex; Now the use of SetD() should be deprecated. 2007-10-16 16:46:53 +00:00
Paolo Cignoni ae9d8a8535 Solved an issue related to different casting double-float between gcc 3 and gcc 4 2007-03-22 11:07:16 +00:00
Paolo Cignoni 8f6e26f281 Substituted std::max with vcg::math::Max 2007-03-16 10:51:46 +00:00
Paolo Cignoni 02beca15e3 Added Rad to the NormalThr Option and removed a bug in multiple exectuion of non optimal simplification (missing an isD check) 2007-02-25 09:20:10 +00:00
Paolo Cignoni 9cf8cbd534 Bugfix the init function. 2007-01-31 15:24:30 +00:00
Paolo Cignoni 9732b0f8b8 Added Finalize() method to the interface, corrected minor bugs on border preserving and postsimplification cleanup
Avoided double make_heap (it is done only in the local_optimization init)
2007-01-19 09:13:14 +00:00
Paolo Cignoni 2226163daf First working release. 2007-01-15 11:41:09 +00:00
Paolo Cignoni 7be5d031b9 typenames and qualifiers for gcc compliance 2006-10-15 07:31:22 +00:00
Paolo Cignoni 6295f96fbd Heavyly restructured for meshlab inclusion. Now the access to the quadric elements are mediated by a static helper class. 2006-10-09 20:12:55 +00:00
Paolo Cignoni 2896499a4b Changed some access to VertexFaceIterator to reflect the shorter new operators. 2006-10-09 20:09:40 +00:00
Paolo Cignoni c2fb20c70b Updated to the new style face->Normal() becomes Normal(face) 2006-10-07 17:20:25 +00:00
ganovelli f73fa19346 modifications to compile with gcc 2005-12-12 11:15:26 +00:00
Paolo Cignoni 6b14910e5f Now creation of new edge use Ordered() constructor to comply the fact that the basic collapse is simmetric. 2005-10-12 10:44:01 +00:00
Paolo Cignoni 2ef5b676b5 Changed the sign of the priority of a collapse. Now it is its the error as it should (and not -error) 2005-10-02 23:19:36 +00:00
Federico Ponchio 2328e5b1e4 *** empty log message *** 2005-04-14 11:35:09 +00:00
Paolo Cignoni 1509a9b434 Better management of symmetric/asymmetric edge collapses 2005-01-19 10:35:28 +00:00
Paolo Cignoni 8ca248762a Moved param classes inside; added support for optimal placement and symmetric; added update heap also here (not only in the base class) 2004-12-10 01:07:15 +00:00
Paolo Cignoni 953c594401 better comments and removed logging 2004-12-10 01:03:53 +00:00
Paolo Cignoni da6bf044f0 passed parameters by reference in many funcs and gcc cleaning 2004-11-23 10:34:45 +00:00
Paolo Cignoni 86f9e28e07 Initial commit 2004-11-05 09:57:18 +00:00
ganovelli e3380d3702 pos to edge 2004-10-25 16:28:32 +00:00
ganovelli 4359486afc A vcg.::Pos was used to implement the collapse type. CHanged
to vcg::Edge
2004-10-25 07:07:56 +00:00
ganovelli 215aaa2e84 corrected error in -error (see localoptimization) 2004-09-29 17:08:16 +00:00
ganovelli de4b5c1d43 changed P() to cP() 2004-09-15 11:20:15 +00:00
ganovelli 26c2861e7a creation 2004-09-15 10:25:20 +00:00
Federico Ponchio 882e9a9b16 Header guards typo 2004-09-09 13:23:01 +00:00