Added check for rotation by narrow distance between touch points.

This commit is contained in:
Uwe Oestermeier 2019-07-19 15:05:46 +02:00
parent ff2c15a505
commit 68c98d1293
2 changed files with 10 additions and 3 deletions

View File

@ -131,15 +131,17 @@ export class InteractionDelta {
* @param {*} rotate * @param {*} rotate
* @param {*} about * @param {*} about
* @param {*} number - number of involved pointer * @param {*} number - number of involved pointer
* @param {*} distance - distance of farthests touch points
* @memberof InteractionDelta * @memberof InteractionDelta
*/ */
constructor(x, y, zoom, rotate, about, number) { constructor(x, y, zoom, rotate, about, number, distance) {
this.x = x this.x = x
this.y = y this.y = y
this.zoom = zoom this.zoom = zoom
this.rotate = rotate this.rotate = rotate
this.about = about this.about = about
this.number = number this.number = number
this.distance = distance
} }
toString() { toString() {
@ -235,7 +237,8 @@ export class InteractionPoints {
zoom, zoom,
alpha, alpha,
cm, cm,
csize csize,
distance2
) )
} else if ( } else if (
csize == 1 && csize == 1 &&

View File

@ -286,6 +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 = 200,
useLowPassFilter = true useLowPassFilter = true
} = {}) { } = {}) {
if (rotationDegrees != null && rotation != null) { if (rotationDegrees != null && rotation != null) {
@ -331,6 +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
if (useLowPassFilter) { if (useLowPassFilter) {
this.rotateLPF = new LowPassFilter() this.rotateLPF = new LowPassFilter()
this.zoomLPF = new LowPassFilter() this.zoomLPF = new LowPassFilter()
@ -387,7 +389,9 @@ export class AbstractScatter extends Throwable {
if (this.useLowPassFilter) { if (this.useLowPassFilter) {
rotate = this.rotateLPF.next(rotate) rotate = this.rotateLPF.next(rotate)
zoom = this.zoomLPF.next(zoom) zoom = this.zoomLPF.next(zoom)
// console.log({rotate, zoom}) if (delta.distance < this.minRotationDistance) {
rotate = 0
}
} }
this.transform(delta, zoom, rotate, delta.about) this.transform(delta, zoom, rotate, delta.about)
if (zoom != 1) this.interactionAnchor = delta.about if (zoom != 1) this.interactionAnchor = delta.about