Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: tubes program not working in version 9
Replies: 2   Last Post: Dec 9, 2012 10:58 AM

 Search Thread: Advanced Search

 Messages: [ Previous | Next ]
 Bob Hanlon Posts: 906 Registered: 10/29/11
Re: tubes program not working in version 9
Posted: Dec 8, 2012 1:28 AM
 Plain Text Reply

The code that you posted does not define values for either p0 or q0.
However, even with these defined, I obtained radically different
surfaces depending on whether the intermediate results are simplified.

\$Version

"9.0 for Mac OS X x86 (64-bit) (November 20, 2012)"

Clear[p0, q0];

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

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

Column[Table[With[{p0 = n, q0 = m},
r = Cos[q0*t] + 2;
x = r*Cos[p0*t];
y = r*Sin[p0*t];
z = Sin[q0*t];
w0 = 8*{x, y, z};
Row[{
h1 = TubePlotFrenet[w0, {t, 0, 2 \[Pi]}, 1,
Axes -> None,
Boxed -> False,
PlotPoints -> {64, 16},
ColorFunction -> "CandyColors",
MeshFunctions -> {#3 &},
ImageSize -> 228,
BoxRatios -> {1, 1, 1},
PlotLabel -> StringForm[
"h1: p0 = ``, q0 = ``", p0, q0]],
h2 = TubePlotFrenet2[w0, {t, 0, 2 \[Pi]}, 1,
Axes -> None,
Boxed -> False,
PlotPoints -> {64, 16},
ColorFunction -> "CandyColors",
MeshFunctions -> {#3 &},
ImageSize -> 228,
BoxRatios -> {1, 1, 1},
PlotLabel -> StringForm[
"h2: p0 = ``, q0 = ``", p0, q0]]}]],
{n, {-1, 1}}, {m, {-1, 1}}]]

Bob Hanlon

On Fri, Dec 7, 2012 at 1:39 AM, Roger Bagula <roger.bagula@gmail.com> wrote:
> The problem seems to be sometimes it works but mostly it doesn't.
> The tubes program was written for an earlier version
> ( works in version 5 I think) by Mark McClure
> and has worked fine for literally years.
> I haven't got a clue what has gone wrong.
> ( technically these are called channel surfaces or the like).
>
> 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]]
>
> r = Cos[q0*t] + 2;
> x = r* Cos[p0*t];
> y = r *Sin[p0*t];
> z = Sin[q0*t];
> w0 = 8*{x, y, z}
> h = TubePlotFrenet[w0, {t, 0, 2 \[Pi]}, 1, Axes -> None,
> Boxed -> False, PlotPoints -> {64, 16},
> ColorFunction -> "CandyColors", MeshFunctions -> {#3 &}]
>
> My other tubes program which came from an answer in this group
> still works.
>

Date Subject Author
12/8/12 Bob Hanlon
12/9/12 Mark McClure

© The Math Forum at NCTM 1994-2018. All Rights Reserved.