A PointGroup is a collection of points located on or near the central body's surface. The PointGroup object is designed to support sensor coverage analysis, where sensor contact with each point is computed. PointGroups can be viewed in a ViewWindow object or using the View or Map commands. Detailed sensor contact information is provided through the PointGroup.Coverage() method, as shown in the example below. For a summary of the coverage and contact output methods in FreeFlyer organized by observer and target object type, see the Contact Method Summary.
The following Sample Mission Plans (included with your FreeFlyer installation) demonstrate the use of the PointGroup object:
|
Defining the PointGroup Distribution
You can define the collection of points in two ways:
1.Specify the Number of Points
This option (shown in the image below) allows you to define the total number of points that will be included in the PointGroup. In addition, you can choose whether to distribute these points evenly over the central body or to define the exact locations for each point.
2.Specify Point Coverage Area
This option allows you to divide the area of the central body evenly by a specified size. For example, if you define the "Area per Point" as 10 km2, the area of the central body will be divided evenly into 10 km2 sections. Each one of these sections will be represented by a point of a PointGroup.
Defining the PointGroup Visuals
You can define the visualization of points in four ways:
1.Specify the Group Color
This option allows you to set the color of all points that will be included in the PointGroup.
PointGroup1.GroupColor = ColorTools.Red;
|
2.Specify the Group Opacity
This option allows you to set the opacity for all points that will be included in the PointGroup.
PointGroup1.GroupOpacity = 1;
|
3.Specify the Group Size
This option allows you to set the size of for all points that will be included in the PointGroup.
PointGroup1.GroupSize = 3; // pixels
|
4.Specify the Group Height
This option allows you to set the height, above the WGS 84 reference spheroid, for all points that will be included in the PointGroup.
PointGroup1.GroupHeight = 10; // km
|
5.Specify the Group Elevation Angle
This option allows you to set the elevation angle, above the WGS 84 reference spheroid, for all points that will be included in the PointGroup. This property is primarily used for contact evaluation methods.
PointGroup1.GroupElevationAngle = 0; // deg
|
PointGroup Object Editor
How is Sensor Coverage calculated?
Knowing the sensor’s boresight, for any given azimuth FreeFlyer compares the elevation of the point in question to that of the sensor’s field-of-view. If the elevation of the point is within the elevation of the field-of-view, then the point is within the field-of-view of the sensor.
Example: Using the Coverage Method
The “Coverage” method of a PointGroup allows for analysis of sensor coverage over areas of the earth’s surface. The Coverage method requires at least one sensor to use in the consideration of the coverage. In this example, a PointGroup with 10,000 points is created. If a point has been in view of any of the Spacecraft's Sensors in the Formation, it is drawn green; otherwise, it is drawn red, as seen in the image below. For a summary of the coverage and contact output methods in FreeFlyer organized by observer and target object type, see the Contact Method Summary.
Note: The central body of the Spacecraft to which the Sensor is attached and the central body of the PointGroup must be the same in order for the "Coverage" method of a PointGroup to return valid contact results.
Array PointCoverage[0]; // Array to hold coverage statistics for each point
Array PointRevisit[0]; // Array to hold revisit statistics for each point
Array PointInView[0]; // Array to hold per sensor coverage indication for each point
Variable CoverageChange;
Variable i;
PointGroup PointGroup1;
PointGroup1.NumberOfPoints = 10000; // Change value to match analysis requirements
// Create a Formation with 5 Spacecraft
Formation scFormation[5];
scFormation.ViewAsGroup = 0;
For i = 0 to scFormation.Count-1;
scFormation[i].A = 7000 + (50*i); // Increase the Semi-Major axis 50km for each Spacecraft in the Formation
scFormation[i].I = 10 + (10*i); // Increase the inclination 10 degrees for each Spacecraft in the Formation
scFormation[i].AddSensor("sensor" + i.ToString); // Add a sensor to each Spacecraft in the Formation
End;
While (scFormation[0].ElapsedTime < TIMESPAN(1 days));
//CoverageChange will be 1 if any coverage statistic was updated
CoverageChange = PointGroup1.Coverage(scFormation,PointCoverage,PointRevisit,PointInView);
If (CoverageChange == 1);
For i = 0 to PointGroup1.NumberOfPoints - 1;
If (PointCoverage[i] == 1); // 1 - Has been in view
PointGroup1.PointColor[i] = ColorTools.Lime;
Else;
PointGroup1.PointColor[i] = ColorTools.Red; // 0 - Never been in view
End;
End;
End;
View scFormation, PointGroup1;
Step scFormation;
End;
|
Note: As of FreeFlyer 7.3, the default timing precision mode is nanosecond precision mode. For older Mission Plans that have not yet been converted from millisecond precision mode, the syntax for working with times is different. See the timing precision mode page for more information.
Coverage analysis of a 10,000 point PointGroup with a 5 Spacecraft Formation.
See Also
•PointGroup Properties and Methods
•Contact Method Summary
|