1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.propagation.events;
19
20 import org.orekit.propagation.SpacecraftState;
21 import org.orekit.propagation.events.handlers.EventHandler;
22 import org.orekit.propagation.events.intervals.DateDetectionAdaptableIntervalFactory;
23 import org.orekit.time.AbsoluteDate;
24 import org.orekit.time.TimeInterval;
25
26
27
28
29
30
31
32
33
34 public class TimeIntervalDetector extends AbstractDetector<TimeIntervalDetector> {
35
36
37 private final TimeInterval timeInterval;
38
39
40
41
42
43
44 public TimeIntervalDetector(final EventHandler handler, final TimeInterval timeInterval) {
45 this(new EventDetectionSettings(DateDetectionAdaptableIntervalFactory.getDatesDetectionInterval(timeInterval.getStartDate(), timeInterval.getEndDate()),
46 DateDetector.DEFAULT_THRESHOLD, DEFAULT_MAX_ITER), handler, timeInterval);
47 }
48
49
50
51
52
53
54
55 public TimeIntervalDetector(final EventDetectionSettings detectionSettings, final EventHandler handler,
56 final TimeInterval timeInterval) {
57 super(detectionSettings, handler);
58 this.timeInterval = timeInterval;
59 }
60
61
62
63
64
65 public TimeInterval getTimeInterval() {
66 return timeInterval;
67 }
68
69 @Override
70 protected TimeIntervalDetector create(final EventDetectionSettings detectionSettings, final EventHandler newHandler) {
71 return new TimeIntervalDetector(detectionSettings, newHandler, timeInterval);
72 }
73
74
75 @Override
76 public boolean dependsOnTimeOnly() {
77 return true;
78 }
79
80 @Override
81 public double g(final SpacecraftState s) {
82 final AbsoluteDate date = s.getDate();
83 return (date.durationFrom(timeInterval.getStartDate())) * (timeInterval.getEndDate().durationFrom(date));
84 }
85 }