a = 10;
r = RandomInteger[{0, a}, {3, 2}];
ContourPlot[Tr[EuclideanDistance[#, {x, y}] & /@ r],
Evaluate[{x, # - a, # + a} &@Mean[r[[All, 1]]]],
Evaluate[{y, # - a, # + a} &@Mean[r[[All, 2]]]],
Epilog -> {Red, PointSize[Large], Point@r}
]
Dynamically add foci:
a = 10;
r = RandomInteger[{0, a}, {3, 2}];
Manipulate[
ContourPlot[Tr[EuclideanDistance[#, {x, y}] & /@ u],
Evaluate[{x, # - a, # + a} &@Mean[r[[All, 1]]]],
Evaluate[{y, # - a, # + a} &@Mean[r[[All, 2]]]],
Epilog -> {Red, PointSize[Large], Point@u}],
{{u, r}, Locator, LocatorAutoCreate -> True}]
Edit
Answering your comment about drawing the intersection of a k-ellipse cone and a Sphere:
pol[n_] := Array[{Cos[#], Sin[#]} &, n + 1, {0., 2 Pi}] // Chop
r = Join[#, {z}] & /@ (z Most@pol[3]);
p = ContourPlot3D[Tr[EuclideanDistance[#, {x, y, z}] & /@ r],
{x, -2, 2}, {y, -2, 2}, {z, -2, 2},
Contours -> {4},
MeshFunctions -> (EuclideanDistance[{#1, #2, #3}, {0, 0, 1}] &),
Mesh -> {{1}}]
Show[p, Graphics3D[{Opacity[.5], Yellow, Specularity[White, 10],
Sphere[{0, 0, 1}, 1]}]]
p1 = ContourPlot3D[Tr[EuclideanDistance[#, {x, y, z}] & /@ r],
{x, -2, 2}, {y, -2, 2}, {z, -2, 2},
Contours -> {4},
MeshFunctions -> (EuclideanDistance[{#1, #2, #3}, {0, 0, 1}] &),
Mesh -> {{1}}, ContourStyle -> None];
Graphics3D@Cases[p1, GraphicsComplex[__]]