Mathematica对三维空间的多焦点曲面的初步研究
1、 首先,我们来绘制一个二焦点曲面——椭球面:
Manipulate[
ContourPlot3D[
Norm[{x, y, z} - {1, 0, 0}] + Norm[{x, y, z} - {-1, 0, 0}] ==
a, {x, -a, a}, {y, -a, a}, {z, -a, a}, Boxed -> False,
Axes -> False], {a, 2, 3}]


2、 再来绘制一个三焦点曲面。
先定义几个点:
{P, Q, R, S, T} = {{0, 1, 0}, {1, 0, 0}, {0, 0, 1}, {1, 1, 0}, {0, 0, 0}};
X = {x, y, z};
再作图,以P、Q、R为焦点:
b = 2;
Manipulate[
ContourPlot3D[
Total[Norm /@ {X - P, X - Q, X - R}] == a, {x, -b, b}, {y, -b,
b}, {z, -b, b}, Boxed -> False, Axes -> False], {a, 2.5, 5}]

3、 特别的,要关注一下a在2.79附近的图形:
b = 1;
ContourPlot3D[
Total[Norm /@ {X - P, X - Q, X - R}] == 2.79, {x, -b, b}, {y, -b,
b}, {z, -b, b}, Boxed -> False, Axes -> False]



4、 仍旧是三焦点曲面:
ContourPlot3D[
Sqrt[(x - 1)^2 + (y - 1)^2 + z^2] + Sqrt[x^2 + y^2 + z^2] +
Sqrt[x^2 + (y - 1)^2 + z^2] == 2, {x, 0, 0.6}, {y, 0.4,
1}, {z, -0.3, 0.3}]
你能看出三个焦点的坐标吗?

5、 尝试着把三个焦点转化为Locator,结果是失败的!
如下,二维空间里的三焦点曲线代码可以运行:
Manipulate[xy = {x, y};
Show[ContourPlot[
Norm[xy - a] + Norm[xy - b] + Norm[xy - c] == p, {x, -3,
3}, {y, -3, 3}],
Graphics[Line[{a, b, c, a}], PlotRange -> 3]], {{a, {0, 0}},
Locator, Appearance -> "A"}, {{b, {0, 1}}, Locator,
Appearance -> "B"}, {{c, {1, 1}}, Locator, Appearance -> "C"},
Dynamic[a], Dynamic[b], Dynamic[c], {p, 2, 10}]
然而照搬到三维空间里,就不适用了!

6、 这里是三维空间情形的代码:
Manipulate[xyz = {x, y, z};
Show[ContourPlot3D[
Norm[xyz - a] + Norm[xyz - b] + Norm[xyz - c] == p, {x, -3,
3}, {y, -3, 3}, {z, -3, 3}]],
{{a, {0, 0, 1}}, Locator, Appearance -> "A"},
{{b, {0, 1, 0}}, Locator, Appearance -> "B"},
{{c, {1, 0, 0}}, Locator, Appearance -> "C"},
Dynamic[a], Dynamic[b], Dynamic[c], {p, 2, 10}]
此时,如果只拖动滑块p,看不出异常!
但是,如果拖动三个定位器的位置,运行结果就崩溃了!

