From: NeuroPulse on
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: dr DanW on
Umm...its called Tube[]. It's a 3D graphics primitive, so you do
Graphics3D[{Tube[...],...}]. It's a new function in version 7.

Daniel

From: Peltio on
NeuroPulse wrote :

>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?

How about that very function?
http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/tubes.html

(first result in google)

cheers,
Peltio


From: Hans Michel on
NeuroPulse:

See

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

New in version 7.

Hans
"NeuroPulse" <cosmicvoyager(a)gmail.com> wrote in message
news:hoa6hv$hr0$1(a)smc.vnet.net...
> 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: Mark McClure on
On Tue, Mar 23, 2010 at 6:52 AM, NeuroPulse <cosmicvoyager(a)gmail.com> wrote:

> 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

The TubePlotFrenet command and the TubePlot command are defined on this webpage:
http://facstaff.unca.edu/mcmcclur/java/LiveMathematica/tubes.html

I did all that quite some time ago and quite a lot of things have
changed since then. There is now a Tube primitive that can generate
nice tubes like so:

trefoil[t_] == {Sin[3 t], Sin[t] + 2 Sin[2 t], Cos[t] - 2 Cos[2 t]};
Graphics3D[{Tube[BezierCurve[Table[trefoil[t],
{t, 0., 2 Pi, Pi/200}]], 0.4]}]


If you still want to try my old TubePlot functions, there are a couple
of things that should be changed. First, a few Simplify commands will
speed things up again. Second, the Lighting specificiations on my
webpage are obsolete. Putting it all together, you can generate a
nice image like so:

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

trefoil[t_] == {Sin[3 t], Sin[t] + 2 Sin[2 t], Cos[t] - 2 Cos[2 t]};
TubePlotFrenet[trefoil[t], {t, 0, 2*Pi}, 0.3,
Axes -> None, Mesh -> Full, Boxed -> False,
ViewPoint -> {10, 0, 0}, PlotPoints -> {64, 16}]

Hope that helps,
Mark McClure