bool FitGaussian(const vector<Vector3>& pts,Vector3& mean,Matrix3& R,Vector3& axes) { mean = GetMean(pts); Matrix A(pts.size(),3); for(size_t i=0;i<pts.size();i++) (pts[i]-mean).get(A(i,0),A(i,1),A(i,2)); SVDecomposition<Real> svd; if(!svd.set(A)) { return false; } svd.sortSVs(); axes.set(svd.W(0),svd.W(1),svd.W(2)); for(int i=0;i<3;i++) for(int j=0;j<3;j++) R(i,j) = svd.V(i,j); return true; }