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.
trimesh->tri
clean up of some namespaces to comply the following naming:
Complexes (3 letters namespaces):
order 0 (point cloud ) :vrt
order 1 (edge meshes) :edg
order 2 (triangle meshes) :tri
order 3 (triangle meshes) :tet
Simplexes (extended namespaces):
order 0 (vertex) :vertex
order 1 (edge) :edge
order 2 (triangle) :triangle (temporarily it remains "face")
order 3 (tetrahedron) :tetrahedron