Browse Source

Improved handling of min rotation distance.

obersalzberg
Uwe Oestermeier 1 year ago
parent
commit
bb0dcf2d9d
3 changed files with 36 additions and 24 deletions
  1. +12
    -8
      dist/iwmlib.js
  2. +12
    -8
      dist/iwmlib.pixi.js
  3. +12
    -8
      lib/scatter.js

+ 12
- 8
dist/iwmlib.js View File

@ -3374,8 +3374,8 @@
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')
@ -3477,10 +3477,12 @@
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;
}
@ -4198,8 +4200,9 @@
onClose = null,
scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05,
useLowPassFilter = true,
maxRotation = Angle.degree2radian(15)
useLowPassFilter = false,
maxRotation = Angle.degree2radian(15),
minRotationDistance = 200
} = {}
) {
super({
@ -4225,7 +4228,8 @@
scaleCloseBuffer,
onClose,
useLowPassFilter,
maxRotation
maxRotation,
minRotationDistance
});
if (container == null || width == null || height == null) {
throw new Error('Invalid value: null')

+ 12
- 8
dist/iwmlib.pixi.js View File

@ -6786,8 +6786,8 @@
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')
@ -6889,10 +6889,12 @@
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;
}
@ -7434,8 +7436,9 @@
onClose = null,
scaleCloseThreshold = 0.1,
scaleCloseBuffer = 0.05,
useLowPassFilter = true,
maxRotation = Angle.degree2radian(15)
useLowPassFilter = false,
maxRotation = Angle.degree2radian(15),
minRotationDistance = 200
} = {}
) {
super({
@ -7461,7 +7464,8 @@
scaleCloseBuffer,
onClose,
useLowPassFilter,
maxRotation
maxRotation,
minRotationDistance
});
if (container == null || width == null || height == null) {
throw new Error('Invalid value: null')

+ 12
- 8
lib/scatter.js 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')

Loading…
Cancel
Save