Improved handling of min rotation distance.

This commit is contained in:
2019-07-19 15:19:03 +02:00
parent dfe7c0a011
commit bb0dcf2d9d
3 changed files with 36 additions and 24 deletions
+12 -8
View File
@@ -286,8 +286,8 @@ export class AbstractScatter extends Throwable {
scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05,
maxRotation = Angle.degree2radian(5),
minRotationDistance = 200,
useLowPassFilter = true
minRotationDistance = 0,
useLowPassFilter = false
} = {}) {
if (rotationDegrees != null && rotation != null) {
throw new Error('Use rotationDegrees or rotation but not both')
@@ -389,10 +389,12 @@ export class AbstractScatter extends Throwable {
if (this.useLowPassFilter) {
rotate = this.rotateLPF.next(rotate)
zoom = this.zoomLPF.next(zoom)
if (delta.distance < this.minRotationDistance) {
rotate = 0
}
}
if (delta.distance < this.minRotationDistance) {
let ratio = delta.distance / this.minRotationDistance
rotate *= ratio
}
this.transform(delta, zoom, rotate, delta.about)
if (zoom != 1) this.interactionAnchor = delta.about
}
@@ -1110,8 +1112,9 @@ export class DOMScatter extends AbstractScatter {
onClose = null,
scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05,
useLowPassFilter = true,
maxRotation = Angle.degree2radian(15)
useLowPassFilter = false,
maxRotation = Angle.degree2radian(15),
minRotationDistance = 200
} = {}
) {
super({
@@ -1137,7 +1140,8 @@ export class DOMScatter extends AbstractScatter {
scaleCloseBuffer,
onClose,
useLowPassFilter,
maxRotation
maxRotation,
minRotationDistance
})
if (container == null || width == null || height == null) {
throw new Error('Invalid value: null')