forked from webtiming/timingsrc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
derivativeconverter.js
68 lines (52 loc) · 2.02 KB
/
derivativeconverter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
Copyright 2015 Norut Northern Research Institute
Author : Ingar Mæhlum Arntzen
This file is part of the Timingsrc module.
Timingsrc is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Timingsrc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with Timingsrc. If not, see <http://www.gnu.org/licenses/>.
*/
/*
DERIVATIVE CONVERTER
this Converter implements the derivative of it source timing object.
The velocity of timingsrc becomes the position of the Converter.
This means that the derivative Converter allows sequencing on velocity of a timing object,
by attatching a sequencer on the derivative Converter.
*/
define(['./timingobject'], function (timingobject) {
'use strict';
var TimingObjectBase = timingobject.TimingObjectBase;
var inherit = TimingObjectBase.inherit;
var DerivativeConverter = function (timingsrc) {
if (!(this instanceof DerivativeConverter)) {
throw new Error("Contructor function called without new operation");
}
TimingObjectBase.call(this, timingsrc);
};
inherit(DerivativeConverter, TimingObjectBase);
// overrides
DerivativeConverter.prototype.onRangeChange = function (range) {
return [-Infinity, Infinity];
};
// overrides
DerivativeConverter.prototype.onVectorChange = function (vector) {
var newVector = {
position : vector.velocity,
velocity : vector.acceleration,
acceleration : 0,
timestamp : vector.timestamp
};
return newVector;
};
DerivativeConverter.prototype.update = function (vector) {
throw new Error("updates illegal on derivative of timingobject");
};
return DerivativeConverter;
});