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
39
40
41
42 @Override
43 public Transform getTransform(final AbsoluteDate date) {
44 return Transform.IDENTITY;
45 }
46
47
48 @Override
49 public StaticTransform getStaticTransform(final AbsoluteDate date) {
50 return StaticTransform.getIdentity();
51 }
52
53
54
55
56
57
58 @Override
59 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
60 return FieldTransform.getIdentity(date.getField());
61 }
62
63
64 @Override
65 public <T extends CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransform(final FieldAbsoluteDate<T> date) {
66 return FieldStaticTransform.getIdentity(date.getField());
67 }
68 };
69
70
71
72
73
74
75 private TransformProviderUtils() {
76 }
77
78
79
80
81
82
83 public static TransformProvider getReversedProvider(final TransformProvider provider) {
84 return new TransformProvider() {
85
86
87 @Override
88 public Transform getTransform(final AbsoluteDate date) {
89 return provider.getTransform(date).getInverse();
90 }
91
92 @Override
93 public KinematicTransform getKinematicTransform(final AbsoluteDate date) {
94 return provider.getKinematicTransform(date).getInverse();
95 }
96
97 @Override
98 public StaticTransform getStaticTransform(final AbsoluteDate date) {
99 return provider.getStaticTransform(date).getInverse();
100 }
101
102
103 @Override
104 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
105 return provider.getTransform(date).getInverse();
106 }
107
108
109 @Override
110 public <T extends CalculusFieldElement<T>> FieldKinematicTransform<T> getKinematicTransform(final FieldAbsoluteDate<T> date) {
111 return provider.getKinematicTransform(date).getInverse();
112 }
113
114
115 @Override
116 public <T extends CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransform(final FieldAbsoluteDate<T> date) {
117 return provider.getStaticTransform(date).getInverse();
118 }
119
120 };
121 }
122
123
124
125
126
127
128
129 public static TransformProvider getCombinedProvider(final TransformProvider first,
130 final TransformProvider second) {
131 return new TransformProvider() {
132
133 @Override
134 public Transform getTransform(final AbsoluteDate date) {
135 return new Transform(date, first.getTransform(date), second.getTransform(date));
136 }
137
138
139 @Override
140 public StaticTransform getStaticTransform(final AbsoluteDate date) {
141 return StaticTransform.compose(
142 date,
143 first.getStaticTransform(date),
144 second.getStaticTransform(date)
145 );
146 }
147
148
149 @Override
150 public KinematicTransform getKinematicTransform(final AbsoluteDate date) {
151 return KinematicTransform.compose(
152 date,
153 first.getKinematicTransform(date),
154 second.getKinematicTransform(date)
155 );
156 }
157
158
159 @Override
160 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(final FieldAbsoluteDate<T> date) {
161 return new FieldTransform<>(date, first.getTransform(date), second.getTransform(date));
162 }
163
164
165 @Override
166 public <T extends CalculusFieldElement<T>> FieldKinematicTransform<T> getKinematicTransform(final FieldAbsoluteDate<T> date) {
167 return FieldKinematicTransform.compose(
168 date,
169 first.getKinematicTransform(date),
170 second.getKinematicTransform(date)
171 );
172 }
173
174
175 @Override
176 public <T extends CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransform(final FieldAbsoluteDate<T> date) {
177 return FieldStaticTransform.compose(
178 date,
179 first.getStaticTransform(date),
180 second.getStaticTransform(date)
181 );
182 }
183
184 };
185 }
186
187 }