Description
The factory creates event arrays.
Object Model
Public Methods
Create | Create and register an event array using specified name, description, and type. |
CreateEventArrayConditionCrossings | Create an event array containing times at which the specified condition will change its satisfaction status. |
CreateEventArrayExtrema | Create an event array by determining times of local minimum and/or maximum of specified scalar calculation. |
CreateEventArrayFiltered | Create an event array by filtering times from an original time array according to specified filtering method. |
CreateEventArrayFixedStep | Create an event array using fixed time steps from the specified time reference and adding sampled times to array if they fall within specified bounding interval list. |
CreateEventArrayFixedTimes | Create an event array using specfied times. |
CreateEventArrayMerged | Create an event array by merging times from two other arrays by creating a union of bounding intervals from two constituent arrays. |
CreateEventArraySignaled | Create an event array recorded at target clock location by performing signal transmission of original time array between base and target clock locations. |
CreateEventArrayStartStopTimes | Create an event array by taking start and/or stop times of every interval in the specified reference interval list and adding them to array. |
IsTypeSupported | Returns whether the specified type is supported. |
Example
Determine if the specified event array type is supported.
[C#] | Copy Code |
---|
if (provider.EventArrays.Factory.IsTypeSupported(eventArrayType))
{
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.Create(
"MyEventArray", string.Empty,
eventArrayType);
}
|
|
Create and configure fixed step event array.
[C#] | Copy Code |
---|
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.CreateEventArrayFixedStep("MyEventArrayFixedStep", "MyDescription");
IAgCrdnEventArrayFixedStep asFixedStep = eventArray as IAgCrdnEventArrayFixedStep;
asFixedStep.BoundingIntervalList = provider.EventIntervalLists["AfterStart.SatisfactionIntervals"];
asFixedStep.IncludeIntervalEdges = true;
asFixedStep.SamplingTimeStep = 240;
asFixedStep.ReferenceType = AgECrdnSampledReferenceTime.eCrdnSampledReferenceTimeStartOfIntervalList;
asFixedStep.ReferenceType = AgECrdnSampledReferenceTime.eCrdnSampledReferenceTimeReferenceEvent;
asFixedStep.ReferenceTimeInstant = provider.Events["EphemerisStartTime"];
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure merged event array.
[C#] | Copy Code |
---|
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.CreateEventArrayMerged("MyEventArrayMerged", "MyDescription");
IAgCrdnEventArrayMerged asMerged = eventArray as IAgCrdnEventArrayMerged;
asMerged.TimeArrayA = provider.EventArrays["GroundTrajectory.Detic.LLA.Altitude.TimesOfLocalMin"];
asMerged.TimeArrayB = provider.EventArrays["GroundTrajectory.Detic.LLA.Altitude.TimesOfLocalMax"];
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure signaled event array.
[C#] | Copy Code |
---|
IAgCrdnProvider satelliteVgtProvider = stkRoot.GetObjectFromPath("Satellite/LEO").Vgt;
IAgCrdnProvider aircraftVgtProvider = stkRoot.GetObjectFromPath("Aircraft/UAV").Vgt;
IAgCrdnEventArray eventArray = satelliteVgtProvider.EventArrays.Factory.CreateEventArraySignaled("MyEventArraySignaled", "MyDescription");
IAgCrdnEventArraySignaled asSignaled = eventArray as IAgCrdnEventArraySignaled;
asSignaled.OriginalTimeArray = aircraftVgtProvider.EventArrays["OneMinuteSampleTimes"];
asSignaled.BaseClockLocation = satelliteVgtProvider.Points["Center"];
asSignaled.TargetClockLocation = aircraftVgtProvider.Points["Center"];
asSignaled.SignalSense = AgECrdnSignalSense.eCrdnSignalSenseTransmit;
IAgCrdnSignalDelayBasic basicSignalDelay = asSignaled.SignalDelay as IAgCrdnSignalDelayBasic;
basicSignalDelay.SpeedOption = AgECrdnSpeedOptions.eCrdnLightTransmissionSpeed;
basicSignalDelay.TimeDelayConvergence = 0.01;
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure start stop times event array.
[C#] | Copy Code |
---|
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.CreateEventArrayStartStopTimes("MyEventArrayStartStopTimes", "MyDescription");
IAgCrdnEventArrayStartStopTimes asStartStopTimes = eventArray as IAgCrdnEventArrayStartStopTimes;
asStartStopTimes.ReferenceIntervals = provider.EventIntervalLists["LightingIntervals.Sunlight"];
asStartStopTimes.StartStopOption = AgECrdnStartStopOption.eCrdnStartStopOptionCountStartOnly;
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure condition crossings event array.
[C#] | Copy Code |
---|
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.CreateEventArrayConditionCrossings("MyEventArrayConditionCrossings", "MyDescription");
IAgCrdnEventArrayConditionCrossings asConditionCrossings = eventArray as IAgCrdnEventArrayConditionCrossings;
IAgCrdnCondition scalarBound = provider.Conditions.Factory.CreateConditionScalarBounds("Bound", "MyDescription");
IAgCrdnConditionScalarBounds asScalarBounds = scalarBound as IAgCrdnConditionScalarBounds;
asScalarBounds.Scalar = provider.CalcScalars["GroundTrajectory.Detic.LLA.Latitude"];
asScalarBounds.Operation = AgECrdnConditionThresholdOption.eCrdnConditionThresholdOptionInsideMinMax;
asConditionCrossings.Condition = scalarBound;
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure extrema event array.
[C#] | Copy Code |
---|
IAgCrdnEventArray eventArray = provider.EventArrays.Factory.CreateEventArrayExtrema("MyEventArrayExtrema", "MyDescription");
IAgCrdnEventArrayExtrema asExtrema = eventArray as IAgCrdnEventArrayExtrema;
asExtrema.Calculation = provider.CalcScalars["GroundTrajectory.Detic.LLA.Altitude"];
asExtrema.IsGlobal = true;
asExtrema.ExtremumType = AgECrdnExtremumConstants.eCrdnExtremumMaximum;
IAgCrdnFindTimesResult timeArrays = eventArray.FindTimes();
if (timeArrays.IsValid)
{
Console.WriteLine("Times");
int numTimes = timeArrays.Times.GetLength(0);
for (int i = 0; i < numTimes; ++i)
{
Console.WriteLine(timeArrays.Times.GetValue(i));
}
foreach (IAgCrdnInterval timeArray in timeArrays.Intervals)
{
Console.WriteLine("Start: " + timeArray.Start);
Console.WriteLine("Stop: " + timeArray.Stop);
}
}
|
|
Create and configure fixed step event array.
[Visual Basic .NET] | Copy Code |
---|
Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.CreateEventArrayFixedStep("MyEventArrayFixedStep", "MyDescription") Dim asFixedStep As IAgCrdnEventArrayFixedStep = TryCast(eventArray, IAgCrdnEventArrayFixedStep)
asFixedStep.BoundingIntervalList = provider.EventIntervalLists("AfterStart.SatisfactionIntervals") asFixedStep.IncludeIntervalEdges = True
asFixedStep.SamplingTimeStep = 240 asFixedStep.ReferenceType = AgECrdnSampledReferenceTime.eCrdnSampledReferenceTimeStartOfIntervalList
asFixedStep.ReferenceType = AgECrdnSampledReferenceTime.eCrdnSampledReferenceTimeReferenceEvent asFixedStep.ReferenceTimeInstant = provider.Events("EphemerisStartTime")
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Create and configure merged event array.
[Visual Basic .NET] | Copy Code |
---|
Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.CreateEventArrayMerged("MyEventArrayMerged", "MyDescription") Dim asMerged As IAgCrdnEventArrayMerged = TryCast(eventArray, IAgCrdnEventArrayMerged)
asMerged.TimeArrayA = provider.EventArrays("GroundTrajectory.Detic.LLA.Altitude.TimesOfLocalMin") asMerged.TimeArrayB = provider.EventArrays("GroundTrajectory.Detic.LLA.Altitude.TimesOfLocalMax")
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Create and configure signaled event array.
[Visual Basic .NET] | Copy Code |
---|
Dim satelliteVgtProvider As IAgCrdnProvider = stkRoot.GetObjectFromPath("Satellite/LEO").Vgt Dim aircraftVgtProvider As IAgCrdnProvider = stkRoot.GetObjectFromPath("Aircraft/UAV").Vgt
Dim eventArray As IAgCrdnEventArray = satelliteVgtProvider.EventArrays.Factory.CreateEventArraySignaled("MyEventArraySignaled", "MyDescription") Dim asSignaled As IAgCrdnEventArraySignaled = TryCast(eventArray, IAgCrdnEventArraySignaled)
asSignaled.OriginalTimeArray = aircraftVgtProvider.EventArrays("OneMinuteSampleTimes") asSignaled.BaseClockLocation = satelliteVgtProvider.Points("Center") asSignaled.TargetClockLocation = aircraftVgtProvider.Points("Center")
asSignaled.SignalSense = AgECrdnSignalSense.eCrdnSignalSenseTransmit Dim basicSignalDelay As IAgCrdnSignalDelayBasic = TryCast(asSignaled.SignalDelay, IAgCrdnSignalDelayBasic) basicSignalDelay.SpeedOption = AgECrdnSpeedOptions.eCrdnLightTransmissionSpeed
basicSignalDelay.TimeDelayConvergence = 0.01
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Create and configure start stop times event array.
[Visual Basic .NET] | Copy Code |
---|
Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.CreateEventArrayStartStopTimes("MyEventArrayStartStopTimes", "MyDescription") Dim asStartStopTimes As IAgCrdnEventArrayStartStopTimes = TryCast(eventArray, IAgCrdnEventArrayStartStopTimes)
asStartStopTimes.ReferenceIntervals = provider.EventIntervalLists("LightingIntervals.Sunlight") asStartStopTimes.StartStopOption = AgECrdnStartStopOption.eCrdnStartStopOptionCountStartOnly
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Create and configure condition crossings event array.
[Visual Basic .NET] | Copy Code |
---|
Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.CreateEventArrayConditionCrossings("MyEventArrayConditionCrossings", "MyDescription") Dim asConditionCrossings As IAgCrdnEventArrayConditionCrossings = TryCast(eventArray, IAgCrdnEventArrayConditionCrossings)
Dim scalarBound As IAgCrdnCondition = provider.Conditions.Factory.CreateConditionScalarBounds("Bound", "MyDescription") Dim asScalarBounds As IAgCrdnConditionScalarBounds = TryCast(scalarBound, IAgCrdnConditionScalarBounds) asScalarBounds.Scalar = provider.CalcScalars("GroundTrajectory.Detic.LLA.Latitude") asScalarBounds.Operation = AgECrdnConditionThresholdOption.eCrdnConditionThresholdOptionInsideMinMax
asConditionCrossings.Condition = scalarBound
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Create and configure extrema event array.
[Visual Basic .NET] | Copy Code |
---|
Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.CreateEventArrayExtrema("MyEventArrayExtrema", "MyDescription") Dim asExtrema As IAgCrdnEventArrayExtrema = TryCast(eventArray, IAgCrdnEventArrayExtrema)
asExtrema.Calculation = provider.CalcScalars("GroundTrajectory.Detic.LLA.Altitude")
asExtrema.IsGlobal = True asExtrema.ExtremumType = AgECrdnExtremumConstants.eCrdnExtremumMaximum
Dim timeArrays As IAgCrdnFindTimesResult = eventArray.FindTimes() If timeArrays.IsValid Then Console.WriteLine("Times") Dim numTimes As Integer = timeArrays.Times.GetLength(0) Dim i As Integer = 0 While i <> Console.WriteLine(timeArrays.Times.GetValue(i)) System.Threading.Interlocked.Increment(i) End While
For Each timeArray As IAgCrdnInterval In timeArrays.Intervals Console.WriteLine("Start: " + timeArray.Start) Console.WriteLine("Stop: " + timeArray.[Stop]) Next End If
|
|
Determine if the specified event array type is supported.
[Visual Basic .NET] | Copy Code |
---|
If provider.EventArrays.Factory.IsTypeSupported(eventArrayType) Then Dim eventArray As IAgCrdnEventArray = provider.EventArrays.Factory.Create("MyEventArray", String.Empty, eventArrayType) End If
|
|