public void EvaluatePoints() { for (int x = 0; x < points.GetLength(0); x++) { for (int y = 0; y < points.GetLength(0); y++) { try { var xVal = startingPoint.X + x * dx; var yVal = startingPoint.Y + y * dx; var zVal = zEvaluator.Evaluate(xVal, yVal); points[x, y] = new ThreeDimensionalPoint(xVal, yVal, zVal); } catch { // point is mathematically undefined. points[x, y] = null; } } } }