77e74ccf4e
- aggiunta IsFlat a tutte le Curve - aggiunta ApproxWithArcs a tutte le Curve - aggiunto oggetto PolyArc (raccolta ordinata di linee e archi con bulge) - aggiunto oggetto PointsPCA per stima componenti principali di un insieme di punti - FromSpheriical e FromPolar di Vector3d sono diventati funzioni e aggiunto FromUprightOrtho - aggiunte Invert e a Vector3d.
42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2014-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : PointsPCA.h Data : 12.08.14 Versione : 1.5h3
|
|
// Contenuto : Dichiarazione della classe PointsPCA.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 12.08.14 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "/EgtDev/Include/EGkFrame3d.h"
|
|
#include "/EgtDev/Include/EGkPlane3d.h"
|
|
#include "/EgtDev/Extern/Eigen/Dense"
|
|
|
|
//----------------------------------------------------------------------------
|
|
class PointsPCA
|
|
{
|
|
public :
|
|
PointsPCA( void) ;
|
|
void AddPoint( const Point3d& ptP) ;
|
|
int GetRank( void) ;
|
|
bool GetCenter( Point3d& ptCen) ;
|
|
bool GetPrincipalComponent( int nId, Vector3d& vtPC) ;
|
|
|
|
private :
|
|
bool Finalize( void) ;
|
|
|
|
private :
|
|
static const int MAX_RANK = 3 ;
|
|
|
|
private :
|
|
int m_nPntNbr ; // numero punti
|
|
Point3d m_ptCen ; // baricentro
|
|
Eigen::Matrix3d m_CovMat ; // matrice di covarianza
|
|
int m_nRank ; // numero delle componenti principali (MAX_RANK = 3)
|
|
Vector3d m_vtPC[MAX_RANK] ; // direzioni delle componenti principali
|
|
} ; |