SHOW:
|
|
- or go back to the newest paste.
1 | - | var segments = [5, 4]; |
1 | + | var boundingVector = [5, 3, 3]; |
2 | - | var radius = 1; |
2 | + | |
3 | // A generic function to copy the tuple | |
4 | function copy(array) { | |
5 | var newArray = []; | |
6 | for (var i = 0; i < array.length; i++) { | |
7 | newArray[i] = array[i]; | |
8 | } | |
9 | return newArray; | |
10 | } | |
11 | ||
12 | // A function that computes the successor of a given tuple | |
13 | function getNextTuple(lastGeneratedTuple) { | |
14 | var newTuple = copy(lastGeneratedTuple) | |
15 | for (i = boundingVector.length - 1; i >= 0; i--) { | |
16 | - | for (i = segments.length - 1; i >= 0; i--) { |
16 | + | |
17 | // continue incrementing the next coordinate, else we are done | |
18 | newTuple[i]++; | |
19 | if (newTuple[i] > boundingVector[i] - 1) { | |
20 | - | if (newTuple[i] > segments[i] - 1) { |
20 | + | |
21 | } | |
22 | else { | |
23 | break; | |
24 | } | |
25 | } | |
26 | return newTuple; | |
27 | } | |
28 | ||
29 | // A function that enumerates all possible tuples | |
30 | function enumerateAllTuples() { | |
31 | ||
32 | // The number of tuples is the product of all segments | |
33 | var numberOfTuples = 1; | |
34 | for (i = 0; i < boundingVector.length; i++) { | |
35 | - | for (i = 0; i < segments.length; i++) { |
35 | + | numberOfTuples *= boundingVector[i]; |
36 | - | numberOfTuples *= segments[i]; |
36 | + | |
37 | var allTuples = [], | |
38 | zeroTuple = []; | |
39 | for (var i = 0; i < boundingVector.length; i++) { | |
40 | - | for (var i = 0; i < segments.length; i++) { |
40 | + | |
41 | } | |
42 | allTuples[0] = zeroTuple; | |
43 | for (i = 1; i < numberOfTuples; i++) { | |
44 | allTuples[i] = getNextTuple(allTuples[i - 1]); | |
45 | } | |
46 | return allTuples; | |
47 | } |