Skip to content

Commit 6b3c198

Browse files
committed
Simplify the minimum sample distance check.
Rather than compute the distance from the start to the new middle, use the already computed distance from the start to the end. Also, we no longer need the additional check that the middle is close to either the start or the end because this is covered by the minimum sample distance check.
1 parent 1177d1d commit 6b3c198

3 files changed

Lines changed: 5 additions & 5 deletions

File tree

d3.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3367,8 +3367,8 @@ d3 = function() {
33673367
function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, buffer) {
33683368
var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
33693369
if (d2 > 4 * δ2 && depth--) {
3370-
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2, tooFar = false;
3371-
if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || (tooFar = dx2 * dx2 + dy2 * dy2 > 256 * δ2)) {
3370+
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2, tooFar;
3371+
if (dz * dz / d2 > δ2 || (tooFar = d2 > 512 * δ2)) {
33723372
var s0 = resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, buffer);
33733373
buffer.push(p);
33743374
var s1 = resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, buffer);

0 commit comments

Comments
 (0)