示例#1
0
        private string GetReductionTypeDisplayName(LightCurveReductionType reductionType, ReductionSubType subType)
        {
            switch (reductionType)
            {
            case LightCurveReductionType.Asteroidal:
                return("Asteroidal");

            case LightCurveReductionType.MutualEvent:
            {
                if (subType == ReductionSubType.Eclipse)
                {
                    return("Mutual Eclipse");
                }
                if (subType == ReductionSubType.Occultation)
                {
                    return("Mutual Occultation");
                }
                break;
            }

            case LightCurveReductionType.TotalLunarDisappearance:
                return("Total Lunar (D)");

            case LightCurveReductionType.TotalLunarReppearance:
                return("Total Lunar (R)");

            case LightCurveReductionType.LunarGrazingOccultation:
                return("Lunar Graze");

            case LightCurveReductionType.UntrackedMeasurement:
                return("Untracked");
            }

            return("N/A");
        }
示例#2
0
        private string GetReductionTypeDisplayName(LightCurveReductionType reductionType, ReductionSubType subType)
        {
            switch (reductionType)
            {
                case LightCurveReductionType.Asteroidal:
                    return "Asteroidal";
                case LightCurveReductionType.MutualEvent:
                {
                    if (subType == ReductionSubType.Eclipse)
                        return "Mutual Eclipse";
                    if (subType == ReductionSubType.Occultation)
                        return "Mutual Occultation";
                    break;
                }
                case LightCurveReductionType.TotalLunarDisappearance:
                    return "Total Lunar (D)";
                case LightCurveReductionType.TotalLunarReppearance:
                    return "Total Lunar (R)";
                case LightCurveReductionType.LunarGrazingOccultation:
                    return "Lunar Graze";
                case LightCurveReductionType.UntrackedMeasurement:
                    return "Untracked";
            }

            return "N/A";
        }
示例#3
0
        public static ITracker CreateTracker(int imageWidth, int imageHeight, LightCurveReductionType lightCurveReductionType, VideoFileFormat fileFormat, List<TrackedObjectConfig> measuringStars, out string usedTrackerType)
        {
            // NOTE: Figure out what tracker to create based on the type of event, number of objects and their intensity
            bool createRefiningTracker = TangraConfig.Settings.Tracking.SelectedEngine == TangraConfig.TrackingEngine.TrackingWithRefining;

            if (TangraConfig.Settings.Tracking.SelectedEngine == TangraConfig.TrackingEngine.LetTangraChoose)
            {
                if (LightCurveReductionContext.Instance.WindOrShaking ||
                    LightCurveReductionContext.Instance.StopOnLostTracking ||
                    LightCurveReductionContext.Instance.IsDriftThrough ||
                    LightCurveReductionContext.Instance.HighFlickeringOrLargeStars ||
                    LightCurveReductionContext.Instance.FullDisappearance)
                {
                    createRefiningTracker = true;
                }
            }

            bool createFITSFileTracker = lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit &&
                                         fileFormat == VideoFileFormat.FITS;

            if (lightCurveReductionType == LightCurveReductionType.Asteroidal || lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit)
            {
                if (createFITSFileTracker && lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit)
                {
                    usedTrackerType = "Star field tracker";
                    return new StarFieldTracker(measuringStars);
                }
                else if (createRefiningTracker)
                {
                    if (measuringStars.Count == 1)
                    {
                        usedTrackerType = "One star tracking";
                        return new OneStarTracker(measuringStars);
                    }
                    else
                    {
                        usedTrackerType = "Tracking with recovery";
                        return new OccultationTracker(measuringStars);
                    }
                }
                else
                {
            #if WIN32
                    if (TangraConfig.Settings.Tracking.UseNativeTracker)
                    {
                        usedTrackerType = "Simplified Native";
                        return new NativeSimplifiedTracker(imageWidth, imageHeight, measuringStars, LightCurveReductionContext.Instance.FullDisappearance);
                    }
                    else
            #endif
                    {
                        usedTrackerType = "Simplified";
                        return new SimplifiedTracker(measuringStars);
                    }
                }
            }
            else if (lightCurveReductionType == LightCurveReductionType.MutualEvent)
            {
                if (measuringStars.Any(x => x.ProcessInPsfGroup))
                {
                    usedTrackerType = "Mutual Event M";
                    return new MutualEventTracker(measuringStars, LightCurveReductionContext.Instance.FullDisappearance);
                }
                else
                {
                    if (createRefiningTracker)
                    {
                        usedTrackerType = "Mutual Event O";
                        return new OccultationTracker(measuringStars);
                    }

                    usedTrackerType = "Mutual Event S";

            #if WIN32
                    if (TangraConfig.Settings.Tracking.UseNativeTracker)
                        return new NativeSimplifiedTracker(imageWidth, imageHeight, measuringStars, LightCurveReductionContext.Instance.FullDisappearance);
                    else
            #endif
                        return new SimplifiedTracker(measuringStars);
                }
            }
            else if (lightCurveReductionType == LightCurveReductionType.TotalLunarDisappearance ||
                lightCurveReductionType == LightCurveReductionType.TotalLunarReppearance ||
                lightCurveReductionType == LightCurveReductionType.LunarGrazingOccultation)
            {
                usedTrackerType = "Lunar Occuration Tracker";
                return new LunarOccultationTracker(measuringStars);
            }
            else if (lightCurveReductionType == LightCurveReductionType.UntrackedMeasurement)
            {
                usedTrackerType = "Untracked";
                return new UntrackedTracker(measuringStars);
            }

            throw new NotSupportedException();
        }
示例#4
0
        public static ITracker CreateTracker(int imageWidth, int imageHeight, LightCurveReductionType lightCurveReductionType, VideoFileFormat fileFormat, List <TrackedObjectConfig> measuringStars, out string usedTrackerType)
        {
            // NOTE: Figure out what tracker to create based on the type of event, number of objects and their intensity
            bool createRefiningTracker = TangraConfig.Settings.Tracking.SelectedEngine == TangraConfig.TrackingEngine.TrackingWithRefining;

            if (TangraConfig.Settings.Tracking.SelectedEngine == TangraConfig.TrackingEngine.LetTangraChoose)
            {
                if (LightCurveReductionContext.Instance.WindOrShaking ||
                    LightCurveReductionContext.Instance.StopOnLostTracking ||
                    LightCurveReductionContext.Instance.IsDriftThrough ||
                    LightCurveReductionContext.Instance.HighFlickeringOrLargeStars ||
                    LightCurveReductionContext.Instance.FullDisappearance)
                {
                    createRefiningTracker = true;
                }
            }

            bool createFITSFileTracker = lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit &&
                                         fileFormat == VideoFileFormat.FITS;

            if (lightCurveReductionType == LightCurveReductionType.Asteroidal || lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit)
            {
                if (createFITSFileTracker && lightCurveReductionType == LightCurveReductionType.VariableStarOrTransit)
                {
                    usedTrackerType = "Star field tracker";
                    return(new StarFieldTracker(measuringStars));
                }
                else if (createRefiningTracker)
                {
                    if (measuringStars.Count == 1)
                    {
                        usedTrackerType = "One star tracking";
                        return(new OneStarTracker(measuringStars));
                    }
                    else
                    {
                        usedTrackerType = "Tracking with recovery";
                        return(new OccultationTracker(measuringStars));
                    }
                }
                else
                {
#if WIN32
                    if (TangraConfig.Settings.Tracking.UseNativeTracker)
                    {
                        usedTrackerType = "Simplified Native";
                        return(new NativeSimplifiedTracker(imageWidth, imageHeight, measuringStars, LightCurveReductionContext.Instance.FullDisappearance));
                    }
                    else
#endif
                    {
                        usedTrackerType = "Simplified";
                        return(new SimplifiedTracker(measuringStars));
                    }
                }
            }
            else if (lightCurveReductionType == LightCurveReductionType.MutualEvent)
            {
                if (measuringStars.Any(x => x.ProcessInPsfGroup))
                {
                    usedTrackerType = "Mutual Event M";
                    return(new MutualEventTracker(measuringStars, LightCurveReductionContext.Instance.FullDisappearance));
                }
                else
                {
                    if (createRefiningTracker)
                    {
                        usedTrackerType = "Mutual Event O";
                        return(new OccultationTracker(measuringStars));
                    }

                    usedTrackerType = "Mutual Event S";

#if WIN32
                    if (TangraConfig.Settings.Tracking.UseNativeTracker)
                    {
                        return(new NativeSimplifiedTracker(imageWidth, imageHeight, measuringStars, LightCurveReductionContext.Instance.FullDisappearance));
                    }
                    else
#endif
                    return(new SimplifiedTracker(measuringStars));
                }
            }
            else if (lightCurveReductionType == LightCurveReductionType.TotalLunarDisappearance ||
                     lightCurveReductionType == LightCurveReductionType.TotalLunarReppearance ||
                     lightCurveReductionType == LightCurveReductionType.LunarGrazingOccultation)
            {
                usedTrackerType = "Lunar Occuration Tracker";
                return(new LunarOccultationTracker(measuringStars));
            }
            else if (lightCurveReductionType == LightCurveReductionType.UntrackedMeasurement)
            {
                usedTrackerType = "Untracked";
                return(new UntrackedTracker(measuringStars));
            }

            throw new NotSupportedException();
        }