private PriceAdapter(PriceMappingRules rule) { if (rule != PriceMappingRules.Natural) { throw new Exception(); } Rule = rule; IndexOf = new PriceToIndexValueDelegate(NatureIndexOf); Zero = 0; Step = 1; }
public CyclesPresenter(ZedGraphControl control, QuoteCollection history) { Zed = control; History = history; Orbits = GeocentricOrbits; Frame = AngleFrame.Natural; Clock = TimeAngleConverter.SolarClock; ClocksDict = new Dictionary <string, TimeAngleConverter>(); DateTimeOffset floorDate = History.DataCollection[History.FloorIndex].Date; DateTimeOffset ceilingDate = History.DataCollection[History.CelingIndex].Date; ClocksDict.Add("FloorCeiling", new TimeAngleConverter(floorDate, Math.Abs((floorDate - ceilingDate).TotalDays))); ClocksDict.Add("FirstNatural", new TimeAngleConverter(History.Since)); ClocksDict.Add("First360", new TimeAngleConverter(History.Since, 360)); ClocksDict.Add("LowestNatural", new TimeAngleConverter(floorDate)); ClocksDict.Add("Lowest360", new TimeAngleConverter(floorDate, 360)); ClocksDict.Add("HighestNatural", new TimeAngleConverter(ceilingDate)); ClocksDict.Add("Highest360", new TimeAngleConverter(ceilingDate, 360)); PriceDict = new Dictionary <string, PriceAdapter>(); double floor = History.Floor; double ceiling = History.Ceiling; for (PriceMappingRules rule = PriceMappingRules.Filled; rule <= PriceMappingRules.FloorStep; rule++) { PriceDict.Add(rule.ToString(), new PriceAdapter(rule, floor, ceiling)); } //Curves = new Dictionary<PlanetId, Dictionary<OrbitInfoType, OrbitSpec>>(); //for (PlanetId id = PlanetId.SE_SUN; id <= PlanetId.SE_PLUTO; id++) //{ // Curves.Add(id, new Dictionary<OrbitInfoType, OrbitSpec>()); //} InitiateGraphControl(); Zed.ZoomEvent += new ZedGraphControl.ZoomEventHandler(Control_ZoomEvent); PlusOrbits = new List <OrbitSpec>(); MinusOrbits = new List <OrbitSpec>(); }
public PriceAdapter(PriceMappingRules rule, Double floor, double ceiling) { Rule = rule; switch (rule) { default: throw new Exception(); case PriceMappingRules.Natural: //double range = ceiling - floor; //Step = StepOf(range, 3); if (ceiling >= 36000) { Step = 100; } else if (ceiling >= 18000) { Step = 50; } else if (ceiling >= 7200) { Step = 10; } else if (ceiling >= 1800) { Step = 5; } else if (ceiling >= 720) { Step = 2; } else if (ceiling >= 180) { Step = 1; } else if (ceiling >= 72) { Step = 0.5; } else if (ceiling >= 18) { Step = 0.1; } else if (ceiling >= 9) { Step = 0.05; } else { Step = 0.01; } Zero = 0; break; case PriceMappingRules.FilledPivots: case PriceMappingRules.Filled: Zero = gracefulOf(floor, true); Double max = gracefulOf(ceiling, false); Step = (max - Zero) / 360; break; case PriceMappingRules.Contained: double temp = ceiling - floor; Step = StepOf(temp * 3, 2); Zero = Math.Round(floor / Step) * Step; break; case PriceMappingRules.FloorNatural: Step = StepOf(floor, 2); Zero = Math.Round(floor / Step) * Step; break; case PriceMappingRules.CeilingNatural: Step = StepOf(ceiling, 3); Zero = 0; break; case PriceMappingRules.FloorStep: Step = gracefulOf(floor); Zero = Math.Round(floor / Step) * Step; break; } IndexOf = new PriceToIndexValueDelegate(relativeIndexOf); }
public PriceAdapter(PriceMappingRules rule, Outline outline) : this(rule, outline.Min, outline.Max) { }