Skip to content

Commit cde7369

Browse files
committed
fixup radial axis drag rotate logic
1 parent f714449 commit cde7369

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

src/plots/polar/polar.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -847,16 +847,20 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
847847
var bl = constants.radialDragBoxSize;
848848
var bl2 = bl / 2;
849849
var radialDrag = dragBox.makeDragger(layers, 'radialdrag', 'move', -bl2, -bl2, bl, bl);
850-
var radialDrag3 = d3.select(radialDrag);
851850
var dragOpts = {element: radialDrag, gd: gd};
851+
var tx = cx + (radius + bl2) * Math.cos(angle0);
852+
var ty = cy - (radius + bl2) * Math.sin(angle0);
852853

853-
radialDrag3.attr('transform', strTranslate(
854-
cx + (radius + bl2) * Math.cos(angle0),
855-
cy - (radius + bl2) * Math.sin(angle0)
856-
))
857-
.call(setCursor, 'crosshair');
854+
d3.select(radialDrag)
855+
.attr('transform', strTranslate(tx, ty))
856+
.call(setCursor, 'crosshair');
858857

859-
var x0, y0, moveFn2, angle1, rng1;
858+
// move function (either rotate or rerange flavor)
859+
var moveFn2;
860+
// rotate angle on done
861+
var angle1;
862+
// rerange range[1] on done
863+
var rng1;
860864

861865
function moveFn(dx, dy) {
862866
if(moveFn2) {
@@ -869,7 +873,7 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
869873
// mostly perpendicular motions rotate,
870874
// mostly parallel motions re-range
871875
if(!isNaN(comp)) {
872-
moveFn2 = comp < 0.7 ? rotateMove : rerangeMove;
876+
moveFn2 = comp < 0.5 ? rotateMove : rerangeMove;
873877
}
874878
}
875879
}
@@ -883,12 +887,10 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
883887
}
884888

885889
function rotateMove(dx, dy) {
886-
var x1 = x0 + dx;
887-
var y1 = y0 + dy;
888-
var ax = x1 - cx - bl2;
889-
var ay = cy - y1 + bl2;
890+
var x1 = tx + dx;
891+
var y1 = ty + dy;
890892

891-
angle1 = rad2deg(Math.atan2(ay, ax));
893+
angle1 = rad2deg(Math.atan2(cy - y1, x1 - cx));
892894

893895
var transform = strTranslate(cx, cy) + strRotate(-angle1);
894896
layers['radial-axis'].attr('transform', transform);
@@ -936,14 +938,11 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
936938
}
937939
}
938940

939-
dragOpts.prepFn = function(evt, startX, startY) {
941+
dragOpts.prepFn = function() {
940942
moveFn2 = null;
941943
angle1 = null;
942944
rng1 = null;
943945

944-
x0 = startX;
945-
y0 = startY;
946-
947946
dragOpts.moveFn = moveFn;
948947
dragOpts.doneFn = doneFn;
949948

0 commit comments

Comments
 (0)