static void Test6_Plotter() { var harmonicity = HarmonicityUtils.CreateHarmonicity(null); // default var viewport = new Torec.Drawing.Viewport(1200, 600, 0, 1200, 1, -1); var image = new Torec.Drawing.Image(viewport); var r0 = new Rational(1); var r1 = new Rational(2); var handler = new HandlerPipe <RationalInfo>( new RangeRationalHandler(r0, r1, false, true), new Samples.RationalPrinter(), new RationalPlotter(image, harmonicity) ); Debug.WriteLine("Iterate {0} range {1}-{2}", harmonicity.GetType().Name, r0, r1); var limits = new RationalGenerator.Limits { dimensionCount = 7, rationalCount = 50, distance = -1 }; new RationalIterator(harmonicity, limits, null, handler).Iterate(); image.Show(svg: true); //image.Show(svg: false); }
static void Test1_IterateRationals() { var harmonicity = new BarlowHarmonicity(); //var harmonicity = new SimpleHarmonicity(2.0); //var harmonicity = new EpimoricHarmonicity(2.0); var r0 = new Rational(1); var r1 = new Rational(25, 24); Debug.WriteLine("Iterate {0} range {1}-{2}", harmonicity.GetType().Name, r0, r1); var collector = new Collector <RationalInfo>(); var handler = new HandlerPipe <RationalInfo>( new RangeRationalHandler(r0, r1), new RationalPrinter(), collector ); var limits = new RationalGenerator.Limits { dimensionCount = 3, rationalCount = 20, // accepted rational count in the range. might be slow for small range distance = -1, }; new RationalIterator(harmonicity, limits, null, handler).Iterate(); Debug.WriteLine("-------------------\n Sort by distance"); collector.Iterate(RationalInfo.CompareDistances, new RationalPrinter()); Debug.WriteLine("-------------------\n Sort by value"); collector.Iterate(RationalInfo.CompareValues, new RationalPrinter()); }
static void Test2_FindCommas() { //var harmonicity = new EulerHarmonicity(); var harmonicity = new BarlowHarmonicity(); //var harmonicity = new SimpleHarmonicity(2.0); //var harmonicity = new EpimoricHarmonicity(2.0); Rational r0 = new Rational(1); Rational r1 = new Rational(25, 24); int limit = 3; int count = 20; Debug.WriteLine("Iterate {0} range {1}-{2}", harmonicity.GetType().Name, r0, r1); var collector = new Collector <RationalInfo>(); var handler = new HandlerPipe <RationalInfo>( new RangeRationalHandler(r0, r1, false, true), //new RationalPrinter(), collector ); var limits = new RationalGenerator.Limits { dimensionCount = limit, rationalCount = count, distance = -1 }; new RationalIterator(harmonicity, limits, null, handler).Iterate(); Debug.WriteLine("-------------------\n Sort by distance"); collector.Iterate(RationalInfo.CompareDistances, new RationalPrinter()); //Debug.WriteLine("-------------------\n Sort by value"); //collector.Iterate(RationalInfo.CompareValues, new RationalPrinter()); // Organize commas Debug.WriteLine("-------------------\n Organize"); collector.Iterate(RationalInfo.CompareDistances, new HandlerPipe <RationalInfo>( new RationalOrganizer(limit), new RationalPrinter() ) ); }