Ejemplo n.º 1
0
        public void MakeCompleteMoonDisk()
        {
            movement.supporting     oMoonK          = new movement.supporting();
            movement.MoonRealStatus oMoonRealStatus = new movement.MoonRealStatus();
            movement.makeDisks      mD = new movement.makeDisks();
            movement.movementCase   mC = new movement.movementCase();
            movement.MoonDiskStatus oMoonDiskStatus = new movement.MoonDiskStatus();

            double NotchesMoonDisk = 0;
            double SynoticPhaseThisMoonDiskMinutes = 0;

            DateTime dT = DateTime.Now;
            //DateTime dT = Convert.ToDateTime("Dec 22, 2018 9:48 am");
            //DateTime dT = Convert.ToDateTime("June 13, 2018 12:00 am");
            //DateTime dT = Convert.ToDateTime("Dec. 27, 2118 05:08 PM");
            //DateTime dT = Convert.ToDateTime("Dec. 26, 2140 12:00 AM");
            DateTime findPhaseUTC = dT.ToUniversalTime();

            Double   SynoticPhase_Minutes_Real = Convert.ToDouble(ConfigurationSettings.AppSettings.Get("SynoticPhase_Minutes_Real"));
            DateTime KnownFullMoon_UTC_used    = Convert.ToDateTime(ConfigurationSettings.AppSettings.Get("KnownFullMoon_UTC_used"));

            TimeSpan ts = findPhaseUTC.Subtract(KnownFullMoon_UTC_used);

            // first, get the real moonphase:
            oMoonRealStatus = oMoonK.GetRealMoonPhase(SynoticPhase_Minutes_Real, ts, findPhaseUTC);

            mC = mD.MakeMoonDisk("MakeMoonDisk135Hourly.txt");        // get moonphase for 135 notch disk
            //mC = mD.MakeMoonDisk("MakeMoonDisk90Daily.txt");          // get moonphase for 90 notch disk
            //mC = mD.MakeMoonDisk("MakeMoonDisk59Daily.txt");            // get moonphase for 59 notch disk
            NotchesMoonDisk = oMoonK.GetFinalDiskNotches(mC);

            SynoticPhaseThisMoonDiskMinutes = oMoonK.CalcSynoticPhaseThisMoonDiskMinutes(NotchesMoonDisk,
                                                                                         mC,
                                                                                         movement.supporting._BaseDriverTransmission.smooth,
                                                                                         movement.supporting._BaseDriverStepMethod.runUnder);

            switch (mC.BaseGears[0].DiskBaseUnitDriver)
            {// now get the movement working
            case gears.BaseGear._DiskBaseUnitDriver.hourly:
                mC.incNotches(ref mC, (int)Math.Floor(ts.TotalHours));
                break;

            case gears.BaseGear._DiskBaseUnitDriver.daily:
                mC.incNotches(ref mC, (int)Math.Floor(ts.TotalDays));
                break;
            }
            // get all final moon phase parameters for type of movement and accuracy
            oMoonDiskStatus = oMoonK.RunMoonModule(mC, NotchesMoonDisk, SynoticPhaseThisMoonDiskMinutes, ts, findPhaseUTC, oMoonRealStatus.LunationsElapsed);
        }