Using pt1
and pt2
from Silvia's answer:
pt1 = {Sin[u], Cos[u] Sin[u], -Cos[u] Cos[u]};
pt2 = {Cos[u/2] Cos[u], Cos[u/2] Sin[u], 1 + .5 Sin[2 u]};
We can use a single ParametricPlot3D
with the options MeshFunctions
and Mesh
and add the option Method -> {"BoundaryOffset" -> False}
so that some mesh lines are not cut off.
pta = pt1 /. u -> 4 Pi u;
ptb = pt2 /. u -> 4 Pi u;
ParametricPlot3D[v ptb + (1 - v) pta,
{u, 0, 1}, {v, 0, 1},
PlotStyle -> FaceForm[],
Method -> {"BoundaryOffset" -> False},
MeshFunctions -> {#4 &, #5 &},
Mesh -> {200, Thread[{{0, 1}, Directive[Brown, Thick]}]},
MeshStyle -> Thin,
ImageSize -> Large, Axes -> False, Boxed -> False]
ParametricPlot3D[Evaluate[v ptb + (1 - v) (ptb /. u -> (u + .4))],
{u, 0, 1}, {v, 0, 1},
PlotStyle -> FaceForm[],
Method -> {"BoundaryOffset" -> False},
MeshFunctions -> {#4 &, #5 &},
Mesh -> {200, {{1, Directive[Brown, Thick]}}},
MeshStyle -> Thin, BoundaryStyle -> Thin,
ImageSize -> Large, Axes -> False, Boxed -> False]
Using Szabolcs' example
fun = KnotData[{3, 1}, "SpaceCurve"]
ParametricPlot3D[v fun[4 Pi t] + (1 - v) fun[4 Pi (t + .07)],
{t, 0, 1}, {v, 0, 1},
PlotStyle -> FaceForm[],
Method -> {"BoundaryOffset" -> False},
MeshFunctions -> {#4 &, #5 &},
Mesh -> {200, {{1, Directive[Brown, Thick]}}},
BoundaryStyle -> Thin, MeshStyle -> Thin,
ImageSize -> Large, Axes -> False, Boxed -> False]
Show[ParametricPlot3D[fun[4 Pi t], {t, 0, 1},
PlotStyle -> Directive[{MaterialShading[{"Glazed", Red}], Tube[.08]}],
ImageSize -> Large, Axes -> False, Boxed -> False, PlotRange -> All,
Background -> Black, Lighting -> "ThreePoint"],
ParametricPlot3D[v fun[4 Pi t] + (1 - v) fun[4 Pi (t + .07)],
{t, 0, 1}, {v, 0, 1},
PlotStyle -> FaceForm[],
MeshFunctions -> {#4 &}, Mesh -> {250},
BoundaryStyle -> Directive[White, Thin],
MeshStyle -> Directive[White, Thin]], SphericalRegion -> True]
Use torus
instead of fun
torus = KnotData[{"TorusKnot", {3, 5}}, "SpaceCurve"];
and replace Mesh -> {250}
with Mesh -> {400}
to get
Show[
ParametricPlot3D[{torus[4 Pi t],
{.8, .8, .8} torus[4 Pi t],
{.5, .5, .5} torus[4 Pi t]}, {t, 0, 1},
PlotStyle -> ({MaterialShading[{"Glazed", #}], Tube[.1]} & /@
{Red, Green, Orange}),
ImageSize -> Large, Axes -> False,
Boxed -> False, PlotRange -> All, Background -> Black,
Lighting -> "ThreePoint"],
ParametricPlot3D[
{v torus[4 Pi t] + (1 - v) {.8, .8, .8} torus[4 Pi t],
v {.8, .8, .8} torus[4 Pi t] + (1 - v) {.5, .5, .5} torus[4 Pi (t + .01)]},
{t, 0, 1}, {v, 0, 1},
PlotStyle -> FaceForm[],
MeshFunctions -> {#4 &}, Mesh -> {900},
BoundaryStyle -> Directive[White, Thin],
MeshStyle -> Directive[White, Thin]], SphericalRegion -> True]
Graph
as you're never using any of the non-trivial layout algorithms. I'd draw these usingGraphics
primitives only, notGraph
. $\endgroup$