@@ -53,15 +53,15 @@ function ptDist(pt1, pt2) {
53
53
}
54
54
55
55
function makePath ( pi , loc , edgeflag , xtol , ytol ) {
56
- var startLocStr = loc . join ( ',' ) ;
57
- var locStr = startLocStr ;
56
+ var locStr = loc . join ( ',' ) ;
58
57
var mi = pi . crossings [ locStr ] ;
59
- var marchStep = startStep ( mi , edgeflag , loc ) ;
58
+ var marchStep = getStartStep ( mi , edgeflag , loc ) ;
60
59
// start by going backward a half step and finding the crossing point
61
60
var pts = [ getInterpPx ( pi , loc , [ - marchStep [ 0 ] , - marchStep [ 1 ] ] ) ] ;
62
- var startStepStr = marchStep . join ( ',' ) ;
63
61
var m = pi . z . length ;
64
62
var n = pi . z [ 0 ] . length ;
63
+ var startLoc = loc . slice ( ) ;
64
+ var startStep = marchStep . slice ( ) ;
65
65
var cnt ;
66
66
67
67
// now follow the path
@@ -83,14 +83,16 @@ function makePath(pi, loc, edgeflag, xtol, ytol) {
83
83
pts . push ( getInterpPx ( pi , loc , marchStep ) ) ;
84
84
loc [ 0 ] += marchStep [ 0 ] ;
85
85
loc [ 1 ] += marchStep [ 1 ] ;
86
+ locStr = loc . join ( ',' ) ;
86
87
87
88
// don't include the same point multiple times
88
89
if ( equalPts ( pts [ pts . length - 1 ] , pts [ pts . length - 2 ] , xtol , ytol ) ) pts . pop ( ) ;
89
- locStr = loc . join ( ',' ) ;
90
90
91
91
var atEdge = ( marchStep [ 0 ] && ( loc [ 0 ] < 0 || loc [ 0 ] > n - 2 ) ) ||
92
92
( marchStep [ 1 ] && ( loc [ 1 ] < 0 || loc [ 1 ] > m - 2 ) ) ;
93
- var closedLoop = ( locStr === startLocStr ) && ( marchStep . join ( ',' ) === startStepStr ) ;
93
+
94
+ var closedLoop = loc [ 0 ] === startLoc [ 0 ] && loc [ 1 ] === startLoc [ 1 ] &&
95
+ marchStep [ 0 ] === startStep [ 0 ] && marchStep [ 1 ] === startStep [ 1 ] ;
94
96
95
97
// have we completed a loop, or reached an edge?
96
98
if ( ( closedLoop ) || ( edgeflag && atEdge ) ) break ;
@@ -184,7 +186,7 @@ function makePath(pi, loc, edgeflag, xtol, ytol) {
184
186
} else {
185
187
if ( ! edgeflag ) {
186
188
Lib . log ( 'Unclosed interior contour?' ,
187
- pi . level , startLocStr , pts . join ( 'L' ) ) ;
189
+ pi . level , startLoc . join ( ',' ) , pts . join ( 'L' ) ) ;
188
190
}
189
191
190
192
// edge path - does it start where an existing edge path ends, or vice versa?
@@ -234,7 +236,7 @@ function makePath(pi, loc, edgeflag, xtol, ytol) {
234
236
235
237
// special function to get the marching step of the
236
238
// first point in the path (leading to loc)
237
- function startStep ( mi , edgeflag , loc ) {
239
+ function getStartStep ( mi , edgeflag , loc ) {
238
240
var dx = 0 ;
239
241
var dy = 0 ;
240
242
if ( mi > 20 && edgeflag ) {
0 commit comments