EgtGeomKernel 1.9l4 :
- fabs sostituito da abs - in Zmap razionalizzazione operazioni taglio spilloni - in SurfTriMesh UpdateFaceting senza più chiamate recursive.
This commit is contained in:
+9
-9
@@ -89,33 +89,33 @@ PointsPCA::Finalize( void)
|
||||
int j = ( i + 1) % 3 ;
|
||||
int k = ( i + 2) % 3 ;
|
||||
// se l'autovalore corrente è il più grande in modulo
|
||||
if ( fabs( es.eigenvalues()(i)) >= fabs( es.eigenvalues()(j)) &&
|
||||
fabs( es.eigenvalues()(i)) >= fabs( es.eigenvalues()(k)) &&
|
||||
fabs( es.eigenvalues()(i)) > SQ_EPS_SMALL) {
|
||||
if ( abs( es.eigenvalues()(i)) >= abs( es.eigenvalues()(j)) &&
|
||||
abs( es.eigenvalues()(i)) >= abs( es.eigenvalues()(k)) &&
|
||||
abs( es.eigenvalues()(i)) > SQ_EPS_SMALL) {
|
||||
// il suo autovettore è il primo
|
||||
++ m_nRank ;
|
||||
m_vtPC[0].Set( es.eigenvectors()(0,i), es.eigenvectors()(1,i), es.eigenvectors()(2,i)) ;
|
||||
// se il successivo autovalore è maggiore del rimanente in modulo
|
||||
if ( fabs( es.eigenvalues()(j)) >= fabs(es.eigenvalues()(k)) &&
|
||||
fabs( es.eigenvalues()(j)) > SQ_EPS_SMALL) {
|
||||
if ( abs( es.eigenvalues()(j)) >= abs(es.eigenvalues()(k)) &&
|
||||
abs( es.eigenvalues()(j)) > SQ_EPS_SMALL) {
|
||||
// il suo autovettore è il secondo
|
||||
++ m_nRank ;
|
||||
m_vtPC[1].Set( es.eigenvectors()(0,j), es.eigenvectors()(1,j), es.eigenvectors()(2,j)) ;
|
||||
// se il rimanente autovalore è non nullo
|
||||
if ( fabs( es.eigenvalues()(k)) > SQ_EPS_SMALL) {
|
||||
if ( abs( es.eigenvalues()(k)) > SQ_EPS_SMALL) {
|
||||
// il suo autovettore è il terzo
|
||||
++ m_nRank ;
|
||||
m_vtPC[2].Set( es.eigenvectors()(0,k), es.eigenvectors()(1,k), es.eigenvectors()(2,k)) ;
|
||||
}
|
||||
}
|
||||
// altrimenti, se il rimanente autovalore è maggiore del successivo in modulo
|
||||
else if ( fabs( es.eigenvalues()(k)) >= fabs( es.eigenvalues()(j)) &&
|
||||
fabs( es.eigenvalues()(k)) > SQ_EPS_SMALL) {
|
||||
else if ( abs( es.eigenvalues()(k)) >= abs( es.eigenvalues()(j)) &&
|
||||
abs( es.eigenvalues()(k)) > SQ_EPS_SMALL) {
|
||||
// il suo autovettore è il secondo
|
||||
++ m_nRank ;
|
||||
m_vtPC[1].Set( es.eigenvectors()(0,k), es.eigenvectors()(1,k), es.eigenvectors()(2,k)) ;
|
||||
// se il rimanente autovalore è non nullo
|
||||
if ( fabs( es.eigenvalues()(j)) > SQ_EPS_SMALL) {
|
||||
if ( abs( es.eigenvalues()(j)) > SQ_EPS_SMALL) {
|
||||
// il suo autovettore è il terzo
|
||||
++ m_nRank ;
|
||||
m_vtPC[2].Set( es.eigenvectors()(0,j), es.eigenvectors()(1,j), es.eigenvectors()(2,j)) ;
|
||||
|
||||
Reference in New Issue
Block a user