diff --git a/src/ol/kinetic.js b/src/ol/kinetic.js
index 9632abf804..e77964a00e 100644
--- a/src/ol/kinetic.js
+++ b/src/ol/kinetic.js
@@ -6,14 +6,6 @@ goog.require('ol.PreRenderFunction');
goog.require('ol.animation');
-/**
- * @typedef {{x: number,
- * y: number,
- * t: number}}
- */
-ol.KineticPoint;
-
-
/**
* @constructor
@@ -44,7 +36,7 @@ ol.Kinetic = function(decay, minVelocity, delay) {
/**
* @private
- * @type {Array.
}
+ * @type {Array.}
*/
this.points_ = [];
@@ -77,11 +69,7 @@ ol.Kinetic.prototype.begin = function() {
* @param {number} y Y.
*/
ol.Kinetic.prototype.update = function(x, y) {
- this.points_.push({
- x: x,
- y: y,
- t: goog.now()
- });
+ this.points_.push(x, y, goog.now());
};
@@ -90,18 +78,17 @@ ol.Kinetic.prototype.update = function(x, y) {
*/
ol.Kinetic.prototype.end = function() {
var delay = goog.now() - this.delay_;
- var lastIndex = this.points_.length - 1;
- var firstIndex = lastIndex - 1;
- while (firstIndex >= 0 && this.points_[firstIndex].t > delay) {
- firstIndex--;
+ var lastIndex = this.points_.length - 3;
+ var firstIndex = lastIndex - 3;
+ while (firstIndex >= 0 && this.points_[firstIndex + 2] > delay) {
+ firstIndex -= 3;
}
if (firstIndex >= 0) {
- var first = this.points_[firstIndex];
- var last = this.points_[lastIndex];
- var dx = last.x - first.x;
- var dy = last.y - first.y;
+ var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];
+ var dx = this.points_[lastIndex] - this.points_[firstIndex];
+ var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];
this.angle_ = Math.atan2(dy, dx);
- this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / (last.t - first.t);
+ this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;
return this.initialVelocity_ > this.minVelocity_;
}
return false;