Locus of vertex of parabolas through three points

Consider all parabolas through three given points $A,B,C$. What is the locus of the vertex?

Qualitatively it traces three branches with the lines through the mid-points of the sides of the triangle $ABC$ as asymptotes. Here I've drawn the branches as hyperbolas, but it looks like the curve I've used for illustration is not quite right. (As @Ｊ.Ｍ. demonstrated in answering this related question, an algebraic form for the locus may get complicated.)

I would also like to know if this problem/curve has been studied elsewhere. I found that at least such families of parabolas have been considered, and that the locus of certain perspectors is the Steiner inellipse, but have not encountered a curve like the one considered here.

Asymptotes

with the lines through the mid-points of the sides of the triangle ABC as asymptotes. The green line should be the locus you're after. I drew it as a polygon of 7581 of computed data points, using adaptive refinement, so the straight lines visible in the picture should be fairly good approximations of the asymptotes.

As you can see, they do not pass through the midpoints as you claimed. At first I though this a problem with your assumption. But because the curve approaches each asymptote from the same side, insufficient data points will not result in much change to the slope of the connecting line, but may well result in a large shift in position. So at some later point I supposed that the image simply had too few data points to show the correct asymptotes. Back then it was only 256 points. Now with this adaptive refinement in place I'm back to my original interpretation: it seems like your assumption is incorrect, particularly since the number of data points has no effect on the position of these asymptotes.

Looking closer, one can see that these asymptotes apparently intersect the edges of the triangle in a ratio of 1:4 (portion : whole edge, so one portion : other portion will be 1:3). I could reproduce this observation for various positions of $A,B,C$.

How to compute

Here is how the code behind the above image works at the moment. You can turn this into some generic formula which expresses the locus as a function of a single parameter, thus obtaining a parametrized version of your curve. All of the computation below is done using projective geometry, i.e. in $\mathbb R\mathrm P^2$.

1. Choose $D$ as a point at infinity in an arbitrary direction. This is where your single parameter comes in. If you want $D$ to pass through every point of the line at infinity, assign coordinates $(\cos\alpha,\sin\alpha,0)^T$ for all $\alpha\in[0,\pi)$.

2. Form two degenerate conics passing through these four points. You obtain such degenerate conics as the matrix product of two lines, and you obtain such lines as the cross product of two points on them. So you might compute e.g.

$$E_1 = (A\times B)\cdot(C\times D)^T\\ E_2 = (A\times C)\cdot(B\times D)^T$$

3. Symmetrize these matrices as $F_1 = E_1 + E_1^T$ and $F_2 = E_2 + E_2^T$.

4. Find $\mu$ such that $P = F_1 + \mu F_2$ is a parabola. You can check this by looking at the determinant of the upper left $2\times2$ submatrix. This will yield a quadratic equation in $\mu$. But for reasons I don't yet fully understand, the two solutions will always coincide, so this way you can obtain the matrix of the parabola through $A,B,C,D$.

5. To obtain the vertex of the parabola, you first compute the point at infinity which lies orthogonal to $D$, i.e. the point $H = (D_2, -D_1, 0)^T$. The tangent to the parabola at its apex will pass through $H$.

6. Compute the polar line of point $H$ with respect to the parabola $P$. This is the line $L = P\cdot H$. It will intersect $P$ in two points: $D$ and the apex.

7. Form the matrix $M$ from the line $L$ like this:

$$M = \begin{pmatrix} 0 & -L_3 & L_2 \\ L_3 & 0 & -L_1 \\ -L_2 & L_1 & 0 \end{pmatrix}$$

Multiplication of a vector with $M$ has the same effect as a cross product of $L$ with that vector.

8. Compute $N = M^T\cdot P\cdot N$. This is the rank 2 matrix of a degenerate dual conic. Its components are the two points of intersection we are looking for.

9. Find $\tau$ such that $Q = N + \tau M$ has rank 1. To do so, you have to ensure that all $2\times 2$ submatrices of $Q$ have determinant $0$. But looking at any single one which leads to a full quadratic equation will be enough to obtain the solution. The two solutions of the quadratic equation in $\tau$ will differ only by their sign, so it does not matter which one you choose.

10. Choose any non-zero row and any non-zero column of $Q$ as representants of your point of intersection. One of them will be (a multiple of) $D$ and therefore have a $0$ in its last component. The other will be the apex you are looking for. If you want to, you can dehomogenize that point.

Symbolic computation

You can code all of the above in a computer algebra system and obtain a closed formula with $\alpha$ as a parameter in the end. Here is some sage code to perform the above computation symbolically:

var('ax ay bx by cx cy dx dy mu tau')
A = vector([ax, ay, 1])
B = vector([bx, by, 1])
C = vector([cx, cy, 1])
D = vector([dx, dy, 0])
E1 = A.cross_product(B).column() * C.cross_product(D).row()
E2 = A.cross_product(C).column() * B.cross_product(D).row()
F1 = E1 + E1.transpose()
F2 = E2 + E2.transpose()
mus = solve((F1 + mu*F2).submatrix(0, 0, 2, 2).det(), mu)
assert(len(mus) == 1)
mu1 = mus.rhs()
P = mu1.denominator()*F1 + mu1.numerator()*F2
H = vector([D, -D, 0])
L = P*H
M = Matrix([
[0, -L, L],
[L, 0, -L],
[-L, L, 0]])
N = M.transpose()*P*M
taus = solve((N + tau*M).submatrix(0, 0, 2, 2).det(), tau)
assert((taus.rhs() + taus.rhs()).is_zero())
Q = N + taus.rhs()*M
assert(Q[2,2].is_zero())
assert(Q[1,2].is_zero() or Q[2,1].is_zero())
R = Q.row(1) if Q[2,1].is_zero() else Q.column(1)
S = vector([R/R, R/R])
var('alpha', domain='real')
T = S.subs(dy=sin(alpha), dx=cos(alpha)).simplify_full()


The letters were chosen such that they agree with the explanation above. The point $R$ is the point of intersection which is different from $D$. $S$ is its dehomogenized form, and $T$ replaces the original homogenous coordinates of $D$ by trigonometric functions of a single parameter.

Some of the case distinctions mentioned in the original description, those avoiding some zeros, won't make a lot of sense on the symbolic level. So you might find situations where a given formula will be undefined although an alternate and otherwise equivalent formulation would work well. A good simplify might avoid some of these cases, but so far my final result still is several hundred lines long, which is not what I'd call simple. Too long to paste here.

Some more experiments

Here is another interesting configuration for your three points $A,B,C$: That shape of the curve looks pretty complicated. In particular it is apparently no mistake that the curve may cross its own asymptotes. It also may have inflection points, which wasn't apparent from the original configuration.

• Did compute this symbolically using sage. The result will be visible here for a while. So far, I couldn't get any code to simplify this to something easier to handle. Perhaps someone knows a nice way to turn this into an implict form, any perhaps that implicit form will give a clue as to the nature and degree of the curve. It might even be simpler. – MvG Jun 26 '13 at 13:35
• Did yet another computation, with more structure (and even more lines of formula). This version expresses the homogenous coordinates as polynomials. Each of the three coordinate has all homogenous combinations of $\sin\alpha$ and $\cos\alpha$ of combined degree $7$. The coefficient of these is a polynomial in which the coordinates of the input points occur in a combined degree of $6$ for $x$ and $y$ resp. of degree $5$ for $z$. You could compute all of these coefficients independent of $\alpha$, to speed up the computation. – MvG Jun 27 '13 at 15:30