Skip to content

Commit

Permalink
Relax intersection test. Fixes #109.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Apr 16, 2018
1 parent e51e68d commit 2ff381b
Showing 1 changed file with 13 additions and 16 deletions.
29 changes: 13 additions & 16 deletions src/pack/siblings.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,26 @@
import enclose from "./enclose";

function place(a, b, c) {
var ax = a.x,
ay = a.y,
da = b.r + c.r,
db = a.r + c.r,
dx = b.x - ax,
dy = b.y - ay,
var dx = b.x - a.x,
dy = b.y - a.y,
dc = dx * dx + dy * dy;
if (dc) {
var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc),
y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
c.x = ax + x * dx + y * dy;
c.y = ay + x * dy - y * dx;
var k = 2 * dc,
da = a.r * a.r + 2 * a.r * c.r + c.r * c.r,
db = b.r * b.r + 2 * b.r * c.r + c.r * c.r,
x = (dc + da - db) / k,
y = Math.sqrt(Math.max(0, 2 * (db * da + db * dc + da * dc) - db * db - da * da - dc * dc)) / k;
c.x = a.x + x * dx + y * dy;
c.y = a.y + x * dy - y * dx;
} else {
c.x = ax + db;
c.y = ay;
c.x = a.x + a.r + c.r;
c.y = a.y;
}
}

function intersects(a, b) {
var dx = b.x - a.x,
dy = b.y - a.y,
dr = a.r + b.r;
return dr * dr - 1e-6 > dx * dx + dy * dy;
var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;
}

function score(node) {
Expand Down

0 comments on commit 2ff381b

Please sign in to comment.