Commit Graph

409 Commits

Author SHA1 Message Date
mtarini 7f83000b93 fixed a nasty bug in Matrix44<T>::ToEulerAngles (but it still suffers from Gimbal Lock) 2009-08-21 12:42:16 +00:00
Paolo Cignoni 9608ec798b compilation fixes with Eigen 2009-07-21 07:29:13 +00:00
Nico Pietroni 7aefe275b3 added #include<stdio> because of fprintf call on Histogram<ScalarType>::FileWrite function 2009-07-17 17:42:51 +00:00
Paolo Cignoni e6fbdfb9f6 Added static constuctor that imports from different Quaternion types (overrides same static contstructor of father's Point4 class) 2009-07-10 13:18:24 +00:00
Paolo Cignoni 70d3ccfa23 Removed harmless warnings 2009-06-11 23:55:06 +00:00
Paolo Cignoni b441009e15 added an invalid method that says if a shot is "reasonable" or not. A shot is valid if its Intrinsics are valid. 2009-05-21 23:04:09 +00:00
Paolo Cignoni 12c61c4622 Added ByLine() method, which initializes the quadric as the squared distance from a given line.
This works with a vcg::Ray() too, but the caller should be aware that the distance "before" the ray origin is computed as if the ray were a line.
2009-03-31 09:17:39 +00:00
Paolo Cignoni 19ae359bf1 Added unified interface for open and close 0,1 intervals and
extern boxmuller gaussian generator.
2009-02-04 12:06:58 +00:00
Paolo Cignoni 3d5ccb47f9 compilation fixes with eigen (norm2=>squaredNorm, a*b => a.dot(b)) 2009-01-23 16:58:47 +00:00
Paolo Cignoni 9a47677ed2 compilation fixes with eigen 2009-01-22 23:10:24 +00:00
granzuglia de75285ed0 added const qualifier to transpose function 2009-01-22 10:18:40 +00:00
Paolo Cignoni 91968941c8 removed abs and sqrt ambiguities 2009-01-18 23:56:28 +00:00
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
Nico Pietroni 85175e7dc4 added RotationMatrix method to calculate rotation matrix along an axis 2007-04-19 14:30:26 +00:00
Nico Pietroni ac5e8a2143 Added function RotationMatrix 2007-04-07 23:06:47 +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
Massimiliano Corsini 488287610f final fix to euler angles transformation 2007-03-08 14:39:27 +00:00
mtarini c2dcc2798f added a missing "Quaternion<S>::" in "FromEulerAngles" 2007-02-06 12:24:07 +00:00
Massimiliano Corsini 9659b702f8 fix euler angles computation 2007-02-06 09:57:40 +00:00
Massimiliano Corsini 8b60f2cc35 fix names 2007-02-06 08:54:07 +00:00
Massimiliano Corsini 961c1dfff0 add new ctor (build similarity from euler angles) 2007-02-05 14:17:48 +00:00
Massimiliano Corsini 0bb019d92e add extrinsic parameters accessors 2007-02-05 14:17:21 +00:00
Massimiliano Corsini 4b5533971a add from euler angles to rotation matrix conversion 2007-02-05 14:16:33 +00:00
Massimiliano Corsini fbf770bd7b add euler angle to quaternion conversion 2007-02-05 13:55:21 +00:00
Nico Pietroni 2d7c1bbdd2 -Used scalar type passed as template argument istead of double to prevent warnings.. in Rotate function 2007-01-29 00:20:25 +00:00
Nico Pietroni 09acf65187 -added some explicit CASTs in order to avoid warning if one use float instead of double as ScalarType 2007-01-29 00:18:20 +00:00
matteodelle cd277247cc *** empty log message *** 2007-01-10 17:25:18 +00:00
Nico Pietroni f8eeaae81f added explicit cast in function inline float Sqrt(const int v) in order to avoid warnings 2007-01-08 09:23:49 +00:00
Paolo Cignoni 01695ba1d5 Corrected a syntax error detected only by gcc.
Corrected the order of initialization in the constructor to match the declaration order
2006-12-21 00:13:27 +00:00
matteodelle 17ebec98c6 minor eroor correction on variable names 2006-12-18 16:02:57 +00:00
Marco Callieri a344d59446 camera+shot revamp: changed field names to something with more sense, cleaning of various functions, correction of minor bugs/incongruences, removal of the infamous reference in shot. 2006-12-18 09:46:39 +00:00
Paolo Cignoni 5af2209678 Re added typedef Histogramf and Histogramd 2006-11-28 21:29:21 +00:00
Massimiliano Corsini d179389424 add documentation
fix typo
2006-11-28 09:47:42 +00:00
Federico Ponchio 613dcafe3b just added an #include <matrix33> 2006-11-13 12:53:40 +00:00
Paolo Cignoni 642158fc32 many gcc compiling issues 2006-11-07 17:22:53 +00:00
Paolo Cignoni e2733d55df Necessary changes for compilation with gcc 3.4.6. Especially the hash function is a problem 2006-11-07 15:13:57 +00:00
Paolo Cignoni 06047a697d gcc compiling issues 2006-11-07 11:47:14 +00:00
Paolo Cignoni ebc0ac52c0 Added two sqrt templates for resolving ambiguity of sqrt(int) 2006-10-13 13:14:50 +00:00
Paolo Cignoni 605c4d2f04 Added a minimum method that uses SVD. Unfortunately it is much much slower. 2006-10-09 20:23:00 +00:00
Paolo Cignoni a927c50c8d Added missing typedef for gcc compiing 2006-09-29 08:36:10 +00:00
Paolo Cignoni 4e76390661 Removed some warnings 2006-09-28 22:49:49 +00:00
ganovelli d1eea25504 added constructor from matrix44 excluding a row and colum 2006-09-25 23:05:29 +00:00
Paolo Cignoni ac4efc84ef initial commit 2006-09-21 18:10:05 +00:00
Paolo Cignoni d8b56cedb1 Added SetIdentity method 2006-09-21 18:09:34 +00:00
Paolo Cignoni 8d63662955 Added const to declarations of the overloaded (operators *).
Otherwise the  * operator would always attempt to convert any type of data passed as an argument to Point3<TYPE>
2006-09-11 16:11:39 +00:00
Paolo Cignoni 6cc1fb0753 Copy constructor : faster memcpy instead of slow 'for' cycle
empty constructor
2006-08-23 15:24:45 +00:00
Paolo Cignoni 5905c197b6 added some typename directives 2006-07-28 12:39:05 +00:00
Paolo Cignoni 68b176d276 Changed the template argument in JacobiRotate and added method for sorting eigenvalues and eigenvectors (SortEigenvaluesAndEigenvectors) 2006-07-24 07:26:47 +00:00
ganovelli bd2e84521b toMatrix with matrix33 added 2006-06-22 08:00:26 +00:00
ganovelli 9587cc0350 bug in operator + with MatrixxDig 2006-06-22 08:00:05 +00:00
Paolo Cignoni 3d8bbcc87f added missing internal prototype to Sort function 2006-05-25 09:35:55 +00:00