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:
Dario Sassi
2018-12-27 11:19:40 +00:00
parent a149384fbb
commit 64c954ad4b
56 changed files with 936 additions and 1408 deletions
+9 -9
View File
@@ -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)) ;