aboutsummaryrefslogtreecommitdiff
path: root/forceScheme.cpp
diff options
context:
space:
mode:
authorSamuel Fadel <samuelfadel@gmail.com>2015-05-18 13:10:34 -0300
committerSamuel Fadel <samuelfadel@gmail.com>2015-05-18 13:10:34 -0300
commitaafcab1e7237d3ccbc80945eb8379a985d567a53 (patch)
tree3d41130be33ea023d11364f276ca07bcf8bd697d /forceScheme.cpp
parent0b6df071d94ae8f7c9cdd3c96506a1420129e471 (diff)
ForceScheme now (hopefully) does not produce NaNs. Removed the Glyph class and placed all scatterplot drawing code inside the Scatterplot class.
Diffstat (limited to 'forceScheme.cpp')
-rw-r--r--forceScheme.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/forceScheme.cpp b/forceScheme.cpp
index 3683c10..de856ba 100644
--- a/forceScheme.cpp
+++ b/forceScheme.cpp
@@ -11,15 +11,14 @@ arma::mat mp::forceScheme(const arma::mat &D,
double tol,
double fraction)
{
-
- arma::uword n = (arma::uword) Y.n_rows;
+ arma::uword n = Y.n_rows;
V i(n), j(n);
for (arma::uword k = 0; k < n; k++)
i[k] = j[k] = k;
- double prev_delta_sum = 1. / 0.;
+ double prevDeltaSum = 1. / 0.;
for (size_t iter = 0; iter < maxIter; iter++) {
- double delta_sum = 0;
+ double deltaSum = 0;
arma::shuffle(i);
for (V::iterator a = i.begin(); a != i.end(); a++) {
@@ -31,14 +30,14 @@ arma::mat mp::forceScheme(const arma::mat &D,
arma::rowvec direction(Y.row(*b) - Y.row(*a));
double d2 = std::max(arma::norm(direction, 2), mp::EPSILON);
double delta = (D(*a, *b) - d2) / fraction;
- delta_sum += fabs(delta);
+ deltaSum += fabs(delta);
Y.row(*b) += delta * (direction / d2);
}
}
- if (fabs(prev_delta_sum - delta_sum) < tol)
+ if (fabs(prevDeltaSum - deltaSum) < tol)
break;
- prev_delta_sum = delta_sum;
+ prevDeltaSum = deltaSum;
}
return Y;