Added check for rotation by narrow distance between touch points.
This commit is contained in:
parent
ff2c15a505
commit
68c98d1293
@ -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 &&
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user