a = -2;
b = -2;
c = -2;
d = -2;
e = -2;
f = 5;
[y, x] = meshgrid(-10:10,-10:10);
fun = (a.*x.^2+b.*x.*y+c.*y.^2+d.*x+e.*y+f);
z_cross = - 100
y_vals = -15:0.25:15;
x_cross1 = real((d.*(-1.0./2.0)+sqrt(a.*f.*-4.0+a.*z_cross.*4.0+d.^2+b.^2.*y_vals.^2-a.*e.*y_vals.*4.0+b.*d.*y_vals.*2.0-a.*c.*y_vals.^2.*4.0).*(1.0./2.0)-b.*y_vals.*(1.0./2.0))./a);
x_cross2 = real((d.*(-1.0./2.0)-sqrt(a.*f.*-4.0+a.*z_cross.*4.0+d.^2+b.^2.*y_vals.^2-a.*e.*y_vals.*4.0+b.*d.*y_vals.*2.0-a.*c.*y_vals.^2.*4.0).*(1.0./2.0)-b.*y_vals.*(1.0./2.0))./a);
x_cross = [x_cross1 x_cross2];
y_cross1 = real((e.*(-1.0./2.0)+sqrt(c.*f.*-4.0+c.*z_cross.*4.0+e.^2+b.^2.*x_cross1.^2+b.*e.*x_cross1.*2.0-c.*d.*x_cross1.*4.0-a.*c.*x_cross1.^2.*4.0).*(1.0./2.0)-b.*x_cross1.*(1.0./2.0))./c);
y_cross2 = real((e.*(-1.0./2.0)-sqrt(c.*f.*-4.0+c.*z_cross.*4.0+e.^2+b.^2.*x_cross2.^2+b.*e.*x_cross2.*2.0-c.*d.*x_cross2.*4.0-a.*c.*x_cross2.^2.*4.0).*(1.0./2.0)-b.*x_cross2.*(1.0./2.0))./c);
y_cross = [y_cross1 y_cross2];
z_cross = (a.*x_cross.^2+b.*x_cross.*y_cross+c.*y_cross.^2+d.*x_cross+e.*y_cross+f);
mesh(x,y,fun)
hold on
scatter3(x_cross,y_cross,z_cross,'r','LineWidth',2)
hold off