summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-12-31 16:11:09 +0000
committerDavid Robillard <d@drobilla.net>2013-12-31 16:11:09 +0000
commit023925ef7ecf8314e51f2bb14717f88b92240438 (patch)
tree3c6ca435f3664176075bea3b01c7d9b4c6d8d577 /src
parentb3ba7ad25ce0a6b76bcff21aaf1e8311b2198b4f (diff)
downloadganv-023925ef7ecf8314e51f2bb14717f88b92240438.tar.gz
ganv-023925ef7ecf8314e51f2bb14717f88b92240438.tar.bz2
ganv-023925ef7ecf8314e51f2bb14717f88b92240438.zip
FDGL: Make repelling forces directionally proportional to area for tighter spacing.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@5241 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/Canvas.cpp2
-rw-r--r--src/fdgl.hpp6
2 files changed, 5 insertions, 3 deletions
diff --git a/src/Canvas.cpp b/src/Canvas.cpp
index b1d8900..abf809f 100644
--- a/src/Canvas.cpp
+++ b/src/Canvas.cpp
@@ -768,7 +768,7 @@ GanvCanvasImpl::layout_calculate(double dur, bool update)
static const double SPRING_K = 48.0;
// A light directional force to push sources to the top left
- static const double DIR_MAGNITUDE = -2000.0;
+ static const double DIR_MAGNITUDE = -2200.0;
Vector dir = { 0.0, 0.0 };
switch (_gcanvas->direction) {
case GANV_DIRECTION_RIGHT: dir.x = DIR_MAGNITUDE; break;
diff --git a/src/fdgl.hpp b/src/fdgl.hpp
index 704eb4f..83d9981 100644
--- a/src/fdgl.hpp
+++ b/src/fdgl.hpp
@@ -16,7 +16,7 @@
#include <float.h>
#include <math.h>
-static const double CHARGE_KE = 100000000.0;
+static const double CHARGE_KE = 200000000.0;
struct Region {
Vector pos;
@@ -109,5 +109,7 @@ repel_force(const Region& a, const Region& b)
const double mag = vec_mag(vec);
const Vector force = vec_mult(
vec, (CHARGE_KE * 0.5 / (mag * mag * mag * mag * mag)));
- return vec_mult(force, vec_mult(a.area, b.area));
+ const Vector dforce = { force.x * (a.area.x * b.area.x),
+ force.y * (a.area.y * b.area.y) };
+ return dforce;
}