Generalized the min rotation to min interaction distance.

This commit is contained in:
2019-07-19 15:21:47 +02:00
parent bb0dcf2d9d
commit dcd5acb4d1
3 changed files with 21 additions and 18 deletions
+7 -6
View File
@@ -3374,7 +3374,7 @@
scaleCloseThreshold = 0.1, scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
maxRotation = Angle.degree2radian(5), maxRotation = Angle.degree2radian(5),
minRotationDistance = 0, minInteractionDistance = 0,
useLowPassFilter = false useLowPassFilter = false
} = {}) { } = {}) {
if (rotationDegrees != null && rotation != null) { if (rotationDegrees != null && rotation != null) {
@@ -3420,7 +3420,7 @@
this.mouseZoomFactor = mouseZoomFactor; this.mouseZoomFactor = mouseZoomFactor;
this.autoBringToFront = autoBringToFront; this.autoBringToFront = autoBringToFront;
this.useLowPassFilter = useLowPassFilter; this.useLowPassFilter = useLowPassFilter;
this.minRotationDistance = minRotationDistance; this.minInteractionDistance = minInteractionDistance;
if (useLowPassFilter) { if (useLowPassFilter) {
this.rotateLPF = new LowPassFilter(); this.rotateLPF = new LowPassFilter();
this.zoomLPF = new LowPassFilter(); this.zoomLPF = new LowPassFilter();
@@ -3478,9 +3478,10 @@
rotate = this.rotateLPF.next(rotate); rotate = this.rotateLPF.next(rotate);
zoom = this.zoomLPF.next(zoom); zoom = this.zoomLPF.next(zoom);
} }
if (delta.distance < this.minRotationDistance) { if (delta.distance < this.minInteractionDistance) {
let ratio = delta.distance / this.minRotationDistance; let ratio = delta.distance / this.minInteractionDistance;
rotate *= ratio; rotate *= ratio;
zoom *= ratio;
} }
this.transform(delta, zoom, rotate, delta.about); this.transform(delta, zoom, rotate, delta.about);
@@ -4202,7 +4203,7 @@
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
useLowPassFilter = false, useLowPassFilter = false,
maxRotation = Angle.degree2radian(15), maxRotation = Angle.degree2radian(15),
minRotationDistance = 200 minInteractionDistance = 200
} = {} } = {}
) { ) {
super({ super({
@@ -4229,7 +4230,7 @@
onClose, onClose,
useLowPassFilter, useLowPassFilter,
maxRotation, maxRotation,
minRotationDistance minInteractionDistance
}); });
if (container == null || width == null || height == null) { if (container == null || width == null || height == null) {
throw new Error('Invalid value: null') throw new Error('Invalid value: null')
+7 -6
View File
@@ -6786,7 +6786,7 @@
scaleCloseThreshold = 0.1, scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
maxRotation = Angle.degree2radian(5), maxRotation = Angle.degree2radian(5),
minRotationDistance = 0, minInteractionDistance = 0,
useLowPassFilter = false useLowPassFilter = false
} = {}) { } = {}) {
if (rotationDegrees != null && rotation != null) { if (rotationDegrees != null && rotation != null) {
@@ -6832,7 +6832,7 @@
this.mouseZoomFactor = mouseZoomFactor; this.mouseZoomFactor = mouseZoomFactor;
this.autoBringToFront = autoBringToFront; this.autoBringToFront = autoBringToFront;
this.useLowPassFilter = useLowPassFilter; this.useLowPassFilter = useLowPassFilter;
this.minRotationDistance = minRotationDistance; this.minInteractionDistance = minInteractionDistance;
if (useLowPassFilter) { if (useLowPassFilter) {
this.rotateLPF = new LowPassFilter(); this.rotateLPF = new LowPassFilter();
this.zoomLPF = new LowPassFilter(); this.zoomLPF = new LowPassFilter();
@@ -6890,9 +6890,10 @@
rotate = this.rotateLPF.next(rotate); rotate = this.rotateLPF.next(rotate);
zoom = this.zoomLPF.next(zoom); zoom = this.zoomLPF.next(zoom);
} }
if (delta.distance < this.minRotationDistance) { if (delta.distance < this.minInteractionDistance) {
let ratio = delta.distance / this.minRotationDistance; let ratio = delta.distance / this.minInteractionDistance;
rotate *= ratio; rotate *= ratio;
zoom *= ratio;
} }
this.transform(delta, zoom, rotate, delta.about); this.transform(delta, zoom, rotate, delta.about);
@@ -7438,7 +7439,7 @@
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
useLowPassFilter = false, useLowPassFilter = false,
maxRotation = Angle.degree2radian(15), maxRotation = Angle.degree2radian(15),
minRotationDistance = 200 minInteractionDistance = 200
} = {} } = {}
) { ) {
super({ super({
@@ -7465,7 +7466,7 @@
onClose, onClose,
useLowPassFilter, useLowPassFilter,
maxRotation, maxRotation,
minRotationDistance minInteractionDistance
}); });
if (container == null || width == null || height == null) { if (container == null || width == null || height == null) {
throw new Error('Invalid value: null') throw new Error('Invalid value: null')
+7 -6
View File
@@ -286,7 +286,7 @@ export class AbstractScatter extends Throwable {
scaleCloseThreshold = 0.1, scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
maxRotation = Angle.degree2radian(5), maxRotation = Angle.degree2radian(5),
minRotationDistance = 0, minInteractionDistance = 0,
useLowPassFilter = false useLowPassFilter = false
} = {}) { } = {}) {
if (rotationDegrees != null && rotation != null) { if (rotationDegrees != null && rotation != null) {
@@ -332,7 +332,7 @@ export class AbstractScatter extends Throwable {
this.mouseZoomFactor = mouseZoomFactor this.mouseZoomFactor = mouseZoomFactor
this.autoBringToFront = autoBringToFront this.autoBringToFront = autoBringToFront
this.useLowPassFilter = useLowPassFilter this.useLowPassFilter = useLowPassFilter
this.minRotationDistance = minRotationDistance this.minInteractionDistance = minInteractionDistance
if (useLowPassFilter) { if (useLowPassFilter) {
this.rotateLPF = new LowPassFilter() this.rotateLPF = new LowPassFilter()
this.zoomLPF = new LowPassFilter() this.zoomLPF = new LowPassFilter()
@@ -390,9 +390,10 @@ export class AbstractScatter extends Throwable {
rotate = this.rotateLPF.next(rotate) rotate = this.rotateLPF.next(rotate)
zoom = this.zoomLPF.next(zoom) zoom = this.zoomLPF.next(zoom)
} }
if (delta.distance < this.minRotationDistance) { if (delta.distance < this.minInteractionDistance) {
let ratio = delta.distance / this.minRotationDistance let ratio = delta.distance / this.minInteractionDistance
rotate *= ratio rotate *= ratio
zoom *= ratio
} }
this.transform(delta, zoom, rotate, delta.about) this.transform(delta, zoom, rotate, delta.about)
@@ -1114,7 +1115,7 @@ export class DOMScatter extends AbstractScatter {
scaleCloseBuffer = 0.05, scaleCloseBuffer = 0.05,
useLowPassFilter = false, useLowPassFilter = false,
maxRotation = Angle.degree2radian(15), maxRotation = Angle.degree2radian(15),
minRotationDistance = 200 minInteractionDistance = 200
} = {} } = {}
) { ) {
super({ super({
@@ -1141,7 +1142,7 @@ export class DOMScatter extends AbstractScatter {
onClose, onClose,
useLowPassFilter, useLowPassFilter,
maxRotation, maxRotation,
minRotationDistance minInteractionDistance
}) })
if (container == null || width == null || height == null) { if (container == null || width == null || height == null) {
throw new Error('Invalid value: null') throw new Error('Invalid value: null')