public void Add3DGraph(string name, BasicFunction funcX, VectorFunc funcY, string xTitle, string yTitle)
        {
            GraphUnderlying graphU = new GraphUnderlying(xTitle, yTitle);

            graphU.AddTimeline(new Timeline("x " + name, Colors.Red));
            graphU.AddTimeline(new Timeline("y " + name, Colors.Green));
            graphU.AddTimeline(new Timeline("z " + name, Colors.Blue));

            BasicFunction xVec = () => funcY().X;
            BasicFunction yVec = () => funcY().Y;
            BasicFunction zVec = () => funcY().Z;

            var list = new List <BasicFunctionPair>();

            list.Add(new BasicFunctionPair()
            {
                XFunc = funcX, YFunc = xVec
            });
            list.Add(new BasicFunctionPair()
            {
                XFunc = funcX, YFunc = yVec
            });
            list.Add(new BasicFunctionPair()
            {
                XFunc = funcX, YFunc = zVec
            });

            AddGraph(graphU, list);
        }
        public void AddSingleGraph(string name, Timeline.GetValue funcX, Timeline.GetValue funcY, Color color, string xTitle, string yTitle)
        {
            GraphUnderlying graphU = new GraphUnderlying(xTitle, yTitle);

            graphU.AddTimeline(new Timeline(name, funcX, funcY, color));
            AddGraph(new Graph(graphU));
        }
        public void Add3DGraph(string name, Timeline.GetValue funcX, VectorFunc funcY, string xTitle, string yTitle)
        {
            GraphUnderlying graphU = new GraphUnderlying(xTitle, yTitle);

            graphU.AddTimeline(new Timeline("x " + name, funcX, (() => funcY().X), Colors.Red));
            graphU.AddTimeline(new Timeline("y " + name, funcX, (() => funcY().Y), Colors.Green));
            graphU.AddTimeline(new Timeline("z " + name, funcX, (() => funcY().Z), Colors.Blue));
            AddGraph(new Graph(graphU));
        }
        public void AddGraph(GraphUnderlying graph, IEnumerable <BasicFunctionPair> functions)
        {
            Graph newGraph = new Graph(graph);

            void function(DataSource ds)
            {
                foreach (var func in functions)
                {
                    ds.AddData(func.XFunc());
                    ds.AddData(func.YFunc());
                }
            }

            updatingCollection.AddContainer(new UpdatingContainer(graph, function));
            updatingFunctions.AddFunction(function);
            Graphs.AddGraph(newGraph);
        }
        public void AddSingleGraph(string name, Color color, BasicFunction xFunc, BasicFunction yFunc,
                                   string xAxis, string yAxis)
        {
            var gu       = new GraphUnderlying(xAxis, yAxis);
            var timeline = new Timeline(name, color);

            gu.AddTimeline(timeline);
            Graph graph = new Graph(gu);

            void function(DataSource ds)
            {
                ds.AddData(xFunc());
                ds.AddData(yFunc());
            }

            updatingCollection.AddContainer(new UpdatingContainer(gu, function));
            updatingFunctions.AddFunction(function);
            Graphs.AddGraph(graph);
        }
        public void AddToGraph(int index, string name, Timeline.GetValue funcX, Timeline.GetValue funcY, Color color)
        {
            GraphUnderlying graphU = toUpdate[index] as GraphUnderlying;

            graphU.AddTimeline(new Timeline(name, funcX, funcY, color));
        }