A conic is a curve obtained as the intersection of the surface of a cone with a plane.
If I look at the conicae from the top of the cone, they all seem circular.
 
That is why you can not distinguish the type of conic that you are observing if you
do not take into account the point of view (see).
 
a*x^2 + b*x*y + c*y^2 + d*x + e*y + f = 0, with at least one between a, b and c other
than 0, in the plane x,y is a conic (see).  Let Q = b^2-4*a*c;
if Q = 0 is a parabola, if Q > 0 is an hyperbola, if Q <0 is an ellipse.
Example:
 
F = function(x,y) 4/3*x^2+x*y/2+y^2-7*x-8*y-32
PLANE(-20,20, -20,20); CURVE(F, "blue")     # I change the scale ...
 
            
 
It's an ellipse. And in fact (1/2)^2-4*4/3*1 = -5.083333 < 0
 
I can also study it using the Conic command:
conic()
#Use  Conic(w)  where w is c(a,b,c,d,e,f)  for  a*x^2+b*x*y+c*y^2+d*x+e*y+f = 0 
U = c(4/3,1/2,1,-7,-8,-32); Conic(U)
#C1=function(x,y)  1.333333 * x^2 + 0.5 * x*y + 1 * y^2 + -7 * x + -8 * y + -32 
#or:   4/3 * x^2 + 1/2 * x*y + 1 * y^2 + -7 * x + -8 * y + -32 
#ellipse;   xC and yC are: 
#center:  ( 1.967213 , 3.508197 ) 
#center:  ( 120/61 , 214/61 ) 
#In WoframAlpha put 
#focus of  4/3 * x^2 + 1/2 * x*y + 1 * y^2 + -7 * x + -8 * y + -32 =0 
#Then you have the length of the string that draws the Ellipse with 
#StringE(xF1,yF1, xF2,yF2)
# C1, xC, yC are automatically defined
PLANE(-10,10, -5,15)
CURVE(C1,"blue"); POINT(xC,yC,"magenta")
# I put "focus ..." in WoframAlpha, choose "plaintext", copy and paste, with #
# (4.32758, -0.902184) | (-0.393151, 7.91858)
xF1=4.32758; yF1=-0.902184; xF2=-0.393151; yF2=7.91858
POINT(xF1,yF1,"red"); POINT(xF2,yF2,"red")
l2p(xF1,yF1,xF2,yF2, "red")            # l2p is a thin line between the 2 points (see)
 
            
 
text(1.5,2,"C"); text(-1.5,7,"F1"); text(3,-2,"F2")
# Then (picture on the right) I can:
StringE(xF1,yF1,xF2,yF2)
# 15.63226              sum of distances focus1-curve-focus2
PLANE(-10,10, -5,15); CURVE(C1,"blue"); POINT(xF1,yF1,"red"); POINT(xF2,yF2,"red")
# I trace one of the point with y=10:
K1 = function(x) F(x,10); solution(K1,0, 3,5)
# 3.842333
POINT(solution(K1,0, 3,5),10, "black")
polyl(c(xF1,solution(K1,0, 3,5),xF2), c(yF1,10,yF2), "black")
# Now, I can trace the ellipse even in this way:
K = function(x,y) point_point(xF1,yF1,x,y)+point_point(xF2,yF2,x,y)-StringE(xF1,yF1,xF2,yF2)
CUR(K,"red")
 
# If you want to see how to study the Colosseum see here.
 
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
Let's look at another example:
4/3*x^2-y^2+x*y/2-7*x-8*y-32 = 0
 
V = c(4/3,1/2,-1,-7,-8,-32); Conic(V)
#C1=function(x,y)  1.333333 * x^2 + 0.5 * x*y + -1 * y^2 + -7 * x + -8 * y + -32 
#or:   4/3 * x^2 + 1/2 * x*y + -1 * y^2 + -7 * x + -8 * y + -32 
#hyperbola;   xC and yC are: 
#center:  ( 3.223881 , -3.19403 ) 
#center:  ( 216/67 , -214/67 ) 
#asymptotes: 
#C2=function(x,y)  1.333333 * (x-xC)^2 + 0.5 * (x-xC)*(y-yC) + -1 * (y-yC)^2 
#or:   4/3 * (x-xC)^2 + 1/2 * (x-xC)*(y-yC) + -1 * (y-yC)^2 
#In WoframAlpha put 
#focus of  4/3 * x^2 + 1/2 * x*y + -1 * y^2 + -7 * x + -8 * y + -32 =0 
PLANE(-10,15, -15,10); CURVE(C1,"blue")
POINT(xC,yC,"seagreen"); CUR(C2,"red"); POINT(xC,yC,"seagreen")
# I put "focus ..." in WoframAlpha, choose "plaintext", copy and paste, with #
# (-3.95779, -3.95486) | (10.4056, -2.4332)
xF1=-3.95779; yF1=-3.95486; xF2=10.4056; yF2=-2.4332
POINT(xF1,yF1,"red")
POINT(xF2,yF2,"red")
l2p(xF1,yF1,xF2,yF2, "seagreen")
 
                                
 
text(3,-1,"C",cex=0.8); text(-3.4,-2.5,"F1",cex=0.8); text(12,-3.8,"F2",cex=0.8)
 
It's a hyperbola. And in fact (1/2)^2+4*4/3*1 > 0
 
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
Let's look at another example:
x^2+y^2-2*x*y+4*x+4 = 0
 
W = c(1,-2,1,4,0,4); Conic(W)
#C1=function(x,y)  1 * x^2 + -2 * x*y + 1 * y^2 + 4 * x + 0 * y + 4 
#parabola;   xV and yV are: 
#vertex:  ( -1.25 , -0.25 ) 
#vertex:  ( -5/4 , -1/4 ) 
#axes: 
#C2=function(x,y)  1 * x + 1 * y + 1 
#In WoframAlpha put 
#focus of  1 * x^2 + -2 * x*y + 1 * y^2 + 4 * x + 0 * y + 4 =0
PLANE(-3,0, -3,0); CURVE(C1, "blue")
CUR(C2, "red"); POINT(xV,yV, "brown")
# I put "focus ..." in WoframAlpha, choose "plaintext", copy and paste, with #
# (-3/2, -1/2) = (-1.5, -0.5)
xF=-3/2; yF=-1/2; POINT(xF,yF, "red")
 
          
 
text(-1.03,-0.25,"V",cex=0.8); text(-1.65,-0.36,"F",cex=0.8)
 
It's a parabola. And in fact (-2)^2-4*1*1 = 0
 
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
In the case where the conic is the empty set (eg  x^2 + y^2 + 1 = 0) or a point
(eg  x^2 + y^2 = 0) obviously no graph is obtained.
 
For other ways to draw curves see here.
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
If I want, I can study the ellipse more thoroughly with WolframAlpha
If I put   4/3*x^2+y^2+x*y/2-7*x-8*y-32 = 0   and click  [Properties]
I have the list of properties. To better use this list, go with the mouse under the
box and click [A Plaintext] to better copy the values:

ellipse
foci | (4.32758, -0.902184) | (-0.393151, 7.91858)
vertices | (5.65532, -3.38309) | (-1.72089, 10.3995)
center | (1.96721, 3.5082)
semimajor axis length | 7.81613
semiminor axis length | 6.00576
area | 147.472
perimeter | 43.6092
focal parameter | 7.21054
eccentricity | 0.639994

NOTE: you can get more detailed but less simple information using "focus ...." (see)

         

When the eccentricity is 0 the ellipse is a circle, when it is 1 is reduced to a segment.
[The focal parameter of the ellipse - a little used parameter - is, referring to the figure,
 QC^2/√(VC^2-QC^2) ]

Let's look at another way (always using WolframAlpha's information): I make a
scale transformation of a circle centered in the origin, taking into account
the relationship between the semi-axes; move it by taking into account the
center and rotate it by taking into account the coordinates of the foci.

PLANE(-10,10, -5,15)
C = c(1.96721, 3.5082); R = 7.81613
POINT(C[1],C[2], "green")
# The circle centered in the origin with radius = major semi-axis
K = function(x,y) x^2+y^2-R^2
# I crushed it so as to give it the shape of the ellipse
# ("-1" color does not trace the curve; then I copy the curve to U)
ratio = 6.00576/7.81613
multra(K, 1,ratio, 0,0, -1); U = ZZZ
# Then I rotate it, move it, carrying O to C, and draw it.
D=c(0,A[2])
rottra(U, angle(D,A,B),C[1],C[2],"seagreen")

                       
 
# I can find the parametric equations of the ellipse. They are:
X = function(t) a*cos(t)*cos(A)-b*sin(t)*sin(A)+xC
Y = function(t) a*cos(t)*sin(A)+b*sin(t)*cos(A)+yC
# if it is rotated by an angle A (form the x axis) and a and b are the semiaxis
PLANE(-10,10, -5,15)
a=7.81613; b=6.00576
# We remember that
xF1=4.32758; yF1=-0.902184; xF2=-0.393151; yF2=7.91858; xC=120/61; yC=214/61 
inclination(xF1,yF1, xF2,yF2); A=inclination(xF1,yF1, xF2,yF2)/180*pi
# -61.84503
param(X,Y, 0,2*pi, "seagreen")
 
# Then I can draw the tangent lines (see).  Some examples:
t = 90/180*pi; POINT(X(t),Y(t),"blue")
d = param_incl(X,Y,t); d
# -61.84503
point_inclina(X(t),Y(t),d, "blue")
t = 180/180*pi; POINT(X(t),Y(t),"red"); d = param_incl(X,Y,t); d
# 28.15497
point_inclina(X(t),Y(t),d, "red")
t = 30/180*pi; POINT(X(t),Y(t),"brown"); d = param_incl(X,Y,t); d
# 65.07567
point_inclina(X(t),Y(t),d, "brown")
                 
 
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
As before, I can study the hyperbola 4/3*x^2-y^2+x*y/2-7*x-8*y-32=0  with WolframAlpha:
 
            
 
hyperbola
foci | (-3.95779, -3.95486) | (10.4056, -2.4332)
vertices | (-1.48632, -3.69303) | (7.93408, -2.69503)
center | (3.22388, -3.19403)
semimajor axis length | 4.73655
semiminor axis length | 5.45163
focal parameter | 4.11533
eccentricity | 1.52471
asymptotes | y = 1.43145 x - 7.80887 | y = -0.931454 x - 0.191134

[The focal parameter of the hyperbola - a little used parameter - is, referring to the figure,
 KV^2/√(KV^2+CV^2)= 5.45163^2/√(4.73655^2+5.45163^2) ]

If desired, I can find the angle formed by the asymptotes, using the inclination2
command, which associates inclination to the slope:

inclination2(1.43145)
# [1] 55.06215    the inclination of a asymptote
inclination2(-0.931454)
# [1] -42.96746   the inclination of the other
inclination2(1.43145)-inclination2(-0.931454)
# [1] 98.02961  an angle (in ) formed by two asymptotes (the one that contains
#                      two branches of the curve); the other one is 180 minus this value

Hyperboles have the characteristic of having a constant difference (in absolute value)
between the distances of their points from the foci. Let's verify this in two points:

         
# foci:
A=c(-3.95779, -3.95486); B=c(10.4056, -2.4332)
POINT(A[1],A[2], "seagreen"); POINT(B[1],B[2], "seagreen")
u=8; h <- function(x) F(x,u); q=solution(h,0, 10,13); q; POINT(q,u, "red")
# [1] 12.13707   x of the point with y=8 on the right
POINT(A[1],A[2], "seagreen"); POINT(B[1],B[2], "seagreen")
line(A[1],A[2],q,u, "seagreen"); line(B[1],B[2],q,u, "seagreen")
point_point(A[1],A[2],q,u)-point_point(B[1],B[2],q,u)
# [1] 9.473119  the difference between AP and BP
u=-10; h <- function(x) F(x,u); q=solution(h,0, -5,-2.5); q; POINT(q,u, "red")
# [1] -3.197402   x of the point with y=10 on the left
line(A[1],A[2],q,u, "magenta"); line(B[1],B[2],q,u, "magenta")
point_point(A[1],A[2],q,u)-point_point(B[1],B[2],q,u)
# [1] -9.473119  the difference between AP and BP

To the right, the curve drawn as the set of the points whose distances from the foci have
difference that (in absolute value) is 9.473119:

K = function(x,y) abs(point_point(x,y,A[1],A[2])-point_point(x,y,B[1],B[2]))-9.473119
PLANE(-10,15, -15,10); CURVE(K, "magenta")
 
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
With WolframAlpha, for the parabola x^2+y^2-2*x*y+4*x+4=0 we have:

parabola
focus | (-3/2, -1/2) = (-1.5, -1/2)
vertex | (-5/4, -1/4) = (-1.25, -1/4)
semi-axis length | 1/(2*sqrt(2)) = 0.353553  [ FV nella figura = 
                                              (distanza tra F e la direttrice)/2 [
focal parameter | 1/sqrt(2) = 0.707107
eccentricity | 1
directrix | y = -x - 1

[The focal parameter of the parabola - a little used parameter - is, referring to the figure,
 2 * semi-axis ]

       

The parables have equal distances of their points from the focus and the directrix.
Let's check it out (getting the chart below to the left).

    

PLANE(-3,0, -3,0); CURVE(H, "brown")
V = c(-5/4, -1/4); F = c(-3/2,-1/2)
f = function(x) -x-1
POINT(F[1],F[2], "red"); graph1(f, -3,0, "red")
# I take a point of the parable, eg. the one of ordinate -2
u=-2; h <- function(x) H(x,u); q=solution(h,0, -2,-1.1); q; POINT(q,u, "red")
# [1] -1.171573   # x of the point with y = -2
# where the prependicula intersects the line
point_line2(q,u, -1,0,0,-1)
# [1] -0.08578644 -0.91421356
segm(q,u, -0.08578644, -0.91421356, "green")
segm(q,u, F[1],F[2], "green")
# The distances:
point_point(q,u, F[1],F[2])
# [1] 1.535534
point_line(q,u, -1,0,0,-1)
# [1] 1.535534
# OK

I can control the thing by  directly drawing (using this feature) the parable:

W = function(x,y) point_point(x,y,F[1],F[2])-point_line(x,y, -1,0,0,-1)
CURVE(W, "blue")

I got the blue figure above right. OK.

Other examples of use