Date: Dec 7, 2012 1:37 AM
Author: Roger Bagula
Subject: tubes program not working in version 9

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.