DistributeClusterGoals:

--------------------------------------------------------------------------
   Given a set of geometric goals for the cluster, with corresponding target
   IDs and a desired team structure mapping those IDs into various teams, this
   function returns a set of "teamGoals" structures as well as the relative 
   geometry of each team's reference with respect to the cluster origin.

   Only valid for circular orbits.

   Since version 7.
--------------------------------------------------------------------------
   Form:
   [teamGoals,refGoals] = DistributeClusterGoals( clusterGoals, targetIDs, teams, dPhi );
--------------------------------------------------------------------------

   ------
   Inputs
   ------
   clusterGoals   (.)     Set of all geometric goals for the cluster
   targetIDs     (1,:)    Set of unique ID numbers for the cluster goals
   teams          (.)     Data structure array of team info, where all 
                            member and reference IDs correspond to the
                            "targetIDs" set.
   dPhi           (1)     Angular resolution for variable state discretization

   -------
   Outputs
   -------
   teamGoals      (.)     Array of team goals data structures
   refGoals       (.)     Array of geometric goal structures, describing
                             relative geometry of each reference with
                             respect to the cluster origin.

--------------------------------------------------------------------------

Children:

FormationFlying: Coord/CirclePhase
FormationFlying: DataStructures/Geometry_Structure
FormationFlying: DataStructures/TeamGoals_Structure
FormationFlying: DataStructures/Team_Structure
FormationFlying: Guidance/IsDuplicateState
FormationFlying: Guidance/PCGoals
FormationFlying: Transformation/DeltaElem2Goals
FormationFlying: Transformation/Goals2DeltaElem