Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

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


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

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

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Bob Hanlon

Posts: 890
Registered: 10/29/11
Re: tubes program not working in version 9
Posted: Dec 8, 2012 1:28 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic 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.
>





Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.