Exemplo n.º 1
0
        private void EvaluateIntersection(double i1, double i2)
        {
            if (ordered.Index(i1, 0) != ordered.Index(i2, 0))
            {
                int ia = ordered.Index(i1, 1);
                int ib = ordered.Index(i1, 0);

                double da1 = functions[ia].Evaluate(i1);
                double db1 = functions[ib].Evaluate(i1);

                double da2 = functions[ia].Evaluate(i2);
                double db2 = functions[ib].Evaluate(i2);

                if (IsInvalid(da1) || IsInvalid(db1) || IsInvalid(da2) || IsInvalid(db2))
                {
                    PlotArea();
                    return;
                }

                FunctionPoint root = FunctionLine.Intersection(i1, da1, db1, i2, da2, db2);

                if ((decimal)root.i >= (decimal)i1 && (decimal)root.i <= (decimal)i2)
                {
                    AddTopAreaPoint(root);
                }

                PlotArea();

                if ((decimal)root.i < (decimal)i2)
                {
                    AddTopAreaPoint(root.i, root.d);
                }
            }
        }
Exemplo n.º 2
0
    void OnEnable()
    {
        currProcess = FunctionProcess.UNDRAWN;

        switch (funcType)
        {
        case FunctionType.DISCONTINUOUS:
            line = new DiscontinuousLine(currColor);
            break;

        case FunctionType.CONTINUOUS:
            line = new ContinuousLine(currColor);
            break;
        }
    }