The idea of metaball is to treat two circles as objects with mass centered in the middle, calculate at every discrete point (canvas) forces from every circle below threshokd radius (otherwise every point is taken to equation, which drastically increases complexity), and then use another threshold for blending, used per pixel. Optionally with blur afterwards. It works fine for non-isovolumetric computation.
If you prefer splines over polygons, one way to do it is: https://pdfs.semanticscholar.org/54d2/61fd778f25cec19060c3fdbaea7a15d14834.pdf
If you require isovolumetric one, use navier-stokes, iterative finite element method.
As for specified polygons, there are two ways:
Use circle or ellipse to contain polygon, use standard metaball algorithm (with elliptic detransform to circle if needed) and then perform mapping from circle (ellipse) to new shape. It will look nice and involve standard tools, but may not be accurate.
Another way is to treat every vertex as separate circle that interacts only with second shape.
If you do not want to create mapping, you may use Bézier patch with "texture" like here: http://hpcg.purdue.edu/papers/Malkova10VisComp.pdf
For reference:
Metaballs and marching squares, Metabals as SVG vectors and CSS