Figures
Abstract
Intersecting two conics is a classical problem that is frequently encountered in many different areas of science, engineering, and art. For example, under perspective projection (e.g., in camera images), any degree-two curve (a conic) or surface (a quadric) projects to a conic. This is important since polynomials of degree two are commonly used to approximate the contour or surface of many real-world objects. This manuscript describes a simple solution to the conic intersection problem using a change of projective coordinates. Exploiting the properties of self-polar triangles, we show how to reduce the task to simply solving an eigenvalue problem of degree three and a quadratic equation in one variable. The self-polar triangle method provides an attractive alternative to more common methods, especially in settings that require explicit algorithmic solutions.
Citation: Mancini M, Christian JA (2026) Easy conic intersection with the common self-polar triangle. PLoS One 21(7): e0340348. https://doi.org/10.1371/journal.pone.0340348
Editor: Pooya Sareh, Newcastle University, UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND
Received: May 3, 2025; Accepted: June 22, 2026; Published: July 17, 2026
Copyright: © 2026 Mancini, Christian. This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.
Data Availability: All relevant data are within the paper and its Supporting Information files.
Funding: The author(s) received no specific funding for this work.
Competing interests: The authors have declared that no competing interests exist.
Introduction
Conics are a ubiquitous shape in nature. In space, conics describe the shape of Keplerian orbits [1,2] and the rims of impact craters on celestial bodies [3]. On Earth, conics describe the shape of famous architectural works (e.g., the roof of the Tycho Brahe Planetarium in Copenhagen) and everyday objects (e.g., wheels, rim of a coffee mug, bottle caps). In biology, conics describe the cross-section of a blood vessel or the shape of the iris and pupil of the human eye. Although these (and other) real-world objects are not always perfect conics, this approximation is often quite good. Given the pervasive nature of conics in the world, it is common to desire knowledge of the intersection points of two such curves. For example, conic intersections are used to identify crater patterns on the lunar surface [4], detect the orientation of a face [5], or estimate camera attitude from 2D-to-3D point correspondences [6]. Regardless of the application, the study of this classical problem presents a number of delightful geometric results.
The intersection of two conics is simply the solution to a pair of degree two polynomials in two variables. Computing the solution to this problem is trivial in environments where modern computer algebra packages are available (e.g., Maple, Mathematica). Unfortunately, however, high-performance or safety-critical embedded systems—such as those encountered in many robotics or aerospace applications—are usually not permitted to rely on computer algebra softwares. Instead, explicit solutions with performance guarantees are required. When such explicit solutions are required, the most popular approach for intersecting two conics proceeds by (1) finding the degenerate conic consisting of two lines passing through the points of intersection and then (2) intersecting these lines with one of the conics [7,8]. There are also other approaches that make use of other methods, such as Gröbner bases [9], geometric algebra [10], or that reformulate the problem in terms of a degree-four equation in a single variable, which can then be solved analytically [11]. At some level of abstraction, all of these approaches solve the same fundamental problem and it is a small task to reinterpret any one method in terms of any of the others. Despite being equivalent, however, there are definite algorithmic advantages to the practical implementation of some interpretations.
In this work we consider a particular interpretation of the conic intersection problem that permits an especially simple algorithm that can be directly written into software. This interpretation is based on a convenient projective transformation built from the two conics’ common self-polar triangle.
The self-polar triangles of a conic are a well-studied topic with thorough discussions in modern textbooks [12,13]. The common self-polar triangle between two conics has recently been explored for camera calibration [14–16] and for computing the homography between two images of the same ellipse [17]. The algorithm presented in this work is built around a different use of the common self-polar triangle that has not yet appeared in the contemporary literature.
The notion that self-polar triangles may produce a transformation helpful for computing conic intersections is not new. Indeed, that the common self-polar triangle could be used to find conic intersections was suggested as early as the mid 1800s [18,19]. Nevertheless, these notions were never extended into practical algorithms and are not well-known outside of a few specialized corners of mathematics. To the best of the authors’ knowledge, more recent discussions of conic intersections by self-polar triangles than in Refs. [18,19] (which are in German, not English) are not amongst the corpus of commonly-available literature. This short article is intended to rescue this interpretation from (relative) obscurity and to show how it can be specialized into a practical and easy-to-implement algorithm for computing conic intersections. The algorithm presented here has been implemented in MATLAB and is available through the open-source SONIC toolkit [20] (The SONIC toolkit may be found at https://github.com/opnavlab/sonic).
Mathematic preliminaries
Consider a plane containing a conic in general position. Its equation can be written as a polynomial of degree two:
Using projective coordinates, the same equation can be recast in matrix form. In fact, if we let be the coordinates of a point in the projective plane, the previous equation can be expressed as
so that we can associate the conic to the conic matrix of ambiguous scale
We observe that the conic matrix is guaranteed to always be full-rank for any non-singular conic—including circles, ellipses, parabolas, and hyperbolas. The proportionality relationship captures the scale ambiguity of
since any non-zero scaling describes the same conic.
The matrix also defines a polarity relationship with respect to the conic. Recalling that both points and lines can be expressed as 3-tuples in the projective plane using homogeneous coordinates (see [12] for more details on the duality in
), any point
on the plane can be associated to its polar line
with respect to that conic according to
Similarly, if we let , any line
can be associated to its polar point
using
Change of projective coordinates
Consider any four points (i = 0, 1, 2, 3) in the projective plane, no three of which are collinear. Such a set of points can be used to define a new coordinate system in
. In fact, we can find a non-singular linear transformation that maps the reference points
,
,
and the unit point
to the four points
,
,
and
, respectively. This mapping is represented by the homography matrix
such that [12]
where are unknown scale factors that need to be determined. The further condition
fixes the scaling once the parameter has been specified. Taking advantage of our simple choices for
, the first of these two equations implies that the homography matrix
is
Selecting a scaling of , we can re-write Eq. (7) simply as [12]
which is the same as
Since ,
and
are not collinear, the matrix on the left-hand side is always invertible. Thus, we can solve directly for the
, which allows for the computation of
from Eq. (8). Given a point
expressed in the projective coordinate system defined by
, we can recover the corresponding coordinates
associated with the basis
by applying
Intersecting two conics using a self-polar triangle
In this section, we will show how to perform conic intersection using the concept of self-polar triangles. The main approach presented here is valid for any configuration where the two conics have at least one common self-polar triangle. This is almost always true in practice. The one exception is when the conics are tangent at a single point, but this special case is easily recognized and solved. The pseudocode for the corresponding algorithm is provided in Algorithm 1.
Two conics in general position
Given three points in the plane, they are said to form the vertices of a self-polar triangle with respect to a conic if the polar line of each vertex is the line passing through the remaining two vertices. Any four distinct points on a conic may be used to form a quadrangle. By constraining these points to be on a conic, it may be shown that the quadrangle’s diagonal triangle will be a self-polar triangle [12].
While there are an infinite number of self-polar triangles for a given conic (since there are an infinite number of quadrangles from 4-tuples of distinct points on the conic), two distinct conics intersecting in four distinct points (over the complex numbers) can have only one self-polar triangle in common. In other words, there are only three points in the projective plane that form a triangle that is self-polar for both the conics [12,13]. If we let these vertices be the reference points of a new projective coordinate system, the two conic equations are greatly simplified, and their intersection can be performed easily.
To visualize the common self-polar triangle, let ,
,
and
be the points of intersection of the two conics
and
. The vertices of the unique common self-polar triangle can be found by intersecting the lines joining non-consecutive sides of the quadrilateral
[12]. This is illustrated in Fig 1 for the case of four real intersection points.
When the vertices of a conic’s self-polar triangle are used as reference points of the projective coordinate system, the conic matrix is transformed to a diagonal matrix. This can be easily seen if we consider that the reference points in the new frame have coordinates
Since the line passing through and
has coordinates
and
, the polarity relationship imposes that
for all , that can only happen when
is diagonal. If a triangle is self-polar for two conics, the change of coordinates will simultaneously diagonalize the conic matrices.
In order to construct the matrix , we need to determine the vertices of the self-polar triangle
,
and
in the original coordinate system. Given the definition of self-polar triangle, we know that the polar line of any vertex passes through the other two. Since the triangle is self-polar for the two conics, this polarity relationship must hold for both, so that we have
Introduce the unknown scaling factor to remove the proportionality, yielding the eigenvalue problem
We can conclude that the vertices of the common self-polar triangle are the eigenvectors of the matrix . Once the coordinates of the reference points have been determined, we can freely set the unit point
so long as no three of these points are collinear.
These values of may be used to construct the homography
using the procedure from the Section Change of projective coordinates. After the transformation, the two conic matrices assume the form
and
so that the conic equations are, respectively
Their intersection is now easily found. From the left equation in Eq. (18) we have
that, substituted into the right equation in Eq. (18), gives
that is
Using Eq. (19) we can similarly write down an expression for
The four points of intersection (in the transformed space) are then found as
and we may convert them to the original coordinate system through
The procedure leading to the solution in Eq. (24) provides the intersection points of any pair of conics in general position. The special cases of conics tangent in one or two points can be easily identified and handled accordingly.
Two conics with two tangency points
Two conics do not always have a unique common self-polar triangle [13]. This occurs when two conics are tangent in two points. This case does not present a problem for the self-polar triangle method, as the number of common self-polar triangles is infinite and the algorithm continues to be valid. However, care must be taken in selecting the vertices of the self-polar triangle in a computational setting. Since all of the common self-polar triangles share one side, the output of the eigenvalue problem will necessarily provide two points on the common side. It is not necessarily true that the third point is the remaining vertex of the self-polar triangle. This issue can be easily solved by discarding one of the points of the shared side, and replacing it with the pole of the line joining the other two points.
Two conics with one tangency point
The other exception is represented by the case of two conics being tangent at one point (the other two intersections being either complex conjugates or real). In this case, the conics do not have any common self-polar triangle [13], as two of its vertices coincide, making the matrix on the left-hand side of Eq. (10) singular. When this happens, however, the two coinciding vertices lie at the double intersection point. This information may be used to determine the remaining points.
Assume that during the construction of the self-polar triangle we encounter the situation where two vertices coincide. In this case, we can set as one of those vertices, and re-define the other two reference points. In particular, we can choose
and
on the conic, and construct
as the meet of their polar lines. The effect of this mapping is to transform the equation of the conic
to the parabola
. The two points on the conic need not to be real, so we may obtain them by intersecting any line
with the conic. For example, intersecting the conic with one of the coordinate axes, we obtain
Now, we can determine the point using
This choice of points yields the matrix that transforms the conic
to
while the second matrix will transform such that . The remaining two intersection points are obtained by solving the quadratic equation
that give
Algorithm summary
A summary of the algorithm is provided in Algorithm 1, which reports all the steps that need to be considered in the implementation phase. Notice how the generic algorithm itself is limited to just a few lines of code, with most the steps being reserved to the handling of special conditions. A version of this algorithm is now available in the open-source SONIC toolkit [20].
Algorithm 1 Pseudocode for conic intersection
1: given conics and
2: compute the eigenvectors of
▷ Eq. (15)
3: if for some
then ▷ One tangency point
4: set , select
,
on the conic ▷ Eq. (25)
5: compute ▷ Eq. (26)
6: set , compute
▷ Eq. (10)
7: compute ▷ Eq. (8)
8: compute
9: compute ▷ Eq. (29)
10: compute
11: set ,
12: evaluate
13: output intersection points
14: else if then ▷ Two tangency points
15: set
16: end if
17: set and
such that
for
18: compute ▷Eq. (10)
19: compute ▷ Eq. (8)
20: compute and
▷ Eq. (16)
21: compute and
▷ Eq. (21), Eq. (22)
22: compute , j=a,b,c,d ▷ Eq. (23)
23: compute , j=a,b,c,d ▷ Eq. (24)
24: output intersection points , j=a,b,c,d
Comparison with the classic approach
It is insightful to compare the algorithm described in this work with a common solution from the literature. Since both algorithms analytically solve the same problem and produce the same result, our comparison focuses on the algorithmic differences between the two.
Supposing we wish to intersect the conics described by and
, the classic solution begins by solving the cubic equation
for . Each of the three roots of this cubic equation describes a degenerate conic with locus
which will pass through the points of intersection of the conics and
. Thus, since a degenerate conic consists of a pair of lines, the degenerate conic
may be split into two lines
and
. The desired points are provided by the intersection of these two lines with one of the original conics.
If and
are real and distinct, they can be determined utilizing the procedure outlined in Ref. [7]. This procedure begins by letting
be the adjugate of the degenerate conic locus
. If i is the index of a non-zero diagonal entry of
, we can define the vector
, where
is the i-th column of
and
is the i-th diagonal element. Then, we can construct the matrix
and select the two lines
and
as any non-zero row and column of
.
Moreover, as discussed within Ref. [7], this technique requires direct inspection of the entries of the degenerate conic matrix and is not universally valid. Specifically, the splitting procedure is not applicable when the degenerate conic consists of a double line, or a double point (i.e., two complex conjugate lines). In this case, either (1) a different conic splitting technique needs to be employed or (2) the algorithm should select a different solution of Eq. (30) for the construction of the matrix in Eq. (31).
Other techniques for splitting a conic are not necessarily more appealing in terms of number of computations. For example, we could define a change of coordinates for transforming the degenerate conic to a standard expression consisting of well-known degenerate lines, and determine the lines in the original coordinates by reverting the transformation (e.g., see Ref. [20]). However, since it is impossible to define a splitting operation without exceptions [7], all such procedures require handling of multiple conditional statements that considerably lengthen software implementations.
We emphasize that returning to Eq. (30) and selecting a different root for of is straightforward and it is possible that choosing another root will remove the necessity of handling multiple special cases. However, the identification of these special cases is not as straightforward as in the case of the solution based on the common self-polar triangle. Indeed, the self-polar triangle approach identifies the special cases directly in terms of the relative position of the two conics. This is done through direct residuals evaluation. Differently, the classic solution identifies special cases in terms of the relative position of auxiliary products (the degenerate lines) and allows the identification of such special cases only after many steps into the process of splitting the conic.
Numerical experiments demonstrate that the runtimes of the classical method and the proposed method are similar, with the self-polar triangle method usually being slightly faster. Moreover, the self-polar triangle method provides more geometric clarity, limits the calculation of parameters to only those necessary for solving the problem, and has fewer special cases requiring special treatment.
Numerical example
Three short experiments will show the application of the proposed technique for conic intersection to three different image analysis scenarios. A numerical experiment of the behavior of the algorithm near the tangency conditions is also provided. Algorithm runtime results are provided for each of these experiments.
Conic intersection for crater identification
Fig 2 shows a picture of a portion of lunar surface captured during the Clementine mission [22]. In the context of image-based spacecraft terrain relative navigation (TRN), the points of intersection of two or more craters (approximated as ellipses) in the image can be used to construct their invariants [4]. The calculation of the invariants is a key step in matching craters in the image to craters in a catalog. Once the desired craters have been fitted with conics, we can perform conic intersection using the self-polar triangle method.
Product ID LUB0280B.243 [21].
As an example, consider the conic matrices of the craters labeled with A and B in Fig 2:
Applying the steps summarized in Algorithm 1, we can calculate the homography matrix
which transforms the conic matrices to
Proceeding with the algorithm as described, we obtain the following real and complex intersection points
The reader may verify with a simple calculation that these points belong to the conics.
It is useful to compare the results of our method with the more classical conic intersection approach outlined in Ref. [7]. First, as expected, the numerical solution produced by both procedures is the same to within machine precision. Second, we observe the runtimes to be similar, but with the newly proposed method being slightly faster. Over 100,000 repetitions of this experiment, the average runtime obtained with the self-polar triangle method presented in this work was 0.027 ms, while the average runtime of the classic technique from Ref. [7] was 0.033 ms. The latter runtime depends on the specific implementation chosen for the conic splitting technique. The value reported was obtained implementing the splitting algorithm also utilized in the SONIC software [20], which guarantees that two lines are determined independently of their relative position.
Conic intersection for iris detection
When performing iris detection for face recognition, only the portion of the iris which is not covered by the eyelid should be considered [23], and pictures with small percentages of visible iris should be discarded [24]. In order to identify usable portions, however, the intersection between the iris and the eyelid needs to be determined first.
While the iris is usually considered circular, it may appear as elliptical in non-frontal pictures. Similarly, the eyelid is often approximated with a quadratic equation [25]. Therefore, determining the portion of visible iris requires nothing more than determining the intersection of two conics. For example, consider the right eye of Lisa Gherardini, in the Mona Lisa painting from Leonardo Da Vinci [26] in Fig 3. Points were sampled on the contour of the iris and upper eyelid and translated by the overall mean value of their coordinates to guarantee better numerical behavior. The translation was, respectively, of 3951.4 px and 2755.6 px for the u and v-coordinates. Conics were fit to these points using a simple least-squares approach. The resulting conics are shown on the right in Fig 3, and the corresponding conic matrices are
Right: overlay of the fitted conics (iris in red, eyelid in black). The pair of real conic intersection points are shown in green.
which provide the following real and complex intersection points
The two real-valued intersection points and
correspond to the green dots in Fig 3 after translation.
As before, the proposed method and the classical method from Ref. [7] produce the same solution to within numerical precision. The runtime trends are also the same. Over 100,000 repetitions of this experiment, the average runtime obtained with the self-polar triangle method presented in this work was 0.029 ms, while the average runtime of the classic technique from Ref. [7] was 0.038 ms.
Notice that at this point the center of the iris can be easily identified as pole of the line at infinity [12]
enabling easy identification of the angles between the intersection points and the horizontal axis, utilized in iris identification techniques.
Conic tangency in images of bubbles
It is not uncommon to observe bubbles in images of water and other fluids. These bubbles are often ellipsoidal in shape and their contours project to ellipses in an image. In this example we illustrate the utility of the proposed conic intersection algorithm for computing the tangency points between pairs two bubbles. Our specific example uses images of bubbles produced during the electrolysis of water in microgravity [27].
Consider, for example, the image from Supplementary Video 8 of Ref. [27] shown in Fig 4. After applying a translation of (728.44, 848.19) pixels to recenter the bubbles and improve numerical conditioning, the conic matrices (from left to right in Fig 5) are:
In the lower right view, three bubbles are tangent to each other.
The primes on the conic matrices indicate the use of shifted coordinates. The points of intersection for the left and middle conics CA and are
while the points of intersection between the middle and the right conic and
are
Adding the (728.44, 848.19) pixels back to these intersection points yields tangency points of
Over 100,000 repetitions of this experiment, the average runtime of the self-polar triangle method presented in this work was 0.076 ms, while the average runtime of the classic technique from Ref. [7] approach was 0.1 ms.
Algorithm behavior near tangency conditions
It is interesting to study the behavior of the proposed algorithm near the special case of a pair of conics with one or two tangency points. In particular, we may track the intersection points on the complex plane as the pair of conics transition from no physical intersection (i.e., complex-valued points) to tangency (i.e., repeated real-valued points) to distinct physical intersections (i.e., distinct real-valued points). This is done through two experiments. In each experiment we construct a root locus that tracks how the common roots of the polynomial equations evolve as the conics’ relative position changes.
In the first experiment, we consider a circle and an ellipse that share a common center. The experiment begins with the ellipse contained entirely within the circle. From this starting point, the major axis of the ellipse is gradually increased, as shown on the left in Fig 6. During the process, we draw the location of the first component of the four intersection points in the complex plane in Fig 7. At the beginning of the experiment, there is no intersection and we have a pair of complex conjugate roots (condition A). Then, as the ellipse grows and the two conics become tangent at two points, we the complex conjugate roots merge to form a repeated root on the real axis (condition B). Finally, as the major axis of the ellipse is increased further (with the two conics having four real distinct intersections) the two roots separate into two distinct points on the real axis (condition C). This shows a smooth transition from the generic case of four distinct intersection points to that of two coinciding ones, and vice-versa. The average runtime for this experiment was of 0.012 ms. Using the classic approach, the average runtime was of 0.041 ms.
A, four complex intersections; B, two tangency points; C, four real (distinct) intersections.
In the second experiment, we translate the internal ellipse in a direction parallel to its major axis, as shown on the right in Fig 6. The complex location of its intersection points is shown in Fig 8. As before, we begin with no physical intersection, corresponding to a pair of complex conjugate roots (condition A). When the two conics become tangent at one point, the two complex conjugate roots again merge into a repeated root on the real axis (condition B). Finally, as the conic is translated further, the repeated roots split into two distinct real roots (condition C). Once again, we observe a smooth transition from four distinct intersection points to a double point, and vice-versa. This suggests that the algorithm effectively handles transitions between edge cases without introducing unexpected behavior of the roots. The average runtime was of 0.026 ms compared with the 0.052 ms of the classic approach.
A, four complex intersections; B, one tangency points and two complex intersections; C, two real (distinct) intersections and two complex intersections.
Conclusions
Finding the intersection of two conics is a classical problem arising in science, engineering, and art. It is particularly pervasive in situations where image analysis is required. Although techniques already exist to solve this problem, a straightforwardly-implementable algorithm may also be built by applying a change of projective coordinates using the properties of self-polar triangles. The resulting algorithm requires the solution of a degree-three eigenvalue problem (i.e., a cubic equation), followed by a simple quadratic equation. As compared to more well-known methods, the self-polar triangle method results in simpler code. The self-polar triangle method is also easy to implement in environments without access to extensive software libraries.
Acknowledgments
The authors thank Michael Krause for helpful feedback on an early version of this manuscript. The authors are grateful to Dr. Álvaro Romero-Calvo for assistance with the example using bubbles in a magnetohydrodynamic water electrolysis cell.
References
- 1.
Kepler J. Astronomia nova, seu physica coelestis, tradita commentariis de motibus stellae Martis ex observationibus G.V. Tychonis Brahe. Heidelberg: E. Vögelin. 1609.
- 2.
Curtis HD. Orbital Mechanics for Engineering Students. 4th Ed. Cambridge, MA: Butterworth-Heinemann. 2020.
- 3. Robbins SJ. A New Global Database of Lunar Impact Craters >1–2 km: 1. Crater Locations and Sizes, Comparisons With Published Databases, and Global Analysis. Journal of Geophysical Research: Planets. 2019;124(4):871–92.
- 4. Christian JA, Derksen H, Watkins R. Lunar Crater Identification in Digital Images. The Journal of the Astronautical Sciences. 2021;68:1056–144.
- 5. Kaminski JY, Knaan D, Shavit A. Single image face orientation and gaze detection. Machine Vision and Applications. 2009;21(85).
- 6.
Ding Y, Yang J, Larsson K, Olsson C, Åström K. Revisiting the P3P problem. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2023.
- 7.
Richter-Gebert J. Perspectives on projective geometry. A guided tour through real and complex geometry. Heidelberg: Springer. 2011.
- 8. Faucette WM. A geometric interpretation of the solution of the general quartic polynomial. The American Mathematical Monthly. 1996;103:51–7.
- 9.
Bose NK. In: Gröbner Bases: An Algorithmic Method in Polynomial Ideal Theory. Gröbner Bases: An Algorithmic Method in Polynomial Ideal Theory. Dordrecht: Springer Netherlands. 1995. 89–127.
- 10.
Chomicki C, Breuils S, Biri V, Nozick V. Intersection of Conic Sections Using Geometric Algebra. Lecture Notes in Computer Science. 2004.
- 11.
Cardano G. Ars Magna, Sive de Regulis Algebraicis. Nuremberg: Johannes Petreius. 1545.
- 12.
Semple JG, Kneebone GT. Algebraic Projective Geometry. Oxford, UK: Oxford University Press. 1952.
- 13.
Woods FS. An introduction to advanced methods in analytic geometry. Boston: Ginn and Company. 1992.
- 14.
Huang H, Zhang H, Cheung YM. The common self-polar triangle of separate circles: properties and applications to camera calibration. In: Proc. IEEE Int. Conf. Image Process., Phoenix, AZ, USA, 2016. 1170–4. https://doi.org/10.1109/ICIP.2016.7532542
- 15.
Huang H, Zhang H, Cheung Y-M. The common self-polar triangle of concentric circles and its application to camera calibration. In: Proc. IEEE Conf. Comput. Vis. Pattern Recognit. (CVPR), Boston, MA, USA, 2015. 4065–72. https://doi.org/10.1109/CVPR.2015.7299033
- 16.
Zhang Q, Wang Q. Common Self-polar Triangle of Concentric Conics for Light Field Camera Calibration. Lecture Notes in Computer Science. Springer International Publishing. 2019. 18–33. https://doi.org/10.1007/978-3-030-20876-9_2
- 17.
Huang H, Zhang H, Cheung Y-M. Homography Estimation from the Common Self-Polar Triangle of Separate Ellipses. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016. 1737–44. https://doi.org/10.1109/CVPR.2016.192
- 18. Aronhold S. Über eine fundamentale Begründung der Invariantentheorie. Journal für die Reine und Angewandte Mathematik. 1863.
- 19. Hesse O. Vorlesungen aus der analytischen Geometrie der Kegelschnitte. Zeitschrift für Mathematik und Physik. 1876.
- 20. Thrasher AC, Krause M, Henry S, Mancini M, Sonin P, Christian JA. SONIC: Software for Optical Navigation and Instrument Calibration. The Journal of Open Source Software. 2024;9(101):6916.
- 21.
PDS data products. Clementine EDR image archive. https://planetarydata.jpl.nasa.gov/img/data/clementine/cl_0055/lun243/luxxxxxx/luxxxxxb/
- 22. Nozette S, Rustan P, Pleasance LP, Kordas JF, Lewis IT, Park HS, et al. The clementine mission to the moon: scientific overview. Science. 1994;266(5192):1835–9. pmid:17737076
- 23. Perez CA, Lazcano VA, Estevez PA. Real-Time Iris Detection on Coronal-Axis-Rotated Faces. IEEE Trans Syst, Man, Cybern C. 2007;37(5):971–8.
- 24. Daugman J. How Iris Recognition Works. IEEE Trans Circuits Syst Video Technol. 2004;14(1):21–30.
- 25. Maseedupally V, Gifford P, Swarbrick H. Variation in normal corneal shape and the influence of eyelid morphometry. Optom Vis Sci. 2015;92(3):286–300. pmid:25654494
- 26.
Da Vinci L. Mona Lisa. 1503–1506. https://commons.wikimedia.org/wiki/File:Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF.jpg
- 27. Akay Ö, Monfort-Castillo M, St Francis T, Becker J, Saravanabavan S, Romero-Calvo Á, et al. Magnetically induced convection enhances water electrolysis in microgravity. Nat Chem. 2025;17(11):1673–9. pmid:40826233