示例#1
0
        public IFractal CreateFractal(FractalTypes fractalTypeIn, EquationTypes equationTypeIn)
        {
            IEquation aEquation = null;

            if (equationTypeIn != EquationTypes.None)
            {
                aEquation = myEquationFactory.CreateEquation(equationTypeIn);
            }

            switch (fractalTypeIn)
            {
            case FractalTypes.NewtonFractal:
                return(new NewtonFractal(aEquation));

            case FractalTypes.MandelbrotFractal:
                return(new MandelbrotSet(aEquation));

            case FractalTypes.KochSnowflake:
                return(new KochSnowflake());

            case FractalTypes.PythagorasTree:
                return(new PythagorasTree());

            default:
                throw new FractalObserverException("Unknown fractal type!");
            }
        }
示例#2
0
        static void ReturnResult(EquationTypes type, double[] roots)
        {
            if (type == EquationTypes.MayHaveOneOrTwoRoots)
            {
                Console.WriteLine("Solved successfully! Equation is quadratic has two roots: \n");

                Console.WriteLine("{0} and {1}\n", roots[0], roots[1]);
            }
            else if (type == EquationTypes.DegenerateEquation)
            {
                Console.WriteLine("Solved successfully! Equation is linear and has one root: \n");
                Console.WriteLine("{0}\n", roots[0]);
            }
        }
示例#3
0
        //To check the equation type and use the switch in stringToCode before any str actually reaches the compiler. Instead of each button having to set the equationType seperately.
        public void EquationTypeCheck(string str)
        {
            if (boolEuro)
            {
                equationType = EquationTypes.Euro;
            }
            else if (str.IndexOfAny(chrNeedsDoubleSymbols) != -1)
            {
                equationType = EquationTypes.Double;
            }
            else
            {
                equationType = EquationTypes.Int;
            }

            EquationTypeSwitch(equationType);
        }
示例#4
0
        public static double[] FindRoots(EquationTypes type, double discriminant, double a, double b, double c)
        {
            if (type == EquationTypes.MayHaveOneOrTwoRoots)
            {
                double x2 = (-b + Math.Sqrt(discriminant)) / 2.0 / a;
                double x1 = (-b - Math.Sqrt(discriminant)) / 2.0 / a;
                return(new double[] { x1, x2 });
            }

            if (type == EquationTypes.DegenerateEquation)
            {
                double x1 = -c / b;
                return(new double[] { x1 });
            }
            else
            {
                return new double[] { }
            };
        }
示例#5
0
        public void EquationTypeSwitch(EquationTypes x)
        {
            switch (x)
            {
            case EquationTypes.Double:
                strVarX = "double"; strVarY = "(double)";
                break;

            case EquationTypes.Euro:
                strVarX = "double"; strVarY = "(double)";
                break;

            case EquationTypes.Int:
                strVarX = "int"; strVarY = "(int)";
                break;

            default:
                strVarX = "int"; strVarY = "";
                break;
            }
        }
示例#6
0
        public IEquation CreateEquation(EquationTypes equationTypeIn)
        {
            switch (equationTypeIn)
            {
            case EquationTypes.z2:
                return(new EquationZ2());

            case EquationTypes.z2Minus1:
                return(new EquationZ2Minus1());

            case EquationTypes.z3Minus1:
                return(new EquationZ3Minus1());

            case EquationTypes.z3Minusz:
                return(new EquationZ3MinusZ());

            case EquationTypes.z3Minus2zPlus2:
                return(new EquationZ3Minus2zPlus2());

            default:
                throw new FractalObserverException("Unknown Equation type :" + equationTypeIn + "!");
            }
        }
示例#7
0
        static void Main(string[] args)
        {
            var           input        = GetInputs();
            var           parsed_input = ParseInput(input);
            double        a            = parsed_input[0];
            double        b            = parsed_input[1];
            double        c            = parsed_input[2];
            EquationTypes type         = CheckEquationType(a, b, c);
            double        D            = GetDiscriminant(a, b, c);

            if (type == EquationTypes.NoRoots)
            {
                Console.WriteLine("Equation is linear and has no roots.\n");
            }

            if (type == EquationTypes.InfiniteNumberOfRoots)
            {
                Console.WriteLine("Equation has infinite number of roots.\n");
            }
            if (type == EquationTypes.DegenerateEquation)
            {
                ReturnResult(type, FindRoots(type, D, a, b, c));
            }

            if (type == EquationTypes.MayHaveOneOrTwoRoots)
            {
                if (ValidateDiscriminant(D))
                {
                    ReturnResult(type, FindRoots(type, D, a, b, c));
                }
                else
                {
                    Console.WriteLine("D < 0. Equation has no real roots.\n");
                }
            }
        }