智能照明系统APP-本地串口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/75/75202772ee33cfc2a51f72f3fa4...

59 lines
1.4 KiB

export function Friction (e) {
this._drag = e
this._dragLog = Math.log(e)
this._x = 0
this._v = 0
this._startTime = 0
}
Friction.prototype.set = function (e, t) {
this._x = e
this._v = t
this._startTime = (new Date()).getTime()
}
Friction.prototype.setVelocityByEnd = function (e) {
this._v = (e - this._x) * this._dragLog / (Math.pow(this._drag, 100) - 1)
}
Friction.prototype.x = function (e) {
if (e === undefined) {
e = ((new Date()).getTime() - this._startTime) / 1e3
}
var t
t = e === this._dt && this._powDragDt ? this._powDragDt : this._powDragDt = Math.pow(this._drag, e)
this._dt = e
return this._x + this._v * t / this._dragLog - this._v / this._dragLog
}
Friction.prototype.dx = function (e) {
if (e === undefined) {
e = ((new Date()).getTime() - this._startTime) / 1e3
}
var t
t = e === this._dt && this._powDragDt ? this._powDragDt : this._powDragDt = Math.pow(this._drag, e)
this._dt = e
return this._v * t
}
Friction.prototype.done = function () {
return Math.abs(this.dx()) < 3
}
Friction.prototype.reconfigure = function (e) {
var t = this.x()
var n = this.dx()
this._drag = e
this._dragLog = Math.log(e)
this.set(t, n)
}
Friction.prototype.configuration = function () {
var e = this
return [{
label: 'Friction',
read: function () {
return e._drag
},
write: function (t) {
e.reconfigure(t)
},
min: 0.001,
max: 0.1,
step: 0.001
}]
}