Commit Graph

347 Commits

Author SHA1 Message Date
Paolo Cignoni 07fd44359d Added Distribution Class, a more safe and slower class for managing distribution of scalar values that has the same interface of Histogram 2009-01-15 23:54:00 +00:00
Federico Ponchio d0ad7cbacc fabs -> math::Abs 2009-01-15 14:29:05 +00:00
granzuglia 72eb2f753e added GetColumn3,GetColumn4,SetColumn 2009-01-15 13:42:30 +00:00
Paolo Cignoni 0b15c9b4b4 added a few const, and a default value for the generate(int) call 2008-12-18 00:29:03 +00:00
Marco Callieri 7548c5e2ac corrected a pow argument casting 2008-12-16 09:52:04 +00:00
Paolo Cignoni 0f0ac756e4 Polar Functor is now templatized 2008-12-15 13:16:00 +00:00
Paolo Cignoni a9a17a0713 Aligned with current implementation of RandomGenerator 2008-12-15 08:49:02 +00:00
Paolo Cignoni 13e5060688 Re-added the original constructor with the seed. Very useful for using custom static generators. 2008-11-27 21:04:17 +00:00
Massimiliano Corsini b73fba8706 refactoring 2008-11-27 16:39:05 +00:00
Paolo Cignoni 46b3024de6 Changed as to include new Random methods 2008-11-27 15:05:36 +00:00
Massimiliano Corsini c13722fd54 minor changes 2008-11-27 11:49:17 +00:00
Massimiliano Corsini 67d185c384 other bugs fixed 2008-11-27 11:37:23 +00:00
Massimiliano Corsini 7b8d3a07f0 first fixes 2008-11-27 11:31:01 +00:00
Massimiliano Corsini 50a436594e re-styled and improved uniform random number generator 2008-11-27 11:27:54 +00:00
Paolo Cignoni 5ee16ee977 Removed unused static field max_band 2008-11-20 13:27:50 +00:00
Federico Ponchio a9e5756eda Distortion parameter zeroed on creation! 2008-11-06 15:36:44 +00:00
Paolo Cignoni 0927eaf2fb sounds like I forgot to commit the addition of Transpose compatibility + fix related to recent Eigen change 2008-11-04 12:33:47 +00:00
mtarini b3620bb320 implemented ToEulerAngles + minor changes and fixes. 2008-11-01 15:54:13 +00:00
Paolo Cignoni dfc97ba1f2 fix Matrix44 infinite product, make glGetv not allocate temporary 2008-10-30 10:47:08 +00:00
Paolo Cignoni 60eb470c6c of course fixing msvc breaked gcc... not anymore... spoke too fast gcc 4.0.1 had troubles 2008-10-29 15:52:07 +00:00
Paolo Cignoni e90fd9ca16 of course fixing msvc breaked gcc... not anymore 2008-10-29 15:36:08 +00:00
Paolo Cignoni 0414cbc2f3 Fixed includes, new interface to specify polar functions 2008-10-29 15:26:45 +00:00
Paolo Cignoni c8506daaff fixed a couple of MSVC issues, meshlab compile, the plugins soon... 2008-10-29 14:01:44 +00:00
Paolo Cignoni 7b075b3905 mvsc does not like #warning 2008-10-29 13:17:32 +00:00
Paolo Cignoni 69a82d6174 fix the is "inaccessible" issue with g++-4.0.1 - more fixes ;) 2008-10-29 11:29:57 +00:00
Paolo Cignoni 696f763c3d fix the is "inaccessible" issue with g++-4.0.1 2008-10-29 11:28:51 +00:00
Paolo Cignoni e587581275 add transposeInPlace and duplicate V(int) 2008-10-29 11:17:11 +00:00
Paolo Cignoni 07f2e976ea * change all remaining Transpose to transpose,
* update the gl/math wrappers to make them more Eigen friendly
  (and remove the useless, and not used, and somehow dangerous
   *Direct and *E functions)
* add automatic reinterpret_casting from Eigen::Matrix to vcg
  specialized types
2008-10-29 00:05:44 +00:00
Paolo Cignoni 0361427bc0 big cleaning in Point* and Matrix*, now they are very closed to be simple typedef of
Eigen's Matrix. Now the dilema is how to mimic those typedefs, using inheritence ?
or using the classic workaround: typename Point3<float>::Type; with Point3<T>::Type defined
to Eigen::Matrix<T,3,1>. Anyway currently I support both (and the inheritence scheme has
to be preserved for compatibility). The advantage of the second approach is that when
eigen has to evaluate an expression it uses an Eigen::Matrix<>, so it is probably better
to only use Eigen::Matrix but I'm not 100% sure that makes a big difference especially if
we add some automatic reinterpret_cast between Eigen::Matrix and vcg::Point*....
2008-10-28 20:06:17 +00:00
Paolo Cignoni c1551eddfd make Point derive Eigen's Matrix and some cleanning 2008-10-28 11:47:37 +00:00
Paolo Cignoni 977ddb9623 some cleaning 2008-10-28 10:16:43 +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
Paolo Cignoni ab200fc950 Port to eigen2: state of the mess:
* curently nothing change if you don't define VCG_USE_EIGEN
* make Matrix*, Point3 and Point4 derive Eigen::Matrix (still ugly)
* now catching all the dot products to replace them by .dot()
  note that most of meshlab already compile
2008-10-27 19:35:17 +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
Federico Ponchio 5394003338 Fixed small error in documentation 2008-10-24 18:49:40 +00:00
Paolo Cignoni 8a8eb6fb65 add the possiblity to sort eigenvalues/vectors according to their absolute values 2008-10-24 17:21:53 +00:00
Paolo Cignoni 24ea4251a9 Matrix33: make const the binary operators 2008-10-24 12:20:44 +00:00
Paolo Cignoni 39e2cf2b3e Spherical Harmonics are templatized on the number of coefficients 2008-10-08 14:01:34 +00:00
ganovelli d0d580c4ae Changed GetIntrinsics into:
GetExtrinsicsToWorldMatrix and
GetWorldToExtrinsicsMatrix
2008-10-07 10:57:09 +00:00
ganovelli e16d065e93 [Namespaces changes]
vert->vertex


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
2008-09-30 11:41:58 +00:00
ganovelli bb741600ca <limits.h> to <limit> 2008-09-30 11:41:04 +00:00
ganovelli a2e3e5b725 Removed Similarity from Shot
Problem: Shot was using similarity merely to store
rotation and translation. 
There was an incompatibility in that Similarity::ToMatrix
gives scale*rotation*translation while in Shot
the translation stores the viewpoint and the rotation the orientation of the Shot.

In this version, a small class ReferenceFrame was done to play the role of similarity and MultMatrix and MultSimilarity functions were added to transform the frame by multiplying it for a Matrix44 (or applying a similarity).

NOTE: the file export_ply.ply and import_ply.h must also be updated.

-- only compiled with .net ---
2008-09-26 17:07:32 +00:00
Federico Ponchio e5258c6aa3 Attempting to make similarity compatible with both quaternions and matrix44 2008-09-26 15:37:53 +00:00
ganovelli 3d8400f86e added a missing templatization od Point3 in Decompose (thanks Oscar Barney) 2008-09-22 13:49:15 +00:00
ganovelli efd69c8291 qualifier Camera<S>:: removed in inline definition (thanks Oscar Barney) 2008-09-22 13:42:49 +00:00
ganovelli 889b2ddaa3 chamged " to < in the #include 2008-09-22 09:35:01 +00:00
ganovelli f2ed76753c added inclusion of functional 2008-09-22 09:10:58 +00:00
granzuglia b9ce07204e Minor changes according to new Point<N,S> definition. 2008-09-10 14:06:13 +00:00
Paolo Cignoni e8c7472dca Corrected name of template type S in UndistortedToDistorted() to avoid the shadowing between S as type and S as variable name. 2008-09-09 17:41:33 +00:00
matteodelle c94dbdfdaf 2008-09-09 09:22:55 +00:00
matteodelle 0c2491e1b4 new functions to handle distortion: should not affect previous stuff. tested but still error prone... 2008-09-09 09:20:48 +00:00
Federico Ponchio 12d5a0e322 Removed compile warning by initializing imax to 0 in Decompose(). 2008-08-27 14:33:20 +00:00
Paolo Cignoni 7c66288207 changed a RotateRad to the new SetRotateRad 2008-08-14 10:02:07 +00:00
ganovelli 3462f6a8c2 changed from Rotate (in degrees) to SetRotateRad and SetRotateDeg (the same as in Matrix44.h)
Added return type to the functions SetXXX
2008-08-12 17:31:11 +00:00
Paolo Cignoni 9e214da6ff Re-inserted the return statement in the Invert() function that was erroneously removed with the previous commit. 2008-08-11 12:56:37 +00:00
Paolo Cignoni 65320e40a7 Added a clarifying comment on the Invert versus Inverse issue 2008-08-11 08:04:19 +00:00
ganovelli 1e94f7cf46 Add covariance matrix of a set of points 2008-08-07 18:33:23 +00:00
Paolo Cignoni dde42be7ea Added new line at the end of file 2008-08-04 15:55:53 +00:00
Paolo Cignoni e4e5507757 Added missing includes 2008-08-04 15:38:10 +00:00
Paolo Cignoni c46f5f2435 removed a version of the ComputeRigidMatchMatrix that take in input a weight vector. User should use ComputeWeightRigidMatchMatrix directly 2008-07-23 22:50:15 +00:00
Paolo Cignoni f61a69c94f in "ComputeRigidMatchMatrix(std::vector<ScalarType> weights,Matrix44x &res,std::vector<Point3x> &Pfix,std::vector<Point3x> &Pmov)" I changed:
Quaterniond qtmp;  ----->to------>	Quaternionx qtmp;
Point3d tr;	   ----->to------>	Point3x tr;
2008-07-23 17:30:30 +00:00
Paolo Cignoni 6a4631b94b 1) in "ComputeWeightedRigidMatchMatrix" I changed:
std::vector<double> weights       ----->to------>     std::vector<ScalarType> weights
tmp.Trasp();		          ----->to------>     tmp.Transpose();
QQ.Zero();		          ----->to------>     QQ.SetZero();
RM.Zero();		          ----->to------>     RM.SetZero();
ccm.Trasp();		          ----->to------>     ccm.Transpose();
QQ.Jacobi(d,v,nrot);	          ----->to------>     Jacobi(QQ,d,v,nrot);
q.RotMatrix(Rot);	          ----->to------>     q.ToMatrix(Rot);
tr= (bfix - Rot.Apply(bmov));     ----->to------>     tr= (bfix - Rot *bmov);		
Trn.Translate(tr);	          ----->to------>     Trn.SetTranslate(tr);	


2) in "ComputeRigidMatchMatrix" I changed:
return ComputeRigidMatchMatrix(res,Pfix,Pmov,qtmp,tr); 	----->to------>	 return ComputeWeightedRigidMatchMatrix(res,Pfix,Pmov,weights,qtmp,tr);
2008-07-23 17:19:51 +00:00
Federico Ponchio 825483d177 Rationalized ToMatrix and FromMatrix (and improved algorithm). 2008-07-21 13:38:55 +00:00
Federico Ponchio 89973a1a14 Extrinsics in Shot use Matrix44 not Quaternion. therefore ToMatrix was correct.
Rolling back.... sigh.
2008-07-14 13:42:22 +00:00
Federico Ponchio 844be84004 GetCol3 -> GetColumn3 (this part needs to be tested!) 2008-07-14 13:28:27 +00:00
Paolo Cignoni a20902efd8 VERY IMPORTANT CHANGE - Could break the compilation of a lot of code around.
SetRotate of matrix44 has gone. Now only the explicit version SetRotateDeg and SetRotateRad are available. It was too error prone having something with the OpenGL syntax but using radiant instead the OpenGL degrees
2008-07-13 05:37:00 +00:00
ganovelli 3d21fcba1d removed dependency on qt 2008-06-23 14:20:52 +00:00
Paolo Cignoni 8a6dbded39 Corrected wrong license information in the header 2008-05-28 23:29:23 +00:00
Paolo Cignoni 45ed8cb000 Capital f in Factorial 2008-05-28 08:59:40 +00:00
Paolo Cignoni a152d0e208 First release 2008-05-28 08:55:04 +00:00
Paolo Cignoni 0a0436a13c Removed $Log$ macro 2008-05-28 08:54:33 +00:00
Paolo Cignoni 4ee18ed103 First release 2008-05-28 08:53:30 +00:00
Paolo Cignoni 2caf6034f3 Added SQRT_TWO 2008-05-28 08:51:32 +00:00
Paolo Cignoni 399277570b First release 2008-05-16 10:36:35 +00:00
Federico Ponchio 9cb9c1dace Fixed Axis. Due to quaternion changes. 2008-04-11 12:22:32 +00:00
ganovelli b457b0c978 removed printf 2008-03-17 11:36:37 +00:00
Paolo Cignoni 04d00284a5 added missing include limits 2008-03-06 10:45:39 +00:00
Paolo Cignoni 051c612aba Heavily refactored the whole structure.
Some interfaces have been changed. Be careful.
2008-03-05 11:21:49 +00:00
Paolo Cignoni d14283e619 added maxcount 2008-02-29 12:15:06 +00:00
Federico Ponchio 82635287c7 Returrned to s*r*t decomposition. 2008-02-24 18:03:03 +00:00
Federico Ponchio 6b3726ef90 Removed a Transpose due to change in quaternions.h ToMatrix 2008-02-22 18:10:39 +00:00
Federico Ponchio 8cc9a085a7 Changed to reflect quaternion toMatrix inversion. 2008-02-22 17:41:48 +00:00
Federico Ponchio 84760ee1f2 Fixed determinantt problem and quaternion problem. 2008-02-22 17:40:27 +00:00
Federico Ponchio 2b19c6c313 ToMatrix returned the inverse matrix. OUCH.
This affects trackball and shot.h
Added a const also.
2008-02-22 17:39:59 +00:00
Federico Ponchio e4c62fec6d refixed bug in FromMatrix 2008-02-21 11:34:08 +00:00
Federico Ponchio a32c8842ef fixed bug in FromMatrix 2008-02-21 10:57:59 +00:00
Paolo Cignoni 652f27f40f corrected bug in FromMatrix 2008-02-21 10:30:18 +00:00
ganovelli 7ddf584fac useless matrix multiplication removed 2008-01-03 17:42:03 +00:00
ganovelli a7e016e1ef added RandomRotation 2008-01-03 17:40:17 +00:00
Paolo Cignoni 224e50a2bd Added missing include guards 2007-12-02 10:06:47 +00:00
Marco Di Benedetto da56c33f36 Added missing #include <algorithm> 2007-11-24 20:41:00 +00:00
Paolo Cignoni 3f18e449dc added ComputeSimilarityMatchMatrix 2007-11-17 15:41:42 +00:00
Paolo Cignoni 68effd0f7a Added IsNAN 2007-07-24 07:09:17 +00:00
Paolo Cignoni 787cfbe93f first version, ported from the internal lib to the open one. 2007-07-13 14:23:56 +00:00
Paolo Cignoni c26a1aa94b added a static (unefficient!) identity member 2007-07-13 00:01:47 +00:00
Paolo Cignoni 4dd3dbdbfb added the missing static Construct() member 2007-07-12 06:42:01 +00:00
Massimiliano Corsini a522bf6595 add DCM to Euler Angles method (to implement) 2007-07-03 16:07:09 +00:00
Massimiliano Corsini c99138926d add DCM to Euler Angles conversion 2007-07-03 16:06:48 +00:00
Paolo Cignoni 7b85798562 added bestmachting normal 2007-05-29 14:01:24 +00:00
Paolo Cignoni 63dccc011a Moved here from shadevis 2007-05-22 21:21:27 +00:00