From: Bob Hanlon on

The code to which you linked works if you take out the outdated option LightSources. You can use Lighting instead (I didn't bother).

TubePlotFrenet[curve_List, {var_, min_, max_},
radius_, opts___] :=
Module[
{tangent, unitTangent, normal, unitNormal, biNormal},
tangent = D[curve, t];
unitTangent = tangent/Sqrt[tangent.tangent];
normal = D[unitTangent, t];
unitNormal = normal/Sqrt[normal.normal];
biNormal = Cross[unitTangent, unitNormal];
ParametricPlot3D[curve + radius Cos[s] unitNormal +
radius Sin[s] biNormal // Evaluate,
{var, min, max}, {s, 0, 2 Pi}, opts]]

trefoil = {Sin[3 t], Sin[t] + 2 Sin[2 t], Cos[t] - 2 Cos[2 t]};

TubePlotFrenet[trefoil, {t, 0, 2*Pi}, 0.3,
Axes -> None,
Boxed -> False,
ViewPoint -> {10, 0, 0},
PlotPoints -> {64, 16},
PlotLabel -> "The Trefoil Knot"]

TubePlot[curve_List, {var_, min_, max_}, radius_,
crossVector_List: {1, 1, 1}, opts___] :=
Module[
{tangent, unitTangent, normal, unitNormal, biNormal},
tangent = D[curve, t];
unitTangent = tangent/Sqrt[tangent.tangent];
normal = Cross[tangent, crossVector];
unitNormal = normal/Sqrt[normal.normal];
biNormal = Cross[unitTangent, unitNormal];
ParametricPlot3D[curve + radius Cos[s] unitNormal +
radius Sin[s] biNormal // Evaluate,
{var, min, max}, {s, 0, 2 Pi}, opts]]

TorusKnotPlot[p_, q_, opts___] :=
TubePlot[{Cos[t] (1 + .5 Cos[(q/p) t]),
Sin[t] (1 + .5 Cos[(q/p) t]), .5 Sin[(q/p) t]},
{t, 0, 2 Pi p}, .1, {0, 0, 1},
ViewPoint -> {0, 0, 1}, Boxed -> False, Axes -> False, opts]

TorusKnotPlot[3, 5,
PlotPoints -> {128, 16},
PlotLabel -> "The (3,5) Torus Knot"]

Alternatively, in a 3D plot replace Line with Tube. Example from Doc Center
http://reference.wolfram.com/mathematica/ref/Tube.html

ParametricPlot3D[
{Cos[2 t], Sin[2 t], Cos[t]}, {t, 0, 2 Pi},
PlotStyle -> Directive[Opacity[0.7], CapForm[None],
JoinForm["Miter"], Red],
PlotRange -> All,
ColorFunction -> Hue,
Boxed -> False,
MaxRecursion -> 0,
PlotPoints -> 100,
Axes -> None,
Method -> {"TubePoints" -> 30}] /.
Line[pts_, rest___] :> Tube[pts, 0.2, rest]


Bob Hanlon

---- NeuroPulse <cosmicvoyager(a)gmail.com> wrote:

=============
Greetings,

New to Mathematica. Can't seem to find a way to plot a line as a tube
like this:

http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/trefoil.html

Seems such an obvious function to have built in. Is there one?

If not, can someone point me to one I can use in Mathematica?

Thanks



From: Jaebum Jung on
On 3/23/10 5:52 AM, NeuroPulse wrote:
> Greetings,
>
> New to Mathematica. Can't seem to find a way to plot a line as a tube
> like this:
>
> http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/trefoil.html
>
> Seems such an obvious function to have built in. Is there one?
>
> If not, can someone point me to one I can use in Mathematica?
>
> Thanks
>
>
Check graphics primitive Tube:

http://reference.wolfram.com/mathematica/ref/Tube.html

Here's example,

ParametricPlot3D[{Sin[3t],Sin[t]+2Sin[2t],Cos[t]-2Cos[2t]},{t,0,2
Pi},PlotStyle->Directive[Opacity[0.7],CapForm[None],JoinForm["Miter"],Red],PlotRange->All,ColorFunction->Hue,Boxed->False,MaxRecursion->0,PlotPoints->100,Axes->None,Method->{"TubePoints"->30}]/.Line[pts_,rest___]:>Tube[pts,0.2,rest]

- Jaebum

From: M.Roellig on
Hi,

actually, if you search for Tube in the Mathematica-Help you will
find all you need. Concerning your example:

ParametricPlot3D[trefoil, {t, 0, 2*Pi}, Axes -> None, Boxed -> False,
PlotRange -> All, ViewPoint -> {10, 0, 0}, PlotPoints -> {64, 16},
PlotLabel -> "The Trefoil Knot"] /.
Line[pts_, rest___] :> Tube[pts, 0.2, rest]


Cheers,

Markus

On Mar 23, 11:52 am, NeuroPulse <cosmicvoya...(a)gmail.com> wrote:
> Greetings,
>
> New to Mathematica. Can't seem to find a way to plot a line as a tube
> like this:
>
> http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/trefoil.html
>
> Seems such an obvious function to have built in. Is there one?
>
> If not, can someone point me to one I can use in Mathematica?
>
> Thanks


From: dh on
Hi,
there is e.g.: Tube. here is an example:
myLine[d_] := Tube[ d, 0.2];
Graphics3D(a)myLine@Table[{Sin[x], Cos[x], 0.1 x}, {x, 0, 4 Pi, Pi/8}]

Daniel

On 23.03.2010 11:52, NeuroPulse wrote:
> Greetings,
>
> New to Mathematica. Can't seem to find a way to plot a line as a tube
> like this:
>
> http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/trefoil.html
>
> Seems such an obvious function to have built in. Is there one?
>
> If not, can someone point me to one I can use in Mathematica?
>
> Thanks
>


--

Daniel Huber
Metrohm Ltd.
Oberdorfstr. 68
CH-9100 Herisau
Tel. +41 71 353 8585, Fax +41 71 353 8907
E-Mail:<mailto:dh(a)metrohm.com>
Internet:<http://www.metrohm.com>


From: Sjoerd C. de Vries on
Well you probably have not been looking in the documentation for long
as typing the word 'tube' already provides you with the answer.
Something like

Graphics3D[
Tube[Table[{Sin[3 t], Sin[t] + 2 Sin[2 t], Cos[t] - 2 Cos[2 t]}, {t,
0, 2 \[Pi], \[Pi]/40}], 0.1]]

should work for you (at least, if you have version 7). Otherwise you
have to resort to ParametricPlot3D and have a parametric description
of the surface of your object available.

Cheers -- Sjoerd

On Mar 23, 12:52 pm, NeuroPulse <cosmicvoya...(a)gmail.com> wrote:
> Greetings,
>
> New to Mathematica. Can't seem to find a way to plot a line as a tube
> like this:
>
> http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/trefoil.html
>
> Seems such an obvious function to have built in. Is there one?
>
> If not, can someone point me to one I can use in Mathematica?
>
> Thanks