Skip to content

Commit dbd0745

Browse files
committed
Another fix for d3.geo.circle Polygon exteriors.
1 parent 0bb3d29 commit dbd0745

4 files changed

Lines changed: 6 additions & 4 deletions

File tree

d3.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5639,6 +5639,7 @@
56395639
for (var i = 1; i < n; i++) {
56405640
var point1 = rotate(coordinates[i]), v = visible(point1);
56415641
if (v !== inside) {
5642+
keepWinding = false;
56425643
if (inside = v) {
56435644
point0 = intersect(point1, point0);
56445645
context.moveTo(point0[0], point0[1]);
@@ -5693,7 +5694,7 @@
56935694
}
56945695
segments = segments.concat(ringSegments);
56955696
});
5696-
if (winding > 0) {
5697+
if (segments.length ? winding > 0 : winding < 0) {
56975698
segments.push(winding = []);
56985699
x = {
56995700
lineTo: function(x, y) {

d3.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/geo/circle.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ function d3_geo_circleClip(degrees, rotate) {
170170
var point1 = rotate(coordinates[i]),
171171
v = visible(point1);
172172
if (v !== inside) {
173+
keepWinding = false;
173174
if (inside = v) {
174175
// outside going in
175176
point0 = intersect(point1, point0);
@@ -265,7 +266,7 @@ function d3_geo_circleClipPolygon(coordinates, context, clipLine, interpolate, a
265266
}
266267
segments = segments.concat(ringSegments);
267268
});
268-
if (winding > 0) {
269+
if (segments.length ? winding > 0 : winding < 0) {
269270
segments.push(winding = []);
270271
x = {lineTo: function(x, y) { winding.push([x, y]); }};
271272
d3_geo_circleInterpolateCircle(interpolate, x);

test/geo/path-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ suite.addBatch({
265265
assert.equal(buffer.filter(function(d) { return d.type === "moveTo"; }).length, 2);
266266
},
267267
"inserts exterior along clip edge if polygon exterior surrounds it": function(path) {
268-
path({type: "Polygon", coordinates: [[[100, -80], [100, 80], [-100, 80], [-100, -80], [100, -80]]]});
268+
path({type: "Polygon", coordinates: [[[100, -80], [-100, -80], [-100, 80], [100, 80], [100, -80]]]});
269269
var buffer = testContext.buffer();
270270
assert.equal(buffer.filter(function(d) { return d.type === "moveTo"; }).length, 1);
271271
}

0 commit comments

Comments
 (0)