summaryrefslogtreecommitdiffstats
path: root/src/fdgl.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-12-18 19:59:01 +0000
committerDavid Robillard <d@drobilla.net>2013-12-18 19:59:01 +0000
commit1dffad8f3b0d7919357bc3a10ccfd3f66b3c38ba (patch)
tree6a4b38efa2052e08365c0dc3ed8a5e9ba7354d2f /src/fdgl.hpp
parent63c2c34dd2b4ae5be99284b94c0b99d39600bd6f (diff)
downloadganv-1dffad8f3b0d7919357bc3a10ccfd3f66b3c38ba.tar.gz
ganv-1dffad8f3b0d7919357bc3a10ccfd3f66b3c38ba.tar.bz2
ganv-1dffad8f3b0d7919357bc3a10ccfd3f66b3c38ba.zip
Shorter code.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@5182 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/fdgl.hpp')
-rw-r--r--src/fdgl.hpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/fdgl.hpp b/src/fdgl.hpp
index 844912e..c2dac10 100644
--- a/src/fdgl.hpp
+++ b/src/fdgl.hpp
@@ -20,6 +20,11 @@ static const double SPRING_K = 12.0;
static const double CHARGE_KE = 80000.0;
static const double AREA_WEIGHT = 0.4;
+struct Region {
+ Vector pos;
+ Vector area;
+};
+
inline Vector
vec_add(const Vector& a, const Vector& b)
{
@@ -66,13 +71,12 @@ spring_force(const Vector& a, const Vector& b, const double length)
/** Modified Coulomb's law */
inline Vector
-repel_force(const Vector& a, const Vector& a_area,
- const Vector& b, const Vector& b_area)
+repel_force(const Region& a, const Region& b)
{
- const Vector vec = vec_mult(vec_sub(a, b), 4.0);
+ const Vector vec = vec_mult(vec_sub(a.pos, b.pos), 4.0);
const double rmag = vec_rmag(vec);
- const Vector a_weight = vec_mult(a_area, AREA_WEIGHT);
- const Vector b_weight = vec_mult(b_area, AREA_WEIGHT);
+ const Vector a_weight = vec_mult(a.area, AREA_WEIGHT);
+ const Vector b_weight = vec_mult(b.area, AREA_WEIGHT);
const Vector force = vec_mult(vec, rmag * rmag * rmag * CHARGE_KE * 0.5);
return vec_mult(force, vec_mult(a_weight, b_weight));
}