1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.odm.ocm;
18
19
20
21
22
23 public enum Ordering {
24
25
26 LTM {
27
28
29 @Override
30 int nbElements(final int dimension) {
31 return (dimension * (dimension + 1)) / 2;
32 }
33
34
35 @Override
36 void update(final CovarianceIndexer indexer) {
37 final int i = indexer.getRow();
38 final int j = indexer.getColumn();
39 if (j < i) {
40
41 indexer.setColumn(j + 1);
42 } else {
43
44 indexer.setRow(i + 1);
45 indexer.setColumn(0);
46 }
47 }
48
49 },
50
51
52 UTM {
53
54
55 @Override
56 int nbElements(final int dimension) {
57 return (dimension * (dimension + 1)) / 2;
58 }
59
60
61 @Override
62 void update(final CovarianceIndexer indexer) {
63 final int i = indexer.getRow();
64 final int j = indexer.getColumn();
65 if (j + 1 < indexer.getDimension()) {
66
67 indexer.setColumn(j + 1);
68 } else {
69
70 indexer.setRow(i + 1);
71 indexer.setColumn(i + 1);
72 }
73 }
74
75 },
76
77
78 FULL {
79
80
81 @Override
82 int nbElements(final int dimension) {
83 return dimension * dimension;
84 }
85
86
87 @Override
88 void update(final CovarianceIndexer indexer) {
89 final int i = indexer.getRow();
90 final int j = indexer.getColumn();
91 if (j + 1 < indexer.getDimension()) {
92
93 indexer.setColumn(j + 1);
94 } else {
95
96 indexer.setRow(i + 1);
97 indexer.setColumn(0);
98 }
99 }
100
101 },
102
103
104 LTMWCC {
105
106
107 @Override
108 int nbElements(final int dimension) {
109 return FULL.nbElements(dimension);
110 }
111
112
113 @Override
114 void update(final CovarianceIndexer indexer) {
115 FULL.update(indexer);
116 indexer.setCrossCorrelation(indexer.getColumn() > indexer.getRow());
117 }
118
119 },
120
121
122 UTMWCC {
123
124
125 @Override
126 int nbElements(final int dimension) {
127 return FULL.nbElements(dimension);
128 }
129
130
131 @Override
132 void update(final CovarianceIndexer indexer) {
133 FULL.update(indexer);
134 indexer.setCrossCorrelation(indexer.getRow() > indexer.getColumn());
135 }
136
137 };
138
139
140
141
142
143 abstract int nbElements(int dimension);
144
145
146
147
148 abstract void update(CovarianceIndexer indexer);
149
150 }