-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharray-slice-2.js
76 lines (56 loc) · 2.32 KB
/
array-slice-2.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
69
70
71
72
73
74
75
76
// purpose: from given virus trajectories set created a subset, by given trajectory and time range
// input: virus trajectories in form: [ [traj1-coords],[traj2-coords],....[trajN-coords] ]
export function create( vz, opts )
{
var obj = vz.createObj( opts );
obj.setParam( "input",[] );
obj.setParam( "output",[] );
obj.setParamOption("input","internal",true);
obj.setParamOption("output","internal",true);
obj.addSlider( "start",1,0,1000,1,update );
obj.addSlider( "len",1,0,1000,1,update );
obj.addSlider( "start2",1,0,1000,1,update );
obj.addSlider( "len2",1,0,1000,1,update );
obj.setParamOption( "start","title","start_trajectory" );
obj.setParamOption( "start2","title","start_time" );
obj.setParamOption( "len2","title","time_range" );
obj.trackParam("input",function() {
var l = obj.params.input.length;
obj.addSlider( "start", obj.params.start,0,l,1 );
obj.addSlider( "len",obj.params.len,0,l,1 );
var l2 = (obj.params.input[0]?.length || 0)/6;
obj.addSlider( "start2", obj.params.start2,0,l2,1 );
obj.addSlider( "len2",obj.params.len2,0,l2,1 );
update();
} );
function update() {
//if (!Array.isArray(input))
if (!obj.params.input) return;
if (!obj.params.input.length) return;
if (!obj.params.input.slice) return;
// input это массив массивов шестерок чисел
var output = [];
var i2 = Math.min( obj.params.start + obj.params.len, obj.params.input.length );
for (var i=obj.params.start; i<i2; i++) {
var vir = obj.params.input[i];
var j2 = Math.min( vir.length/6, obj.params.start2 + obj.params.len2 );
for (var j=obj.params.start2; j<j2; j++) {
var q = j*6;
output.push( vir[q],vir[q+1],vir[q+2],vir[q+3],vir[q+4],vir[q+5] );
}
}
//var output = obj.params.input.slice( obj.params.start, obj.params.start + obj.params.len );
// что-то слишком много кода для этой одной главной строчки
obj.setParam( "output",output );
};
obj.addCmd("inspect in debugger",() => {
console.log( obj.params.output );
debugger;
});
return obj;
}
export function setup( vz ) {
vz.addItemType( "array-slice-2","A: array slice 2", function( opts ) {
return create( vz, opts );
} );
}