Event Detection¶
The event detection system uses industry-standard g-function zero-crossing to locate maneuver trigger points and other state transitions during propagation.
IEventDetector Interface¶
| Member | Description |
|---|---|
Evaluate(StateVector) |
Compute the scalar g-function value at the given state |
Direction |
CrossingDirection specifying which zero-crossing triggers the event |
IsActive |
Whether this detector is currently active |
HandleEvent(StateVector, Spacecraft) |
Execute the event action and return an EventResult |
When Evaluate changes sign in the specified Direction between two integration steps, the event is triggered.
EventResult¶
EventResult is a record returned by HandleEvent containing:
| Property | Description |
|---|---|
ModifiedState |
The spacecraft state after the event (e.g., post-burn) |
Orientation |
The spacecraft orientation after the event |
Action |
EventAction — what the propagator should do next |
NextDetector |
The next event detector to arm (if chaining maneuvers) |
EventAction¶
| Value | Description |
|---|---|
StopAndRestart |
Stop the current segment and begin a new one with updated state |
Continue |
Continue integration without interruption |
CrossingDirection¶
| Value | Fires When |
|---|---|
NegativeToPositive |
g-function crosses zero from negative to positive |
PositiveToNegative |
g-function crosses zero from positive to negative |
Any |
g-function crosses zero in either direction |
ManeuverEventDetector¶
ManeuverEventDetector wraps an ImpulseManeuver and delegates to ComputeEventValue() for the g-function and EventCrossingDirection for the trigger direction. When the event fires, it applies the maneuver's delta-V and advances the maneuver chain.
BisectionEventFinder¶
Pro
BisectionEventFinder is a Pro feature.
BisectionEventFinder performs sub-step root-finding to locate event times to approximately 1e-10 second precision. It uses Hermite dense output from AcceptedStep records to evaluate the g-function at arbitrary points within a step, then applies bisection to converge on the zero crossing.
Community VVIntegrator detects events at step boundaries only. Pro RK78Integrator uses BisectionEventFinder for sub-step refinement.
Maneuver G-Functions¶
| Maneuver | G-Function | Direction | Fires At |
|---|---|---|---|
ApogeeHeightManeuver |
r . v | NegativeToPositive |
Perigee |
PerigeeHeightManeuver |
r . v | PositiveToNegative |
Apogee |
PhasingManeuver |
r . v | NegativeToPositive |
Perigee |
CombinedManeuver |
r . v | PositiveToNegative |
Apogee (+ precondition) |
PlaneAlignmentManeuver |
r . h_target | Adaptive | Nearest orbital node |
ApsidalAlignmentManeuver |
r . (h x p) | NegativeToPositive |
Nearest intersection |