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); } } }
void OnEnable() { currProcess = FunctionProcess.UNDRAWN; switch (funcType) { case FunctionType.DISCONTINUOUS: line = new DiscontinuousLine(currColor); break; case FunctionType.CONTINUOUS: line = new ContinuousLine(currColor); break; } }