A plane algebraic curve with all four kinds of double points During my study of plane algebraic curves, I got curious if there is a nontrivial example of a plane algebraic curve that has a node, a cusp (for my purposes I do not care which of the two kinds of cusps would the example exhibit), a tacnode, and an isolated point. By "nontrivial" I mean a curve that was not constructed as a chimera of two or more simpler curves, e.g. $(x-y)(x^2+y^2-1)=0$. Of course, it would be a quintic at the very least (i.e. the algebraic degree should be 5 at the minimum).
Apart from an explicit example, I would also be interested in a general procedure for constructing algebraic curves with a prescribed number and type of singular points.

After trying out Qiaochu's and T..'s suggestions, I have a follow-up question: does the problem become more difficult if the requirement that the curve be bounded (i.e. one can draw a circle such that the whole curve, including the isolated point, is within the circle) is imposed?
 A: Everything but the isolated point is a local algebraic requirement that can be satisfied by one component of a rational curve parametrized by polynomials, $(x,y)=(f(z),g(z))$.  For each singularity that requires $k$ segments of the curve to meet in specified ways, write down values of $f$ and $g$ and their first few derivatives at $k$ (or fewer) different values of $z$ that would provide the desired picture.   So this part of the problem reduces to finding polynomial $f$ and $g$ whose coefficients satisfy some linear equations.  
For example, to get two branches to meet we could require $f(1)=f(2)$ and $g(1)=g(2)$; to have the intersection be transversal (resp., a tangency) we need $(f'(1),g'(1))$ different from (resp., equal to) $(f'(2),g'(2))$ and higher tangency conditions can be expressed in the same form.  You can actually draw the curve freely (but unicursally, not lifting the pencil) on paper to define what the pattern of intersections and cusps should be and then choose the values and derivatives at the intersection points to create that behavior in the parametrization.  It can be arbitrarily complicated, such as a point where two branches meet to order $5$ while two other segments meet to order $6$ and are tangent to the first two branches to order $2$.
To add an isolated point at $(0,0)$, perform the above construction so that all singularities occur for $z \neq 0$ and the curve does not pass through 0, then replace the parametrization by $x = (1+z^2)f(z), \quad y= (1+z^2)g(z)$.  The algebraic curve you want is the Zariski closure of the parametrized thing.  This is the equation between $x$ and $y$ obtained by elimination of $z$. 
To get a bounded locus, replace any rational parametrization $(A(t),B(t))$ by $(A,B)/(1+(PAB)^2)$ where $P$ is a polynomial vanishing to high order at all the singular points arranged for $A$ and $B$. 
A: I'm setting this answer community wiki so other people can attach their own examples of curves constructed with the methods in this thread.
Now, Qiaochu's suggestion for building a curve $q(y)=p(x)$ with collinear singular points on the horizontal axis amounts to the construction of an appropriate Hermite interpolation problem. More explicitly, one wants to find a polynomial (or rational function) whose first few derivatives at preset points vanish.
In Mathematica for instance, the function InterpolatingPolynomial can be used to generate a Hermite interpolant. (For systems that do not have such a function handy, the Hermite interpolation problem is solved through either an appropriate modification of the Newton divided differences scheme or by solving an associated confluent Vandermonde system.) The rational interpolant case is a bit tougher, and I am still experimenting with algorithms for the rational Hermite problem so I won't be considering them for now (but might include them in a later edit).
Thus, taking the conditions in Qiaochu's answer, here is how one builds a curve with a node at $(-1,0)$, a tacnode at $(0,0)$, and a cusp at $(1,0)$:
Expand[InterpolatingPolynomial[{{-1, {0, 0, 1}}, {0, {0, 0, 0, 0, 1}}, {1, {0, 0, 0, 1}}}, x]]

The result has fractional coefficients, but you can multiply with an appropriate factor so that all the coefficients are integers, resulting in the polynomial
$$3x^{11}+2x^{10}-15x^9+21x^7-6x^6-9x^5+4x^4$$
Here for instance is a plot of $$y^2=3x^{11}+2x^{10}-15x^9+21x^7-6x^6-9x^5+4x^4$$:

and a more complicated curve, $$y^2-y^3=(x^2+xy+y^2)(3x^{11}+2x^{10}-15x^9+21x^7-6x^6-9x^5+4x^4)$$:

I have yet to make the prescription for getting an isolated point to work, since the curves generated only manage to have separate branches passing through the desired point, but no isolated points at all.

As for T..'s suggestion, the Mathematica code I have requires some serious cleanup, so I shall be editing this answer later to include his parametric construction.
Currently I am trying to find a curve with four-fold symmetry that has four of each of the types of double points. If I manage to find it, I shall be naming it after Qiaochu and T.
A: Here is the idea.  Everything depends on what the defining polynomial $f(x, y) = 0$ looks like in local coordinates.  To simplify things we'll take $f(x, y) = y^2 - p(x)$ where $p$ is some polynomial in $x$.  Now, I claim that


*

*If $y^2 = x^2 + \text{higher terms}$ then there is a crunode at the origin,

*If $y^2 = x^3 + \text{higher terms}$ then there is a cusp at the origin,

*If $y^2 = x^4 + \text{higher terms}$ then there is a tacnode at the origin, and

*If $y^2 = -x^2 + \text{higher terms}$ then there is an acnode at the origin.


The key point is that in each of these cases we get something locally diffeomorphic to the same guy but without the higher-order terms.  In other words, to get a bunch of double points with arbitrary behavior it suffices to pick a bunch of points $(x_i, 0)$ and place various conditions on the values of $p$ and its derivatives at $x_i$.  In particular:


*

*If $p(0) = p'(0) = 0, p''(0) = 1$ then there is a crunode at $(0, 0)$.

*If $p(1) = p'(1) = p''(1) = 0, p^{(3)}(1) = 1$ then there is a cusp at $(1, 0)$.

*If $p(2) = p'(2) = p''(2) = p^{(3)}(2) = 0, p^{(4)}(2) = 1$ then there is a tacnode at $(2, 0)$.

*If $p(3) = p'(3) = 0, p''(3) = -1$ then there is an acnode at $(3, 0)$.


I claim that this kind of polynomial interpolation is always possible.  In fact, it follows by the Chinese Remainder Theorem!  The conditions are equivalent to


*

*$p(x) \equiv x^2 \bmod x^3$

*$p(x) \equiv (x-1)^3 \bmod (x-1)^4$

*$p(x) \equiv (x-2)^4 \bmod (x-2)^5$

*$p(x) \equiv -(x-3)^2 \bmod (x-3)^3.$


Of course this discussion generalizes.  And it shouldn't be hard for you to convince yourself that you can choose $p$ to be a non-square.
Edit:  And if you also want to be able to choose the $y$-coordinates arbitrarily, it suffices to replace $y^2$ by a polynomial $q(y)$ which is equal to $y^2 + \text{higher terms}$ in local coordinates at each of the points you're interested in, which can be done by the same method.  
