예제 #1
0
        public void test_symbolic_label()
        {
            //ax+2y-1=0
            var    variable   = new Var('a');
            var    line       = new Line(variable, 2, -1);
            var    lineSymbol = new LineSymbol(line);
            string str        = lineSymbol.ToString();

            Assert.True(str.Equals("ax+2y-1=0"));

            line.Label = "M";
            Assert.True(lineSymbol.ToString().Equals("M(ax+2y-1=0)"));
        }
예제 #2
0
        public void Test_SlopeIntercept_2()
        {
            //general form -> slope intercept form
            var    a    = new Var('a');
            double b    = 2.0d;
            double c    = 3.0d;
            var    line = new Line(a, b, c);

            Assert.False(line.Concrete);
            Assert.True(line.InputType == LineType.GeneralForm);

            var ls = new LineSymbol(line);

            Assert.True(ls.ToString().Equals("ax+2y+3=0"));
            ls.OutputType = LineType.SlopeIntercept;
            Assert.True(ls.ToString().Equals("y=(-a)/2x-1.5"));
        }
예제 #3
0
        public void Test_SlopeIntercept_1()
        {
            //general form -> slope intercept form
            double a    = 1.0d;
            double b    = 2.0d;
            double c    = 3.0d;
            var    line = new Line(a, b, c);

            Assert.True(line.Concrete);
            Assert.True(line.InputType == LineType.GeneralForm);

            var ls = new LineSymbol(line);

            Assert.True(ls.ToString().Equals("x+2y+3=0"));
            ls.OutputType = LineType.SlopeIntercept;
            Assert.True(ls.ToString().Equals("y=-0.5x-1.5"));
        }
예제 #4
0
        public void Test_Line_1()
        {
            var line = new Line(3.0, 1.0, 1.0);

            line.Label = "A";
            var    lineSymbol = new LineSymbol(line);
            string str        = lineSymbol.ToString();

            Assert.True(str.Equals("A(3x+y+1=0)"));

            Expr expr = lineSymbol.ToExpr();
        }
예제 #5
0
        public void test_symbolic_1()
        {
            //x+2y+3=0
            var    line       = new Line(1, 2, 3);
            var    lineSymbol = new LineSymbol(line);
            string str        = lineSymbol.ToString();

            Assert.True(str.Equals("x+2y+3=0"));

            //-x+2y+3=0
            line       = new Line(-1, 2, 3);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("-x+2y+3=0"));

            //x+y+1=0
            line       = new Line(1, 1, 1);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("x+y+1=0"));

            //x-y+1=0
            line       = new Line(1, -1, 1);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("x-y+1=0"));

            //x-3y-2=0
            line       = new Line(1, -3, -2);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("x-3y-2=0"));

            //x=0
            line       = new Line(1, 0, 0);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("x=0"));

            //y=0
            line       = new Line(0, 1, 0);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("y=0"));
        }
예제 #6
0
        public void test_symbolic_1()
        {
            //x+2y+3=0
            var line = new Line(1, 2, 3);
            var lineSymbol = new LineSymbol(line);
            string str = lineSymbol.ToString();
            Assert.True(str.Equals("x+2y+3=0"));

            //-x+2y+3=0
            line = new Line(-1, 2, 3);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("-x+2y+3=0"));

            //x+y+1=0
            line = new Line(1, 1, 1);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x+y+1=0"));

            //x-y+1=0
            line = new Line(1, -1, 1);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x-y+1=0"));

            //x-3y-2=0
            line = new Line(1, -3, -2);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x-3y-2=0"));

            //x=0
            line = new Line(1, 0, 0);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x=0"));

            //y=0
            line = new Line(0, 1, 0);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("y=0"));
        }
예제 #7
0
        public void test_symbolic_2()
        {
            //ax+2y-1=0
            var    variable   = new Var('a');
            var    line       = new Line(variable, 2, -1);
            var    lineSymbol = new LineSymbol(line);
            string str        = lineSymbol.ToString();

            Assert.True(str.Equals("ax+2y-1=0"));

            //x+by+c=0
            var variable2 = new Var('b');
            var variable3 = new Var('c');

            line       = new Line(1, variable2, variable3);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("x+by+c=0"));

            //ax=0
            line       = new Line(variable, 0, 0);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("ax=0"));

            //by+3=0
            line       = new Line(0, variable2, 3);
            lineSymbol = new LineSymbol(line);
            str        = lineSymbol.ToString();
            Assert.True(str.Equals("by+3=0"));

            //x-by+1=0 => not allowed -> Exception

            /*   var term = new Term(Expression.Multiply,
             *     new Tuple<object, object>(-1, variable2));
             * line = new Line(1, term, 3);
             * lineSymbol = new LineSymbol(line);
             * str = lineSymbol.ToString();
             * Assert.True(str.Equals("x+(-1*b)y+3=0"));*/
        }
예제 #8
0
 public static Expr ToExpr(this LineSymbol ls)
 {
     return(Text.Convert(ls.ToString()));
 }
예제 #9
0
        //forward solving
        public static void FromLineToIntercept(LineSymbol ls, EqGoal goal)
        {
            var line = ls.Shape as Line;

            Debug.Assert(line != null);
            var    lst              = new List <TraceStep>();
            string step1metaRule    = "Given the line slope intercept form y=mx+K, the y-intercept is K.";
            string step1AppliedRule = String.Format("Given line slope-intercept form {0}, the slope is {1}.", ls.ToString(), ls.SymIntercept);

            string kc = GeometryScaffold.KC_LineInterceptForm;



            var ts = new TraceStep(ls, goal, kc, step1metaRule, step1AppliedRule);



            lst.Add(ts);
            var strategy = strategy_si_intercept;
            var tuple    = new Tuple <object, object>(strategy, lst);

            goal.Traces.Add(tuple);
        }
예제 #10
0
        public void test_symbolic_2()
        {
            //ax+2y-1=0
            var variable = new Var('a');
            var line = new Line(variable, 2, -1);
            var lineSymbol = new LineSymbol(line);
            string str = lineSymbol.ToString();
            Assert.True(str.Equals("ax+2y-1=0"));

            //x+by+c=0
            var variable2 = new Var('b');
            var variable3 = new Var('c');
            line = new Line(1, variable2, variable3);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x+by+c=0"));

            //ax=0
            line = new Line(variable, 0, 0);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("ax=0"));

            //by+3=0
            line = new Line(0, variable2, 3);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("by+3=0"));

            //x-by+1=0 => not allowed -> Exception
         /*   var term = new Term(Expression.Multiply,
                new Tuple<object, object>(-1, variable2));
            line = new Line(1, term, 3);
            lineSymbol = new LineSymbol(line);
            str = lineSymbol.ToString();
            Assert.True(str.Equals("x+(-1*b)y+3=0"));*/
        }
예제 #11
0
        public void Test_SlopeIntercept_2()
        {
            //general form -> slope intercept form
            var a = new Var('a');
            double b = 2.0d;
            double c = 3.0d;
            var line = new Line(a, b, c);
            Assert.False(line.Concrete);
            Assert.True(line.InputType == LineType.GeneralForm);

            var ls = new LineSymbol(line);
            Assert.True(ls.ToString().Equals("ax+2y+3=0"));
            ls.OutputType = LineType.SlopeIntercept;
            Assert.True(ls.ToString().Equals("y=(-a)/2x-1.5"));
        }
예제 #12
0
        public void Test_SlopeIntercept_1()
        {
            //general form -> slope intercept form
            double a = 1.0d;
            double b = 2.0d;
            double c = 3.0d;
            var line = new Line(a, b, c);

            Assert.True(line.Concrete);
            Assert.True(line.InputType == LineType.GeneralForm);

            var ls = new LineSymbol(line);
            Assert.True(ls.ToString().Equals("x+2y+3=0"));
            ls.OutputType = LineType.SlopeIntercept;
            Assert.True(ls.ToString().Equals("y=-0.5x-1.5"));
        }
예제 #13
0
        public void test_symbolic_label()
        {
            //ax+2y-1=0
            var variable = new Var('a');
            var line = new Line(variable, 2, -1);
            var lineSymbol = new LineSymbol(line);
            string str = lineSymbol.ToString();
            Assert.True(str.Equals("ax+2y-1=0"));

            line.Label = "M";
            Assert.True(lineSymbol.ToString().Equals("M(ax+2y-1=0)"));
        }
예제 #14
0
        public void Test_Line_1()
        {
            var line = new Line(3.0, 1.0, 1.0);
            line.Label = "A";
            var lineSymbol = new LineSymbol(line);
            string str = lineSymbol.ToString();

            Assert.True(str.Equals("A(3x+y+1=0)"));

            Expr expr = lineSymbol.ToExpr();
        }
예제 #15
0
        //forward solving
        public static void FromLineToIntercept(LineSymbol ls, EqGoal goal)
        {
            var line = ls.Shape as Line;
            Debug.Assert(line != null);
            var lst = new List<TraceStep>();
            string step1metaRule = "Given the line slope intercept form y=mx+K, the y-intercept is K.";
            string step1AppliedRule = String.Format("Given line slope-intercept form {0}, the slope is {1}.", ls.ToString(), ls.SymIntercept);

            string kc = GeometryScaffold.KC_LineInterceptForm;



            var ts = new TraceStep(ls, goal, kc, step1metaRule, step1AppliedRule);




            lst.Add(ts);
            var strategy = strategy_si_intercept;
            var tuple = new Tuple<object, object>(strategy, lst);
            goal.Traces.Add(tuple);
        }