Is there a process for finding an implicit representation for an approximation to an arbitrary plane curve? There are a number of plane curves listed on mathworld, described by implicit algebraic equations, including the butterfly curve, ampersand curve, and bow curve. These all loosely resemble recognizable objects, but they were (presumably) discovered for whatever reason, and then named for that resemblance.
If I want to design such a curve, as an implicit equation, with a specific target shape in mind, is there any deliberate process I might follow to do so?
As another example, the second heart curve, described by $(^2+^2−1)^3−^2^3=0$, seems to have a sort of "base circle" term, and a "shaping term", which combine to form the heart shape. Is there any theory around understanding how these terms interact to form specific plane shapes, or how to develop them?
 A: Part of it is that you can have cusps or self-intersections at points on the curve $f(x,y) = 0$ where $\nabla f = 0$.   Inspection of the low-order terms of the bivariate Taylor series
of $f$ at the point will tell you more.  In this case 
at both $(0,1)$ and $(0,-1)$ you have such a cusp, with
$(8 (y-1)^3 - x^2$ and $-8 (y+1)^3 + x^2$ respectively, so
$y \pm 1 \approx |x|^{2/3}/2$.
At $(1,0)$ and $(-1,0)$ you also have gradient $0$ but no cusp.
Symmetry (in this case $x \to -x$) is also important.
A: I address your first question. Indeed, every desired shape can be approximated
by an algebraic curve: for example, using the Hilbert Lemniscate theorem.
It says that for every compact $K$ in the plane and every neighborhood $U$ of $K$,
there is a lemniscate which separates $K$ from the complement of $U$.
The lemniscate is the level line of a polynomial, so it is an algebraic curve given
implicitly.
There are algorithms of finding it for given shape, but I don't know how effective they are. For a modern reference on this theorem, see
B. Nagy and W. Totik, Sharpening of the Hibert lemniscate theorem,
J. d'Analyse, 96 (2005) 191-223.
A: I saw a talk many years ago, I'm afraid I don't remember the name of the speaker, with a "genetic algorithm" approach to the problem of finding an algebraic expression approximating a given function. Combinations were algebraic combinations (add, divide, ...), mutations were deleting terms, scaling and so on,  along with a penalty on the size of the expressions (the number of symbols used).  The examples shown were rather impressive, but run-times were high (symbolics in the inner loop).  Might be worth an investigation in this direction ...
