1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.frames;
19
20 import org.hipparchus.CalculusFieldElement;
21 import org.orekit.time.AbsoluteDate;
22 import org.orekit.time.FieldAbsoluteDate;
23
24
25
26
27
28 public class TransformProviderUtils {
29
30
31
32
33
34
35 public static final TransformProvider IDENTITY_PROVIDER = new TransformProvider() {
36
37
38 private static final long serialVersionUID = 20180330L;
39
40
41
42
43
44
45 @Override
46 public Transform getTransform(final AbsoluteDate date) {
47 return Transform.IDENTITY;
48 }
49
50
51
52
53
54
55 @Override
56 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
57 return FieldTransform.getIdentity(date.getField());
58 }
59
60 };
61
62
63
64
65
66
67 private TransformProviderUtils() {
68 }
69
70
71
72
73
74
75 public static TransformProvider getReversedProvider(final TransformProvider provider) {
76 return new TransformProvider() {
77
78
79 private static final long serialVersionUID = 20180330L;
80
81
82 @Override
83 public Transform getTransform(final AbsoluteDate date) {
84 return provider.getTransform(date).getInverse();
85 }
86
87 @Override
88 public KinematicTransform getKinematicTransform(final AbsoluteDate date) {
89 return provider.getKinematicTransform(date).getInverse();
90 }
91
92 @Override
93 public StaticTransform getStaticTransform(final AbsoluteDate date) {
94 return provider.getStaticTransform(date).getInverse();
95 }
96
97
98 @Override
99 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
100 return provider.getTransform(date).getInverse();
101 }
102
103
104 @Override
105 public <T extends CalculusFieldElement<T>> FieldKinematicTransform<T> getKinematicTransform(final FieldAbsoluteDate<T> date) {
106 return provider.getKinematicTransform(date).getInverse();
107 }
108
109
110 @Override
111 public <T extends CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransform(final FieldAbsoluteDate<T> date) {
112 return provider.getStaticTransform(date).getInverse();
113 }
114
115 };
116 }
117
118
119
120
121
122
123
124 public static TransformProvider getCombinedProvider(final TransformProvider first,
125 final TransformProvider second) {
126 return new TransformProvider() {
127
128
129 private static final long serialVersionUID = 20180330L;
130
131
132 @Override
133 public Transform getTransform(final AbsoluteDate date) {
134 return new Transform(date, first.getTransform(date), second.getTransform(date));
135 }
136
137
138 @Override
139 public StaticTransform getStaticTransform(final AbsoluteDate date) {
140 return StaticTransform.compose(
141 date,
142 first.getStaticTransform(date),
143 second.getStaticTransform(date)
144 );
145 }
146
147
148 @Override
149 public KinematicTransform getKinematicTransform(final AbsoluteDate date) {
150 return KinematicTransform.compose(
151 date,
152 first.getKinematicTransform(date),
153 second.getKinematicTransform(date)
154 );
155 }
156
157
158 @Override
159 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
160 return new FieldTransform<>(date, first.getTransform(date), second.getTransform(date));
161 }
162
163
164 @Override
165 public <T extends CalculusFieldElement<T>> FieldKinematicTransform<T> getKinematicTransform(final FieldAbsoluteDate<T> date) {
166 return FieldKinematicTransform.compose(
167 date,
168 first.getKinematicTransform(date),
169 second.getKinematicTransform(date)
170 );
171 }
172
173
174 @Override
175 public <T extends CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransform(final FieldAbsoluteDate<T> date) {
176 return FieldStaticTransform.compose(
177 date,
178 first.getStaticTransform(date),
179 second.getStaticTransform(date)
180 );
181 }
182
183 };
184 }
185
186 }