Esempio n. 1
0
        public int Handle(RationalInfo info)
        {
            Rational r        = info.rational;
            float    cents    = (float)r.ToCents();
            float    distance = (float)info.distance;
            float    harm     = 1f / distance;
            //float harm = Utils.GetHarmonicity(distance); // harmonicity: 0..1

            float x = cents; // 0..1200

            // use id as a tip
            string id = String.Format("{0} {1} {2} {3:F2} {4}",
                                      r.ToString(),
                                      r.FormatMonzo(),
                                      distance,
                                      r.ToCents(),
                                      _temperament.FormatRational(r)
                                      );

            _image.Line(Point.Points(x, 0, x, harm * 3))
            .Add(id: id)
            .FillStroke(Color.Empty, Color.LightGray, harm * 2);

            string fraction = r.FormatFraction("\n");

            _image.Text(new Point(x, 0), fraction, harm * 2f, lineLeading: 0.8f, align: Image.Align.Center)
            .Add()
            .FillStroke(Color.Black, Color.Empty);

            return(1);
        }
Esempio n. 2
0
        void Test5_ParseRationals()
        {
            Rational r0 = Rational.Parse(" 81 / 80 \n");

            Assert.Equal("|-4 4 -1>", r0.FormatMonzo());

            Rational r1 = Rational.Parse(" | 7 \t 0 -3> ");

            Assert.Equal("|7 0 -3>", r1.FormatMonzo());
        }
Esempio n. 3
0
        void Test1_Rationals()
        {
            Assert.Equals(new Rational(1), Rational.One);
            Assert.Equals(new Rational(2), Rational.Two);

            var r0 = new Rational(4, 5);
            var r1 = new Rational(6, 4);

            Assert.Equals(new Rational(4, 5), r0);

            Assert.Equals("4/5", r0.FormatFraction());
            Assert.Equals("4/5", r0.ToString());
            Assert.Equals("3/2", r1.ToString());

            Assert.Equals("6/5", (r0 * r1).FormatFraction());
            Assert.Equals("8/15", (r0 / r1).FormatFraction());

            var r3 = new Rational(81, 80);

            Assert.Equal("|-4 4 -1>", r3.FormatMonzo());
            Assert.Equal("|-2 4 -1}", r3.FormatNarrowPowers());
        }