36namespace energybased {
41 const double b[
Dim],
double delta[
Dim]) {
46 for (
int d = 0;
d <
Dim;
d++) {
48 delta[
d] = a[
d] - b[
d];
51 dist += delta[
d] * delta[
d];
60 const double b[
Dim],
double delta[
Dim]) {
62 delta[0] = a[0] - b[0];
63 delta[1] = a[1] - b[1];
66 return sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
69template<
int Dim,
int K>
71 double dist,
double& force,
double& force_prime) {
76 for (
int i = 1; i <
K; i++) {
84template<
int Dim,
int K>
86 double& force,
double& force_prime) {
90 force = force_prime *
dist * 0.5;
93template<
int Dim,
int K>
95 double& force,
double& force_prime) {
106 force_prime = 1.0 /
dist;
109template<
int Dim,
int K>
111 double dist,
double& force,
double& force_prime) {
116 for (
int i = 1; i <
K; i++) {
124template<
int Dim,
int K>
126 double& force,
double& force_prime) {
131 force_prime = 2.0 *
dist;
134template<
int Dim,
int K>
136 double& force,
double& force_prime) {
161 for (
int d = 0;
d <
Dim;
d++) {
163 delta[
d] = a[
d] - b[
d];
166 dist += delta[
d] * delta[
d];
180 for (
int d = 0;
d <
Dim;
d++) {
Basic declarations, included by all source files.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
std::enable_if< Dim!=2, double >::type computeDeltaAndDistance(const double a[Dim], const double b[Dim], double delta[Dim])
std::enable_if< Dim!=2||(K!=1 &&K!=2), void >::type AttrForceFunctionPow(double dist, double &force, double &force_prime)
void AttrForceFunctionLog(double dist, double &force, double &force_prime)
std::enable_if< Dim!=2||(K!=1 &&K!=2), void >::type RepForceFunctionNewton(double dist, double &force, double &force_prime)
The namespace for all OGDF objects.