SetOptions[ContourPlot3D, Boxed -> False, Axes -> False,
Lighting -> Automatic, BoundaryStyle -> None,
Mesh -> {{0}, {0}, {0}}];
f1 = x + z + 8.3;
f2 = y + z + 6.29;
f3 = x + z + 6.42;
f4 = y + z + 3.53;
pureFun[f_] := (Evaluate[
f /. {x -> Slot@1, y -> Slot@2, z -> Slot@3}]) &;
s1 = ContourPlot3D[f1 == 0, {x, -10, 2}, {y, -10, 0}, {z, -10, 0},
MeshFunctions -> pureFun /@ {f2, f3, f4},
MeshShading -> {{{None, Pink}, {None, None}}, {{None, None}, {None,
None}}}, MeshStyle -> None];
s2 = ContourPlot3D[f2 == 0, {x, -10, 2}, {y, -10, 0}, {z, -10, 0},
MeshFunctions -> pureFun /@ {f1, f3, f4},
MeshShading -> {{{None, LightGreen}, {None, None}}, {{None,
None}, {None, None}}}, MeshStyle -> None];
s3 = ContourPlot3D[f3 == 0, {x, -10, 2}, {y, -10, 0}, {z, -10, 0},
MeshFunctions -> pureFun /@ {f1, f2, f4},
MeshShading -> {{{None, None}, {None, Cyan}}, {{None, None}, {None,
None}}}, MeshStyle -> None];
s4 = ContourPlot3D[f4 == 0, {x, -10, 2}, {y, -10, 0}, {z, -10, 0},
MeshFunctions -> pureFun /@ {f1, f2, f3},
MeshShading -> {{{None, None}, {None, Yellow}}, {{None,
None}, {None, None}}}, MeshStyle -> None];
Show[s1, s2, s3, s4, PlotRange -> All, ImageSize -> Large,
ViewPoint -> {1.9, 1.3, 2.4}]
其中 MashShading 的选取是通过二叉树,往后写一个清晰的函数把这部分表达出来。这种画法效果最好,比起用 ContourPlot3D+RegionFunction 都要好。