Deprecating the use of old dangerous linear algebra code. Please use Eigen!
Now attempting to include lin_algebra will block your compilation...
This commit is contained in:
parent
6750b5d80a
commit
19675a4e33
|
@ -50,7 +50,6 @@ added diagonal matrix, outer produce and namespace
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <vcg/space/point.h>
|
#include <vcg/space/point.h>
|
||||||
#include <vcg/math/lin_algebra.h>
|
|
||||||
|
|
||||||
namespace vcg{
|
namespace vcg{
|
||||||
namespace ndim{
|
namespace ndim{
|
||||||
|
@ -764,22 +763,22 @@ namespace vcg{
|
||||||
|
|
||||||
/*! @} */
|
/*! @} */
|
||||||
|
|
||||||
template <class MatrixType>
|
// template <class MatrixType>
|
||||||
void Invert(MatrixType & m){
|
// void Invert(MatrixType & m){
|
||||||
typedef typename MatrixType::ScalarType X;
|
// typedef typename MatrixType::ScalarType X;
|
||||||
X *diag;
|
// X *diag;
|
||||||
diag = new X [m.ColumnsNumber()];
|
// diag = new X [m.ColumnsNumber()];
|
||||||
|
|
||||||
MatrixType res(m.RowsNumber(),m.ColumnsNumber());
|
// MatrixType res(m.RowsNumber(),m.ColumnsNumber());
|
||||||
vcg::SingularValueDecomposition<MatrixType > (m,&diag[0],res,LeaveUnsorted,50 );
|
// vcg::SingularValueDecomposition<MatrixType > (m,&diag[0],res,LeaveUnsorted,50 );
|
||||||
m.Transpose();
|
// m.Transpose();
|
||||||
// prodotto per la diagonale
|
// // prodotto per la diagonale
|
||||||
unsigned int i,j;
|
// unsigned int i,j;
|
||||||
for (i=0; i<m.RowsNumber(); i++)
|
// for (i=0; i<m.RowsNumber(); i++)
|
||||||
for (j=0; j<m.ColumnsNumber(); j++)
|
// for (j=0; j<m.ColumnsNumber(); j++)
|
||||||
res[i][j]/= diag[j];
|
// res[i][j]/= diag[j];
|
||||||
m = res *m;
|
// m = res *m;
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
}; // end of namespace
|
}; // end of namespace
|
||||||
|
|
|
@ -93,7 +93,6 @@ created
|
||||||
#define __VCGLIB_MATRIX33_H
|
#define __VCGLIB_MATRIX33_H
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <vcg/math/lin_algebra.h>
|
|
||||||
#include <vcg/math/matrix44.h>
|
#include <vcg/math/matrix44.h>
|
||||||
#include <vcg/space/point3.h>
|
#include <vcg/space/point3.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -151,6 +150,20 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class EigenMatrix33Type>
|
||||||
|
void ToEigenMatrix(EigenMatrix33Type & m){
|
||||||
|
for(int i = 0; i < 3; i++)
|
||||||
|
for(int j = 0; j < 3; j++)
|
||||||
|
m(i,j)=(*this)[i][j];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class EigenMatrix33Type>
|
||||||
|
void FromEigenMatrix(const EigenMatrix33Type & m){
|
||||||
|
for(int i = 0; i < 3; i++)
|
||||||
|
for(int j = 0; j < 3; j++)
|
||||||
|
(*this)[i][j]=m(i,j);
|
||||||
|
}
|
||||||
|
|
||||||
/// Number of columns
|
/// Number of columns
|
||||||
inline unsigned int ColumnsNumber() const
|
inline unsigned int ColumnsNumber() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -247,6 +247,14 @@ public:
|
||||||
|
|
||||||
template <class Matrix44Type>
|
template <class Matrix44Type>
|
||||||
void FromMatrix(const Matrix44Type & m){for(int i = 0; i < 16; i++) V()[i]=m.V()[i];}
|
void FromMatrix(const Matrix44Type & m){for(int i = 0; i < 16; i++) V()[i]=m.V()[i];}
|
||||||
|
|
||||||
|
template <class EigenMatrix44Type>
|
||||||
|
void FromEigenMatrix(const EigenMatrix44Type & m){
|
||||||
|
for(int i = 0; i < 4; i++)
|
||||||
|
for(int j = 0; j < 4; j++)
|
||||||
|
ElementAt(i,j)=m(i,j);
|
||||||
|
}
|
||||||
|
|
||||||
void FromEulerAngles(T alpha, T beta, T gamma);
|
void FromEulerAngles(T alpha, T beta, T gamma);
|
||||||
void SetZero();
|
void SetZero();
|
||||||
void SetIdentity();
|
void SetIdentity();
|
||||||
|
|
|
@ -52,7 +52,9 @@ Added initial disclaimer
|
||||||
#include <vcg/math/base.h>
|
#include <vcg/math/base.h>
|
||||||
#include <vcg/math/matrix44.h>
|
#include <vcg/math/matrix44.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#ifndef _YES_I_WANT_TO_USE_DANGEROUS_STUFF
|
||||||
|
#error "Please do not never user this file. Use EIGEN!!!!"
|
||||||
|
#endif
|
||||||
namespace vcg
|
namespace vcg
|
||||||
{
|
{
|
||||||
/** \addtogroup math */
|
/** \addtogroup math */
|
||||||
|
|
|
@ -172,7 +172,13 @@ public:
|
||||||
_v[1] = P3ScalarType(b[1]);
|
_v[1] = P3ScalarType(b[1]);
|
||||||
_v[2] = P3ScalarType(b[2]);
|
_v[2] = P3ScalarType(b[2]);
|
||||||
}
|
}
|
||||||
|
template <class EigenVector>
|
||||||
|
inline void FromEigenVector( const EigenVector & b )
|
||||||
|
{
|
||||||
|
_v[0] = P3ScalarType(b[0]);
|
||||||
|
_v[1] = P3ScalarType(b[1]);
|
||||||
|
_v[2] = P3ScalarType(b[2]);
|
||||||
|
}
|
||||||
template <class Q>
|
template <class Q>
|
||||||
static inline Point3 Construct( const Point3<Q> & b )
|
static inline Point3 Construct( const Point3<Q> & b )
|
||||||
{
|
{
|
||||||
|
|
|
@ -113,7 +113,15 @@ public:
|
||||||
_v[2] = T(b[2]);
|
_v[2] = T(b[2]);
|
||||||
_v[3] = T(b[3]);
|
_v[3] = T(b[3]);
|
||||||
}
|
}
|
||||||
/// constuctor that imports from different Point4 types
|
template <class EigenVector>
|
||||||
|
inline void FromEigenVector( const EigenVector & b )
|
||||||
|
{
|
||||||
|
_v[0] = T(b[0]);
|
||||||
|
_v[1] = T(b[1]);
|
||||||
|
_v[2] = T(b[2]);
|
||||||
|
_v[3] = T(b[3]);
|
||||||
|
}
|
||||||
|
/// constructor that imports from different Point4 types
|
||||||
template <class Q>
|
template <class Q>
|
||||||
static inline Point4 Construct( const Point4<Q> & b )
|
static inline Point4 Construct( const Point4<Q> & b )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue