Skip to content

Commit

Permalink
Merge pull request #4 from nickschot/fix-velocity-calculation
Browse files Browse the repository at this point in the history
Fix velocity calculation
  • Loading branch information
nickschot authored Mar 23, 2018
2 parents 031d483 + f5928b1 commit fa92e3c
Show file tree
Hide file tree
Showing 3 changed files with 1,410 additions and 832 deletions.
30 changes: 25 additions & 5 deletions addon/utils/parse-touch-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ export function parseInitialTouchData(touch, e){
y: touch.clientY,
timeStamp: e.timeStamp
},
cache: {
velocity: {
distanceX: 0,
distanceY: 0,
timeStamp: e.timeStamp
}
},
timeStamp: e.timeStamp,
originalEvent: e
},
Expand Down Expand Up @@ -49,18 +56,31 @@ export default function parseTouchData(previousTouchData, touch, e) {
data.current.distanceY = touch.clientY - data.initial.y;
data.current.angle = getAngle(data.initial.x, data.initial.y, touch.clientX, touch.clientY);

const deltaTime = e.timeStamp - data.timeStamp;
if(deltaTime > 25){
data.current.velocityX = data.current.deltaX / deltaTime || 0;
data.current.velocityY = data.current.deltaY / deltaTime || 0;
// overallVelocity can be calculated continuously
const overallDeltaTime = e.timeStamp - data.initial.timeStamp;
data.current.overallVelocityX = data.current.distanceX / overallDeltaTime || 0;
data.current.overallVelocityY = data.current.distanceY / overallDeltaTime || 0;
data.current.overallVelocity = Math.abs(data.current.overallVelocityX) > Math.abs(data.current.overallVelocityY)
? data.current.overallVelocityX
: data.current.overallVelocityY;

const deltaTime = e.timeStamp - data.cache.velocity.timeStamp;
if(deltaTime > 33.34) {
data.current.velocityX = (data.current.distanceX - data.cache.velocity.distanceX) / deltaTime || 0;
data.current.velocityY = (data.current.distanceY - data.cache.velocity.distanceY) / deltaTime || 0;
data.current.velocity = Math.abs(data.current.velocityX) > Math.abs(data.current.velocityY)
? data.current.velocityX
: data.current.velocityY;

data.timeStamp = e.timeStamp;
data.cache.velocity = {
distanceX: data.current.distanceX,
distanceY: data.current.distanceY,
timeStamp: e.timeStamp
};
}

data.originalEvent = e;
data.timeStamp = e.timeStamp;

touchData.data = data;

Expand Down
Loading

0 comments on commit fa92e3c

Please sign in to comment.