mergeSegment = function(segment1, segment2) { var merged = []; if(segment1[0] <= segment2[0]) { if(segment1[1] < segment2[0]) { merged = [segment1, segment2]; } else { if(segment1[1] >= segment2[1]) merged = [segment1]; else merged = [[segment1[0], segment2[1]]]; } } else { if(segment2[1] < segment1[0]) { merged = [segment2, segment1]; } else { if(segment2[1] >= segment1[1]) merged = [segment2]; else merged = [[segment2[0], segment1[1]]]; } } return merged; } compareSegment = function(segment1, segment2) { // inclusi o coincidenti if((segment1[0] >= segment2[0]) && (segment1[1] <= segment2[1])) return 0; if((segment1[0] <= segment2[0]) && (segment1[1] >= segment2[1])) return 0; // esterni if((segment1[1] < segment2[0]) || ((segment1[0] > segment2[1]))) return 1; // intersecanti return -1; } compareSegments = function(s1, s2) { return (s1[0] - s2[0]); } /** * mergeAll: merge indices * parameters: indices = Array of Array of indices (index = [start, end]) * Example: indices = [[[1,2], [4,5]], [[0,5], [7,11]]]; */ mergeAll = function(indices) { var m = []; // first of all: creates a 1-dimension array with all data for(var i=0; i