コード例 #1
0
ファイル: SamplesDrawing.cs プロジェクト: bntre/cs-rationals
        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);
        }
コード例 #2
0
        override protected string ValueToText(double value)
        {
            int      primeIndex = (int)value;
            int      prime      = Rationals.Utils.GetPrime(primeIndex);
            Rational r          = new Rational(prime);

            return(r.FormatFraction());
        }
コード例 #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());
        }