@@ -38,6 +38,8 @@ var rad2deg = Lib.rad2deg;
3838var wrap360 = Lib . wrap360 ;
3939var wrap180 = Lib . wrap180 ;
4040var isFullCircle = Lib . isFullCircle ;
41+ var isAngleInsideSector = Lib . isAngleInsideSector ;
42+ var angleDelta = Lib . angleDelta ;
4143
4244function Polar ( gd , id ) {
4345 this . id = id ;
@@ -501,7 +503,9 @@ proto.updateAngularAxis = function(fullLayout, polarLayout) {
501503 // the range w.r.t sector, so that sectors that cross 360 can
502504 // show all their ticks.
503505 if ( ax . type === 'category' ) {
504- ax . _tickFilter = function ( d ) { return isAngleInSector ( t2g ( d ) , sector ) ; } ;
506+ ax . _tickFilter = function ( d ) {
507+ return isAngleInsideSector ( t2g ( d ) , sector ) ;
508+ } ;
505509 }
506510
507511 ax . _transfn = function ( d ) {
@@ -1194,16 +1198,12 @@ proto.updateAngularDrag = function(fullLayout, polarLayout) {
11941198
11951199proto . isPtInside = function ( d ) {
11961200 var sector = this . sector ;
1197- var thetag = this . angularAxis . c2g ( d . theta ) ;
1198-
1199- if ( ! isAngleInSector ( thetag , sector ) ) {
1200- return false ;
1201- }
1202-
12031201 var vangles = this . vangles ;
1202+ var thetag = this . angularAxis . c2g ( d . theta ) ;
12041203 var radialAxis = this . radialAxis ;
12051204 var radialRange = radialAxis . range ;
12061205 var r = radialAxis . c2r ( d . r ) ;
1206+ var rRng = radialAxis . range ;
12071207
12081208 var r0 , r1 ;
12091209 if ( radialRange [ 1 ] >= radialRange [ 0 ] ) {
@@ -1214,6 +1214,7 @@ proto.isPtInside = function(d) {
12141214 r1 = radialRange [ 0 ] ;
12151215 }
12161216
1217+ return Lib . isPtInsideSector ( r , thetag , rRng , sector ) ;
12171218 if ( vangles ) {
12181219 var polygonIn = polygonTester ( makePolygon ( r0 , sector , vangles ) ) ;
12191220 var polygonOut = polygonTester ( makePolygon ( r1 , sector , vangles ) ) ;
@@ -1291,35 +1292,12 @@ function computeSectorBBox(sector) {
12911292 return [ x0 , y0 , x1 , y1 ] ;
12921293}
12931294
1294- function isAngleInSector ( rad , sector ) {
1295- if ( isFullCircle ( sector ) ) return true ;
1296-
1297- var s0 = wrap360 ( sector [ 0 ] ) ;
1298- var s1 = wrap360 ( sector [ 1 ] ) ;
1299- if ( s0 > s1 ) s1 += 360 ;
1300-
1301- var deg = wrap360 ( rad2deg ( rad ) ) ;
1302- var nextTurnDeg = deg + 360 ;
1303-
1304- return ( deg >= s0 && deg <= s1 ) ||
1305- ( nextTurnDeg >= s0 && nextTurnDeg <= s1 ) ;
1306- }
1307-
13081295function snapToVertexAngle ( a , vangles ) {
1309- function angleDeltaAbs ( va ) {
1310- return Math . abs ( angleDelta ( a , va ) ) ;
1311- }
1312-
1313- var ind = findIndexOfMin ( vangles , angleDeltaAbs ) ;
1296+ var fn = function ( v ) { return Lib . angleDist ( a , v ) ; } ;
1297+ var ind = findIndexOfMin ( vangles , fn ) ;
13141298 return vangles [ ind ] ;
13151299}
13161300
1317- // taken from https://stackoverflow.com/a/2007279
1318- function angleDelta ( a , b ) {
1319- var d = b - a ;
1320- return Math . atan2 ( Math . sin ( d ) , Math . cos ( d ) ) ;
1321- }
1322-
13231301function findIndexOfMin ( arr , fn ) {
13241302 fn = fn || Lib . identity ;
13251303
0 commit comments