File Exchange

image thumbnail

Conics intersection

version 1.5 (6.54 KB) by

Given the homogeneous matrices of two conics it recovers the (up to) four intersection points



View License

The homogeneous representation of a conic is a matrix
 m = [A C D; C B E; D E F] that represents the equation
 A x^2 + B y^2 + 2C xy + 2D x + 2Ey + F = 0
Given two matrix E1 and E2 representing two conics, the code will detect all their intersections.

For instance:
%a circle centered in the origin
E1 = [1 0 0; 0 1 0; 0 0 -3]

%an ellipse centered in the origin
E2 = [1 0 0; 0 3 0; 0 0 -6]

%get the four homogeneous intersections
P = intersectConics(E1, E2)

%plot the normalized points
plot(P(1,:) ./ P(3,:) , P(2,:) ./ P(3,:), 'ro');

For more info:
and a detailed example describing the method:

A C++ open souce implementation is also present at

If this code was useful, please consider a donation:
Bitcoin: 3BUD7cEnbpp15hZXbPZpdgnH11FAV1kvfi

Comments and Ratings (4)


wenbo (view profile)

seems it's not working on the following case:

0.3xy + 0.6y - 0.8 =0

the codes generates different plots compared with Wolfram


Shahab (view profile)


do (view profile)

I did make a mistake. The matrix of the second conic was wrong so your code cannot find the intersections. I checked my code and I found that the matrix of the second conic should be
E2 =[ -0.1642 0 0.1642;
         0 8.8358 -15.4627;
      0.1642 -15.4627 26.3578]

After receiving your email, I checked my code and corrected the second matrix. YOUR CODE WORKED PERFECTLY AND GAVE THE EXACT SOLUTION. Here is the result.

Thank you very much for sharing your code and I really appreciate your kindness to reply my email and help me solve the problem.


do (view profile)

the code doesn't work. I tried with two conics having the matrix

E1 =[ 8.5914 0 -15.0350
         0 -0.4086 0.4086
      -15.0350 0.4086 24.5709]

E2 =[ 8.8358 0 -15.4627
         0 -0.1642 0.1642
     -15.4627 0.1642 26.3578]

but the result is an empty intersection matrix. Though these two conics have 4 intersections as you can see in the figure I wrote in Matlab



added C++ link


summary update


added case for linear equations


v.1.0.3: bug fixes (degenerate case)


changed URL

MATLAB Release
MATLAB 7.6 (R2008a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video