(* Copyright 1993 Alfred Gray *)
(*
BeginPackage["TUBES`","CURVES3D`"]
*)

tubecurve[bicylinder][a_,b_,pm_][r_][t_,theta_]:=
{a*Cos[t] + r*((2^(1/2)*b*Cos[t]*
         (a^2 - 2*b^2 - a^2*Cos[2*t])^(1/2)*
         (5*a^2 - 8*b^2 - 4*a^2*Cos[2*t] - 
           a^2*Cos[4*t])*Cos[theta])/
       ((-a^2 + 2*b^2 + a^2*Cos[2*t])^(1/2)*
         (3*a^2 - 8*b^2 - 4*a^2*Cos[2*t] + 
            a^2*Cos[4*t])^(1/2)*
         (8*a^4 - 14*a^2*b^2 + 16*b^4 - 
            9*a^4*Cos[2*t] + 24*a^2*b^2*Cos[2*t] + 
            6*a^2*b^2*Cos[4*t] + a^4*Cos[6*t])^(1/2)) + 
      (4*(b^2 - a^2*Sin[t]^2)^(3/2)*
         ((a^3*pm*Cos[t]*
              (-3*a^2 + 4*a^2*Cos[2*t] - 
                8*b^2*Cos[2*t] - a^2*Cos[4*t]))/
            (2^(3/2)*(-a^2 + 2*b^2 + a^2*Cos[2*t])^
               (3/2)) - 
           (a^3*pm*Cos[t]*Sin[t]^2)/
            (b^2 - a^2*Sin[t]^2)^(1/2))*Sin[theta])/
       (a^2*b*(8*a^4 - 14*a^2*b^2 + 16*b^4 - 
            9*a^4*Cos[2*t] + 24*a^2*b^2*Cos[2*t] + 
            6*a^2*b^2*Cos[4*t] + a^4*Cos[6*t])^(1/2))), 
  a*Sin[t] + r*((2^(1/2)*
         (a^2 - 2*b^2 - a^2*Cos[2*t])^(1/2)*
         (-3*a^4 + 5*a^2*b^2 - 8*b^4 + 
           4*a^4*Cos[2*t] - 12*a^2*b^2*Cos[2*t] - 
           a^4*Cos[4*t] - a^2*b^2*Cos[4*t])*Cos[theta]*
         Sin[t])/
       (b*(-a^2 + 2*b^2 + a^2*Cos[2*t])^(1/2)*
         (3*a^2 - 8*b^2 - 4*a^2*Cos[2*t] + 
            a^2*Cos[4*t])^(1/2)*
         (8*a^4 - 14*a^2*b^2 + 16*b^4 - 
            9*a^4*Cos[2*t] + 24*a^2*b^2*Cos[2*t] + 
            6*a^2*b^2*Cos[4*t] + a^4*Cos[6*t])^(1/2)) + 
      (4*(b^2 - a^2*Sin[t]^2)^(3/2)*
         ((a^3*pm*(-3*a^2 + 4*a^2*Cos[2*t] - 
                8*b^2*Cos[2*t] - a^2*Cos[4*t])*Sin[t])/
            (2^(3/2)*(-a^2 + 2*b^2 + a^2*Cos[2*t])^
               (3/2)) + 
           (a^3*pm*Cos[t]^2*Sin[t])/
            (b^2 - a^2*Sin[t]^2)^(1/2))*Sin[theta])/
       (a^2*b*(8*a^4 - 14*a^2*b^2 + 16*b^4 - 
            9*a^4*Cos[2*t] + 24*a^2*b^2*Cos[2*t] + 
            6*a^2*b^2*Cos[4*t] + a^4*Cos[6*t])^(1/2))), 
  pm*(b^2 - a^2*Sin[t]^2)^(1/2) + 
   r*((a*pm*(a^2 - 2*b^2 - a^2*Cos[2*t])^(1/2)*
         (-3*a^2 + 4*a^2*Cos[2*t] - 8*b^2*Cos[2*t] - 
           a^2*Cos[4*t])*Cos[theta])/
       (b*(3*a^2 - 8*b^2 - 4*a^2*Cos[2*t] + 
            a^2*Cos[4*t])^(1/2)*
         (8*a^4 - 14*a^2*b^2 + 16*b^4 - 9*a^4*Cos[2*t] + 
            24*a^2*b^2*Cos[2*t] + 6*a^2*b^2*Cos[4*t] + 
            a^4*Cos[6*t])^(1/2)) + 
      (4*(b^2 - a^2*Sin[t]^2)^(3/2)*Sin[theta])/
       (b*(8*a^4 - 14*a^2*b^2 + 16*b^4 - 9*a^4*Cos[2*t] + 
            24*a^2*b^2*Cos[2*t] + 6*a^2*b^2*Cos[4*t] + 
            a^4*Cos[6*t])^(1/2)))}

tubecurve[eightknot][r_][t_,theta_]:={Cos[2*t] +
 10*(Cos[t] +
 Cos[3*t]) +
 Cos[4*t] +
 r*(Cos[theta]*((144*(Cos[t] +
 5*Cos[3*t])*(-
460 -
 98*Cos[t] -
 160*Cos[2*t] -
 11*Cos[3*t] +
 20*Cos[4*t] -
 Cos[5*t] -
 10*Cos[7*t]))/((2478 +
 399*Cos[t] +
 528*Cos[2*t] +
 40*Cos[3*t] -
 244*Cos[4*t] -
 222*Cos[5*t] +
 6*Cos[6*t] -
 240*Cos[7*t] +
 240*Cos[8*t] -
 384*Cos[10*t] -
 121*Cos[11*t] +
 144*Cos[12*t] +
 264*Sin[t/2] +
 352*Sin[(3*t)/2] +
 32*Sin[(7*t)/2] -
 32*Sin[(9*t)/2] -
 24*Sin[(11*t)/2] +
 24*Sin[(13*t)/2] +
 352*Sin[(19*t)/2] -
 264*Sin[(23*t)/2])^(1/2)*(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2)) +
 (2^(1/2)*(16*Cos[4*t] -
 12*Cos[6*t] -
 Sin[t/2] +
 11*Sin[(11*t)/2])*(2*(5*Cos[t] +
 2*Cos[2*t] +
 45*Cos[3*t] +
 8*Cos[4*t])*(-
16*Cos[4*t] +
 12*Cos[6*t] +
 Sin[t/2] -
 11*Sin[(11*t)/2]) +
 (5*Sin[t] +
 Sin[2*t] +
 15*Sin[3*t] +
 2*Sin[4*t])*(-
Cos[t/2] +
 121*Cos[(11*t)/2] -
 128*Sin[4*t] +
 144*Sin[6*t])))/((1239/4 +
 (399*Cos[t])/8 +
 66*Cos[2*t] +
 5*Cos[3*t] -
 (61*Cos[4*t])/2 -
 (111*Cos[5*t])/4 +
 (3*Cos[6*t])/4 -
 30*Cos[7*t] +
 30*Cos[8*t] -
 48*Cos[10*t] -
 (121*Cos[11*t])/8 +
 18*Cos[12*t] +
 33*Sin[t/2] +
 44*Sin[(3*t)/2] +
 4*Sin[(7*t)/2] -
 4*Sin[(9*t)/2] -
 3*Sin[(11*t)/2] +
 3*Sin[(13*t)/2] +
 44*Sin[(19*t)/2] -
 33*Sin[(23*t)/2])^(1/2)*(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2))) +
 (2^(3/2)*(6*(Sin[t] +
 15*Sin[3*t])*(16*Cos[4*t] -
 12*Cos[6*t] -
 Sin[t/2] +
 11*Sin[(11*t)/2]) +
 3*(Cos[t] +
 5*Cos[3*t])*(-
Cos[t/2] +
 121*Cos[(11*t)/2] -
 128*Sin[4*t] +
 144*Sin[6*t]))*Sin[theta])/(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2)), 6*Sin[t] +
 10*Sin[3*t] +
 r*((3*Cos[theta]*(-
3412*Cos[t/2] -
 11124*Cos[(3*t)/2] -
 7200*Cos[(5*t)/2] +
 5968*Cos[(7*t)/2] +
 8052*Cos[(9*t)/2] -
 124*Cos[(11*t)/2] -
 26796*Cos[(13*t)/2] -
 348*Cos[(15*t)/2] +
 18992*Cos[(17*t)/2] -
 60*Cos[(19*t)/2] +
 924*Cos[(21*t)/2] -
 3652*Cos[(25*t)/2] +
 7260*Cos[(29*t)/2] -
 41120*Sin[t] -
 26374*Sin[2*t] -
 149784*Sin[3*t] -
 27089*Sin[4*t] +
 5800*Sin[5*t] -
 3426*Sin[6*t] -
 25856*Sin[7*t] -
 10375*Sin[8*t] +
 9792*Sin[9*t] -
 2773*Sin[10*t] +
 1344*Sin[11*t] -
 1089*Sin[12*t] -
 6240*Sin[13*t] -
 3025*Sin[14*t] +
 4320*Sin[15*t]))/((2478 +
 399*Cos[t] +
 528*Cos[2*t] +
 40*Cos[3*t] -
 244*Cos[4*t] -
 222*Cos[5*t] +
 6*Cos[6*t] -
 240*Cos[7*t] +
 240*Cos[8*t] -
 384*Cos[10*t] -
 121*Cos[11*t] +
 144*Cos[12*t] +
 264*Sin[t/2] +
 352*Sin[(3*t)/2] +
 32*Sin[(7*t)/2] -
 32*Sin[(9*t)/2] -
 24*Sin[(11*t)/2] +
 24*Sin[(13*t)/2] +
 352*Sin[(19*t)/2] -
 264*Sin[(23*t)/2])^(1/2)*(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2)) +
 (2^(3/2)*(2*(5*Cos[t] +
 2*Cos[2*t] +
 45*Cos[3*t] +
 8*Cos[4*t])*(-
16*Cos[4*t] +
 12*Cos[6*t] +
 Sin[t/2] -
 11*Sin[(11*t)/2]) +
 (5*Sin[t] +
 Sin[2*t] +
 15*Sin[3*t] +
 2*Sin[4*t])*(-
Cos[t/2] +
 121*Cos[(11*t)/2] -
 128*Sin[4*t] +
 144*Sin[6*t]))*Sin[theta])/(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2)), 4*Sin[(5*t)/2]*Sin[3*t] +
 4*Sin[4*t] -
 2*Sin[6*t] +
 r*(Cos[theta]*((36*(Cos[t] +
 5*Cos[3*t])*(-
3*Cos[t/2] +
 Cos[(3*t)/2] +
 900*Cos[(5*t)/2] +
 25*Cos[(7*t)/2] +
 143*Cos[(9*t)/2] +
 99*Cos[(13*t)/2] +
 275*Cos[(17*t)/2] -
 1120*Sin[t] +
 920*Sin[3*t] +
 72*Sin[5*t] -
 40*Sin[7*t] +
 360*Sin[9*t]))/((2478 +
 399*Cos[t] +
 528*Cos[2*t] +
 40*Cos[3*t] -
 244*Cos[4*t] -
 222*Cos[5*t] +
 6*Cos[6*t] -
 240*Cos[7*t] +
 240*Cos[8*t] -
 384*Cos[10*t] -
 121*Cos[11*t] +
 144*Cos[12*t] +
 264*Sin[t/2] +
 352*Sin[(3*t)/2] +
 32*Sin[(7*t)/2] -
 32*Sin[(9*t)/2] -
 24*Sin[(11*t)/2] +
 24*Sin[(13*t)/2] +
 352*Sin[(19*t)/2] -
 264*Sin[(23*t)/2])^(1/2)*(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2)) +
 (2^(3/2)*(5*Sin[t] +
 Sin[2*t] +
 15*Sin[3*t] +
 2*Sin[4*t])*(2*(5*Cos[t] +
 2*Cos[2*t] +
 45*Cos[3*t] +
 8*Cos[4*t])*(-
16*Cos[4*t] +
 12*Cos[6*t] +
 Sin[t/2] -
 11*Sin[(11*t)/2]) +
 (5*Sin[t] +
 Sin[2*t] +
 15*Sin[3*t] +
 2*Sin[4*t])*(-
Cos[t/2] +
 121*Cos[(11*t)/2] -
 128*Sin[4*t] +
 144*Sin[6*t])))/((1239/4 +
 (399*Cos[t])/8 +
 66*Cos[2*t] +
 5*Cos[3*t] -
 (61*Cos[4*t])/2 -
 (111*Cos[5*t])/4 +
 (3*Cos[6*t])/4 -
 30*Cos[7*t] +
 30*Cos[8*t] -
 48*Cos[10*t] -
 (121*Cos[11*t])/8 +
 18*Cos[12*t] +
 33*Sin[t/2] +
 44*Sin[(3*t)/2] +
 4*Sin[(7*t)/2] -
 4*Sin[(9*t)/2] -
 3*Sin[(11*t)/2] +
 3*Sin[(13*t)/2] +
 44*Sin[(19*t)/2] -
 33*Sin[(23*t)/2])^(1/2)*(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2))) +
 (3*2^(5/2)*(460 +
 98*Cos[t] +
 160*Cos[2*t] +
 11*Cos[3*t] -
 20*Cos[4*t] +
 Cos[5*t] +
 10*Cos[7*t])*Sin[theta])/(125380612 +
 43325892*Cos[t] +
 22431024*Cos[2*t] -
 535409*Cos[3*t] -
 17514048*Cos[4*t] -
 5841777*Cos[5*t] -
 8731980*Cos[6*t] +
 873507*Cos[7*t] +
 6043398*Cos[8*t] +
 8953862*Cos[9*t] +
 17781234*Cos[10*t] +
 9892014*Cos[11*t] -
 10788516*Cos[12*t] +
 569940*Cos[13*t] -
 3336210*Cos[14*t] -
 701269*Cos[15*t] +
 322938*Cos[16*t] +
 220236*Cos[17*t] -
 90468*Cos[18*t] +
 203004*Cos[19*t] +
 9216*Cos[20*t] +
 34726128*Sin[t/2] +
 38029232*Sin[(3*t)/2] +
 20535840*Sin[(5*t)/2] +
 12877152*Sin[(7*t)/2] -
 2758864*Sin[(9*t)/2] -
 372528*Sin[(11*t)/2] -
 4020720*Sin[(13*t)/2] -
 14549440*Sin[(15*t)/2] -
 3289056*Sin[(17*t)/2] -
 8662896*Sin[(19*t)/2] +
 1986096*Sin[(21*t)/2] +
 22360080*Sin[(23*t)/2] +
 1993536*Sin[(25*t)/2] +
 4841056*Sin[(27*t)/2] +
 300912*Sin[(29*t)/2] -
 830016*Sin[(31*t)/2] -
 435600*Sin[(33*t)/2] -
 27456*Sin[(35*t)/2] -
 300960*Sin[(37*t)/2] -
 12672*Sin[(39*t)/2])^(1/2))}

tubecurve[helix[a_,b_,c_]][r_][t_,theta_]:=
{a*Cos[t] + r*((-2*a*(b^2 + c^2)*Cos[t]*Cos[theta])/
       ((a^2 + b^2 + 2*c^2 - a^2*Cos[2*t] + 
            b^2*Cos[2*t])^(1/2)*
         (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
            a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2)) + 
       (2^(1/2)*b*c*Sin[t]*Sin[theta])/
       (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
          a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2)), 
  b*Sin[t] + r*((-2*b*(a^2 + c^2)*Cos[theta]*Sin[t])/
       ((a^2 + b^2 + 2*c^2 - a^2*Cos[2*t] + 
            b^2*Cos[2*t])^(1/2)*
         (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
            a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2)) \
        (2^(1/2)*a*c*Cos[t]*Sin[theta]) -
       (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
          a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2)), 
  c*t + r*(((-a^2 + b^2)*c*Cos[theta]*Sin[2*t])/
       ((a^2 + b^2 + 2*c^2 - a^2*Cos[2*t] + 
            b^2*Cos[2*t])^(1/2)*
         (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
            a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2)) + 
      (2^(1/2)*a*b*Sin[theta])/
       (2*a^2*b^2 + a^2*c^2 + b^2*c^2 + 
          a^2*c^2*Cos[2*t] - b^2*c^2*Cos[2*t])^(1/2))}

vartube[helix[a_,b_,c_]][r_][t_,theta_]:=
{a*Cos[t] + (r[t]*(-(a*b^2*Cos[t]*Cos[theta]) - 
        a*c^2*Cos[t]*Cos[theta] + 
        b*c*(a^2 + c^2 - a^2*Cos[t]^2 + b^2*Cos[t]^2)^
          (1/2)*Sin[t]*Sin[theta]))/
    ((a^2 + c^2 - a^2*Cos[t]^2 + b^2*Cos[t]^2)^(1/2)*
      (a^2*b^2 + b^2*c^2 + a^2*c^2*Cos[t]^2 - 
         b^2*c^2*Cos[t]^2)^(1/2)), 
  b*Sin[t] - (r[t]*(a^2*b*Cos[theta]*Sin[t] + 
        b*c^2*Cos[theta]*Sin[t] + 
        a*c*Cos[t]*(a^2 + c^2 - a^2*Cos[t]^2 + 
            b^2*Cos[t]^2)^(1/2)*Sin[theta]))/
    ((a^2 + c^2 - a^2*Cos[t]^2 + b^2*Cos[t]^2)^(1/2)*
      (a^2*b^2 + b^2*c^2 + a^2*c^2*Cos[t]^2 - 
         b^2*c^2*Cos[t]^2)^(1/2)), 
  c*t + r[t]*(((-a^2 + b^2)*c*Cos[t]*Cos[theta]*Sin[t])/
       ((a^2 + c^2 - a^2*Cos[t]^2 + b^2*Cos[t]^2)^(1/2)*
         (a^2*b^2 + b^2*c^2 + a^2*c^2*Cos[t]^2 - 
            b^2*c^2*Cos[t]^2)^(1/2)) + 
      (a*b*Sin[theta])/
       (a^2*b^2 + b^2*c^2 + a^2*c^2*Cos[t]^2 - 
          b^2*c^2*Cos[t]^2)^(1/2))}

tubecurve[lissajous3d[n_,d_,a_,b_,c_]][r_][t_,theta_]:=
        {a*Sin[d + n*t] + r*(Cos[theta]*
         (-((b*Cos[t]*(-(a*b*n*Cos[d + n*t]*Sin[t]) +
        a*b*n^2*Cos[t]*Sin[d + n*t]))/
  ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 + 
        c^2*Sin[t]^2)^(1/2)*(b^2*c^2*Cos[t]^4 +
        a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
        2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
        a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
        b^2*c^2*Sin[t]^4 +  a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
        a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 - 
        (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/
         2 + (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2)))
    -  (c*Sin[t]*(a*c*n*Cos[t]*Cos[d + n*t] +
             a*c*n^2*Sin[t]*Sin[d + n*t]))/
       ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 +c^2*Sin[t]^2)^(1/2)*
        (b^2*c^2*Cos[t]^4 +a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 + 
           2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
           a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 + b^2*c^2*Sin[t]^4 + 
           a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
           a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
           (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/ 2 +
           (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2))) - 
   (b*c*Sin[theta])/(b^2*c^2*Cos[t]^4 +
       a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
       2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
       a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
       b^2*c^2*Sin[t]^4 +
       a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
       a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
       (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
       (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2)),
  b*Sin[t] + r*(Cos[theta]*(-((b*c^2*Sin[t])/
    ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 +  c^2*Sin[t]^2)^(1/2)*
       (b^2*c^2*Cos[t]^4 +  a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
            2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
            a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
            b^2*c^2*Sin[t]^4 +
            a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
            a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
     (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
     (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2))) +
     (a*n*Cos[d + n*t]*(-(a*b*n*Cos[d + n*t]*Sin[t]) +
      a*b*n^2*Cos[t]*Sin[d + n*t]))/
      ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 +c^2*Sin[t]^2)^(1/2)*
           (b^2*c^2*Cos[t]^4 +a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
            2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
            a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +b^2*c^2*Sin[t]^4 +
            a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
            a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
            (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
            (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2))) +
            ((a*c*n*Cos[t]*Cos[d + n*t] +
             a*c*n^2*Sin[t]*Sin[d + n*t])*Sin[theta])/
             (b^2*c^2*Cos[t]^4 +a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
             2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
             a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
             b^2*c^2*Sin[t]^4 +
             a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
             a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
             (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
             (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2) ),
  c*Cos[t] + r*(Cos[theta]*(-((b^2*c*Cos[t])/
      ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 +
           c^2*Sin[t]^2)^(1/2)*(b^2*c^2*Cos[t]^4 +
           a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
           2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
           a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 + 
           b^2*c^2*Sin[t]^4 +
           a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
           a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
           (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
     (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2))) -
     (a*n*Cos[d + n*t]*(a*c*n*Cos[t]*Cos[d + n*t] +
      a*c*n^2*Sin[t]*Sin[d + n*t]))/
        ((b^2*Cos[t]^2 + a^2*n^2*Cos[d + n*t]^2 +
          c^2*Sin[t]^2)^(1/2)*
         (b^2*c^2*Cos[t]^4 +
               a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
               2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
               a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
               b^2*c^2*Sin[t]^4 +
               a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
               a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
               (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
               (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2))) +
             ((-(a*b*n*Cos[d + n*t]*Sin[t]) +
       a*b*n^2*Cos[t]*Sin[d + n*t])*Sin[theta])/
       (b^2*c^2*Cos[t]^4 +a^2*c^2*n^2*Cos[t]^2*Cos[d + n*t]^2 +
        2*b^2*c^2*Cos[t]^2*Sin[t]^2 +
        a^2*b^2*n^2*Cos[d + n*t]^2*Sin[t]^2 +
        b^2*c^2*Sin[t]^4 +
        a^2*b^2*n^4*Cos[t]^2*Sin[d + n*t]^2 +
        a^2*c^2*n^4*Sin[t]^2*Sin[d + n*t]^2 -
        (a^2*b^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2 +
        (a^2*c^2*n^3*Sin[2*t]*Sin[2*(d + n*t)])/2)^(1/2) )}




tubecurve[torusknot[a_,b_,c_][p_,q_]][r_][t_,theta_]:=
        {Cos[p*t]*(a + b*Cos[q*t]) + 
         r*(Cos[theta]*((-2*p*
            (2*a^2*p^2 + b^2*p^2 + 3*b^2*q^2 + 
              4*a*b*p^2*Cos[q*t] + 
              2*a*b*q^2*Cos[q*t] + 
              b^2*p^2*Cos[2*q*t] - b^2*q^2*Cos[2*q*t])*
            (p*Cos[p*t]*(a + b*Cos[q*t]) - 
              b*q*Sin[p*t]*Sin[q*t]))/
          ((2*a^2*p^2 + b^2*p^2 + b^2*q^2 + c^2*q^2 + 
               4*a*b*p^2*Cos[q*t] + 
               b^2*p^2*Cos[2*q*t] - 
               b^2*q^2*Cos[2*q*t] + c^2*q^2*Cos[2*q*t]
               )^(1/2)*
            (8*a^4*p^6 + 24*a^2*b^2*p^6 + 3*b^4*p^6 + 
               40*a^2*b^2*p^4*q^2 + 10*b^4*p^4*q^2 + 
               4*a^2*c^2*p^4*q^2 + 3*b^2*c^2*p^4*q^2 + 
               4*a^2*b^2*p^2*q^4 + 19*b^4*p^2*q^4 + 
               4*a^2*c^2*p^2*q^4 + 9*b^2*c^2*p^2*q^4 + 
               8*b^2*c^2*q^6 + 32*a^3*b*p^6*Cos[q*t] + 
               24*a*b^3*p^6*Cos[q*t] + 
               16*a^3*b*p^4*q^2*Cos[q*t] + 
               52*a*b^3*p^4*q^2*Cos[q*t] + 
               12*a*b*c^2*p^4*q^2*Cos[q*t] + 
               20*a*b^3*p^2*q^4*Cos[q*t] + 
               12*a*b*c^2*p^2*q^4*Cos[q*t] + 
               24*a^2*b^2*p^6*Cos[2*q*t] + 
               4*b^4*p^6*Cos[2*q*t] + 
               8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
               8*b^4*p^4*q^2*Cos[2*q*t] + 
               4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
               12*b^4*p^2*q^4*Cos[2*q*t] - 
               4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*a*b^3*p^6*Cos[3*q*t] - 
               4*a*b^3*p^4*q^2*Cos[3*q*t] + 
               4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
               4*a*b^3*p^2*q^4*Cos[3*q*t] + 
               4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
               b^4*p^6*Cos[4*q*t] - 
               2*b^4*p^4*q^2*Cos[4*q*t] + 
               b^2*c^2*p^4*q^2*Cos[4*q*t] + 
               b^4*p^2*q^4*Cos[4*q*t] - 
               b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2)) + 
         (4*c*q*Cos[q*t]*
            (c*q^2*Sin[q*t]*
               (-(p*(a + b*Cos[q*t])*Sin[p*t]) - 
                 b*q*Cos[p*t]*Sin[q*t]) + 
              c*q*Cos[q*t]*
               (-(b*q^2*Cos[p*t]*Cos[q*t]) - 
                 p^2*Cos[p*t]*(a + b*Cos[q*t]) + 
                 2*b*p*q*Sin[p*t]*Sin[q*t])))/
          ((2*a^2*p^2 + b^2*p^2 + b^2*q^2 + c^2*q^2 + 
               4*a*b*p^2*Cos[q*t] + 
               b^2*p^2*Cos[2*q*t] - 
               b^2*q^2*Cos[2*q*t] + c^2*q^2*Cos[2*q*t])
              ^(1/2)*(8*a^4*p^6 + 24*a^2*b^2*p^6 + 
               3*b^4*p^6 + 40*a^2*b^2*p^4*q^2 + 
               10*b^4*p^4*q^2 + 4*a^2*c^2*p^4*q^2 + 
               3*b^2*c^2*p^4*q^2 + 4*a^2*b^2*p^2*q^4 + 
               19*b^4*p^2*q^4 + 4*a^2*c^2*p^2*q^4 + 
               9*b^2*c^2*p^2*q^4 + 8*b^2*c^2*q^6 + 
               32*a^3*b*p^6*Cos[q*t] + 
               24*a*b^3*p^6*Cos[q*t] + 
               16*a^3*b*p^4*q^2*Cos[q*t] + 
               52*a*b^3*p^4*q^2*Cos[q*t] + 
               12*a*b*c^2*p^4*q^2*Cos[q*t] + 
               20*a*b^3*p^2*q^4*Cos[q*t] + 
               12*a*b*c^2*p^2*q^4*Cos[q*t] + 
               24*a^2*b^2*p^6*Cos[2*q*t] + 
               4*b^4*p^6*Cos[2*q*t] + 
               8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
               8*b^4*p^4*q^2*Cos[2*q*t] + 
               4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
               12*b^4*p^2*q^4*Cos[2*q*t] - 
               4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*a*b^3*p^6*Cos[3*q*t] - 
               4*a*b^3*p^4*q^2*Cos[3*q*t] + 
               4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
               4*a*b^3*p^2*q^4*Cos[3*q*t] + 
               4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
               b^4*p^6*Cos[4*q*t] - 
               2*b^4*p^4*q^2*Cos[4*q*t] + 
               b^2*c^2*p^4*q^2*Cos[4*q*t] + 
               b^4*p^2*q^4*Cos[4*q*t] - 
               b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2))) + 
      (2^(3/2)*(-(c*q*Cos[q*t]*
              (-(b*q^2*Cos[q*t]*Sin[p*t]) - 
                p^2*(a + b*Cos[q*t])*Sin[p*t] - 
                2*b*p*q*Cos[p*t]*Sin[q*t])) - 
           c*q^2*Sin[q*t]*
            (p*Cos[p*t]*(a + b*Cos[q*t]) - 
              b*q*Sin[p*t]*Sin[q*t]))*Sin[theta])/
       (8*a^4*p^6 + 24*a^2*b^2*p^6 + 3*b^4*p^6 + 
          40*a^2*b^2*p^4*q^2 + 10*b^4*p^4*q^2 + 
          4*a^2*c^2*p^4*q^2 + 3*b^2*c^2*p^4*q^2 + 
          4*a^2*b^2*p^2*q^4 + 19*b^4*p^2*q^4 + 
          4*a^2*c^2*p^2*q^4 + 9*b^2*c^2*p^2*q^4 + 
          8*b^2*c^2*q^6 + 32*a^3*b*p^6*Cos[q*t] + 
          24*a*b^3*p^6*Cos[q*t] + 
          16*a^3*b*p^4*q^2*Cos[q*t] + 
          52*a*b^3*p^4*q^2*Cos[q*t] + 
          12*a*b*c^2*p^4*q^2*Cos[q*t] + 
          20*a*b^3*p^2*q^4*Cos[q*t] + 
          12*a*b*c^2*p^2*q^4*Cos[q*t] + 
          24*a^2*b^2*p^6*Cos[2*q*t] + 
          4*b^4*p^6*Cos[2*q*t] + 
          8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
          8*b^4*p^4*q^2*Cos[2*q*t] + 
          4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
          12*b^4*p^2*q^4*Cos[2*q*t] - 
          4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*a*b^3*p^6*Cos[3*q*t] - 
          4*a*b^3*p^4*q^2*Cos[3*q*t] + 
          4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
          4*a*b^3*p^2*q^4*Cos[3*q*t] + 
          4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
          b^4*p^6*Cos[4*q*t] - 
          2*b^4*p^4*q^2*Cos[4*q*t] + 
          b^2*c^2*p^4*q^2*Cos[4*q*t] + 
          b^4*p^2*q^4*Cos[4*q*t] - 
          b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2)), 
  (a + b*Cos[q*t])*Sin[p*t] + 
   r*(Cos[theta]*((2*p*
            (2*a^2*p^2 + b^2*p^2 + 3*b^2*q^2 + 
              4*a*b*p^2*Cos[q*t] + 
              2*a*b*q^2*Cos[q*t] + 
              b^2*p^2*Cos[2*q*t] - b^2*q^2*Cos[2*q*t])*
            (-(p*(a + b*Cos[q*t])*Sin[p*t]) - 
              b*q*Cos[p*t]*Sin[q*t]))/
          ((2*a^2*p^2 + b^2*p^2 + b^2*q^2 + c^2*q^2 + 
               4*a*b*p^2*Cos[q*t] + 
               b^2*p^2*Cos[2*q*t] - 
               b^2*q^2*Cos[2*q*t] + c^2*q^2*Cos[2*q*t]
               )^(1/2)*
            (8*a^4*p^6 + 24*a^2*b^2*p^6 + 3*b^4*p^6 + 
               40*a^2*b^2*p^4*q^2 + 10*b^4*p^4*q^2 + 
               4*a^2*c^2*p^4*q^2 + 3*b^2*c^2*p^4*q^2 + 
               4*a^2*b^2*p^2*q^4 + 19*b^4*p^2*q^4 + 
               4*a^2*c^2*p^2*q^4 + 9*b^2*c^2*p^2*q^4 + 
               8*b^2*c^2*q^6 + 32*a^3*b*p^6*Cos[q*t] + 
               24*a*b^3*p^6*Cos[q*t] + 
               16*a^3*b*p^4*q^2*Cos[q*t] + 
               52*a*b^3*p^4*q^2*Cos[q*t] + 
               12*a*b*c^2*p^4*q^2*Cos[q*t] + 
               20*a*b^3*p^2*q^4*Cos[q*t] + 
               12*a*b*c^2*p^2*q^4*Cos[q*t] + 
               24*a^2*b^2*p^6*Cos[2*q*t] + 
               4*b^4*p^6*Cos[2*q*t] + 
               8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
               8*b^4*p^4*q^2*Cos[2*q*t] + 
               4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
               12*b^4*p^2*q^4*Cos[2*q*t] - 
               4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*a*b^3*p^6*Cos[3*q*t] - 
               4*a*b^3*p^4*q^2*Cos[3*q*t] + 
               4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
               4*a*b^3*p^2*q^4*Cos[3*q*t] + 
               4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
               b^4*p^6*Cos[4*q*t] - 
               2*b^4*p^4*q^2*Cos[4*q*t] + 
               b^2*c^2*p^4*q^2*Cos[4*q*t] + 
               b^4*p^2*q^4*Cos[4*q*t] - 
               b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2)) - 
         (4*c*q*Cos[q*t]*
            (-(c*q*Cos[q*t]*
                 (-(b*q^2*Cos[q*t]*Sin[p*t]) - 
                   p^2*(a + b*Cos[q*t])*Sin[p*t] - 
                   2*b*p*q*Cos[p*t]*Sin[q*t])) - 
              c*q^2*Sin[q*t]*
               (p*Cos[p*t]*(a + b*Cos[q*t]) - 
                 b*q*Sin[p*t]*Sin[q*t])))/
          ((2*a^2*p^2 + b^2*p^2 + b^2*q^2 + c^2*q^2 + 
               4*a*b*p^2*Cos[q*t] + 
               b^2*p^2*Cos[2*q*t] - 
               b^2*q^2*Cos[2*q*t] + c^2*q^2*Cos[2*q*t])
              ^(1/2)*(8*a^4*p^6 + 24*a^2*b^2*p^6 + 
               3*b^4*p^6 + 40*a^2*b^2*p^4*q^2 + 
               10*b^4*p^4*q^2 + 4*a^2*c^2*p^4*q^2 + 
               3*b^2*c^2*p^4*q^2 + 4*a^2*b^2*p^2*q^4 + 
               19*b^4*p^2*q^4 + 4*a^2*c^2*p^2*q^4 + 
               9*b^2*c^2*p^2*q^4 + 8*b^2*c^2*q^6 + 
               32*a^3*b*p^6*Cos[q*t] + 
               24*a*b^3*p^6*Cos[q*t] + 
               16*a^3*b*p^4*q^2*Cos[q*t] + 
               52*a*b^3*p^4*q^2*Cos[q*t] + 
               12*a*b*c^2*p^4*q^2*Cos[q*t] + 
               20*a*b^3*p^2*q^4*Cos[q*t] + 
               12*a*b*c^2*p^2*q^4*Cos[q*t] + 
               24*a^2*b^2*p^6*Cos[2*q*t] + 
               4*b^4*p^6*Cos[2*q*t] + 
               8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
               8*b^4*p^4*q^2*Cos[2*q*t] + 
               4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
               4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
               12*b^4*p^2*q^4*Cos[2*q*t] - 
               4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
               8*a*b^3*p^6*Cos[3*q*t] - 
               4*a*b^3*p^4*q^2*Cos[3*q*t] + 
               4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
               4*a*b^3*p^2*q^4*Cos[3*q*t] + 
               4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
               b^4*p^6*Cos[4*q*t] - 
               2*b^4*p^4*q^2*Cos[4*q*t] + 
               b^2*c^2*p^4*q^2*Cos[4*q*t] + 
               b^4*p^2*q^4*Cos[4*q*t] - 
               b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2))) + 
      (2^(3/2)*(c*q^2*Sin[q*t]*
            (-(p*(a + b*Cos[q*t])*Sin[p*t]) - 
              b*q*Cos[p*t]*Sin[q*t]) + 
           c*q*Cos[q*t]*
            (-(b*q^2*Cos[p*t]*Cos[q*t]) - 
              p^2*Cos[p*t]*(a + b*Cos[q*t]) + 
              2*b*p*q*Sin[p*t]*Sin[q*t]))*Sin[theta])/
       (8*a^4*p^6 + 24*a^2*b^2*p^6 + 3*b^4*p^6 + 
          40*a^2*b^2*p^4*q^2 + 10*b^4*p^4*q^2 + 
          4*a^2*c^2*p^4*q^2 + 3*b^2*c^2*p^4*q^2 + 
          4*a^2*b^2*p^2*q^4 + 19*b^4*p^2*q^4 + 
          4*a^2*c^2*p^2*q^4 + 9*b^2*c^2*p^2*q^4 + 
          8*b^2*c^2*q^6 + 32*a^3*b*p^6*Cos[q*t] + 
          24*a*b^3*p^6*Cos[q*t] + 
          16*a^3*b*p^4*q^2*Cos[q*t] + 
          52*a*b^3*p^4*q^2*Cos[q*t] + 
          12*a*b*c^2*p^4*q^2*Cos[q*t] + 
          20*a*b^3*p^2*q^4*Cos[q*t] + 
          12*a*b*c^2*p^2*q^4*Cos[q*t] + 
          24*a^2*b^2*p^6*Cos[2*q*t] + 
          4*b^4*p^6*Cos[2*q*t] + 
          8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
          8*b^4*p^4*q^2*Cos[2*q*t] + 
          4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
          12*b^4*p^2*q^4*Cos[2*q*t] - 
          4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*a*b^3*p^6*Cos[3*q*t] - 
          4*a*b^3*p^4*q^2*Cos[3*q*t] + 
          4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
          4*a*b^3*p^2*q^4*Cos[3*q*t] + 
          4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
          b^4*p^6*Cos[4*q*t] - 
          2*b^4*p^4*q^2*Cos[4*q*t] + 
          b^2*c^2*p^4*q^2*Cos[4*q*t] + 
          b^4*p^2*q^4*Cos[4*q*t] - 
          b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2)), 
  c*Sin[q*t] + r*((-4*c*q^2*
         (a^2*p^2 + b^2*q^2 + a*b*p^2*Cos[q*t])*
         Cos[theta]*Sin[q*t])/
       ((2*a^2*p^2 + b^2*p^2 + b^2*q^2 + c^2*q^2 + 
            4*a*b*p^2*Cos[q*t] + b^2*p^2*Cos[2*q*t] - 
            b^2*q^2*Cos[2*q*t] + c^2*q^2*Cos[2*q*t])^
          (1/2)*(8*a^4*p^6 + 24*a^2*b^2*p^6 + 
            3*b^4*p^6 + 40*a^2*b^2*p^4*q^2 + 
            10*b^4*p^4*q^2 + 4*a^2*c^2*p^4*q^2 + 
            3*b^2*c^2*p^4*q^2 + 4*a^2*b^2*p^2*q^4 + 
            19*b^4*p^2*q^4 + 4*a^2*c^2*p^2*q^4 + 
            9*b^2*c^2*p^2*q^4 + 8*b^2*c^2*q^6 + 
            32*a^3*b*p^6*Cos[q*t] + 
            24*a*b^3*p^6*Cos[q*t] + 
            16*a^3*b*p^4*q^2*Cos[q*t] + 
            52*a*b^3*p^4*q^2*Cos[q*t] + 
            12*a*b*c^2*p^4*q^2*Cos[q*t] + 
            20*a*b^3*p^2*q^4*Cos[q*t] + 
            12*a*b*c^2*p^2*q^4*Cos[q*t] + 
            24*a^2*b^2*p^6*Cos[2*q*t] + 
            4*b^4*p^6*Cos[2*q*t] + 
            8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
            8*b^4*p^4*q^2*Cos[2*q*t] + 
            4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
            4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
            4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
            12*b^4*p^2*q^4*Cos[2*q*t] - 
            4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
            8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
            8*a*b^3*p^6*Cos[3*q*t] - 
            4*a*b^3*p^4*q^2*Cos[3*q*t] + 
            4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
            4*a*b^3*p^2*q^4*Cos[3*q*t] + 
            4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
            b^4*p^6*Cos[4*q*t] - 
            2*b^4*p^4*q^2*Cos[4*q*t] + 
            b^2*c^2*p^4*q^2*Cos[4*q*t] + 
            b^4*p^2*q^4*Cos[4*q*t] - 
            b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2)) + 
      (2^(1/2)*p*(2*a^2*p^2 + b^2*p^2 + 3*b^2*q^2 + 
           4*a*b*p^2*Cos[q*t] + 2*a*b*q^2*Cos[q*t] + 
           b^2*p^2*Cos[2*q*t] - b^2*q^2*Cos[2*q*t])*
         Sin[theta])/
       (8*a^4*p^6 + 24*a^2*b^2*p^6 + 3*b^4*p^6 + 
          40*a^2*b^2*p^4*q^2 + 10*b^4*p^4*q^2 + 
          4*a^2*c^2*p^4*q^2 + 3*b^2*c^2*p^4*q^2 + 
          4*a^2*b^2*p^2*q^4 + 19*b^4*p^2*q^4 + 
          4*a^2*c^2*p^2*q^4 + 9*b^2*c^2*p^2*q^4 + 
          8*b^2*c^2*q^6 + 32*a^3*b*p^6*Cos[q*t] + 
          24*a*b^3*p^6*Cos[q*t] + 
          16*a^3*b*p^4*q^2*Cos[q*t] + 
          52*a*b^3*p^4*q^2*Cos[q*t] + 
          12*a*b*c^2*p^4*q^2*Cos[q*t] + 
          20*a*b^3*p^2*q^4*Cos[q*t] + 
          12*a*b*c^2*p^2*q^4*Cos[q*t] + 
          24*a^2*b^2*p^6*Cos[2*q*t] + 
          4*b^4*p^6*Cos[2*q*t] + 
          8*a^2*b^2*p^4*q^2*Cos[2*q*t] + 
          8*b^4*p^4*q^2*Cos[2*q*t] + 
          4*a^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*b^2*c^2*p^4*q^2*Cos[2*q*t] + 
          4*a^2*b^2*p^2*q^4*Cos[2*q*t] - 
          12*b^4*p^2*q^4*Cos[2*q*t] - 
          4*a^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*b^2*c^2*p^2*q^4*Cos[2*q*t] + 
          8*a*b^3*p^6*Cos[3*q*t] - 
          4*a*b^3*p^4*q^2*Cos[3*q*t] + 
          4*a*b*c^2*p^4*q^2*Cos[3*q*t] - 
          4*a*b^3*p^2*q^4*Cos[3*q*t] + 
          4*a*b*c^2*p^2*q^4*Cos[3*q*t] + 
          b^4*p^6*Cos[4*q*t] - 2*b^4*p^4*q^2*Cos[4*q*t] + 
          b^2*c^2*p^4*q^2*Cos[4*q*t] + 
          b^4*p^2*q^4*Cos[4*q*t] - 
          b^2*c^2*p^2*q^4*Cos[4*q*t])^(1/2))}

tubecurve[twicubic][r_][t_,theta_]:=
{t + r*(-((t*(2 + 9*t^2)*Cos[theta])/
((1 + 4*t^2 + 9*t^4)^(1/2)*(1 + 9*t^2 + 9*t^4)^(1/2))) + (6*t^2*Sin[theta])/
(4 + 36*t^2 + 36*t^4)^(1/2)),
t^2 + r*((1/((1 + 4*t^2 + 9*t^4)^(1/2)*(1 + 9*t^2 + 9*t^4)^(1/2)) -
(18*t^4)/((1 + 4*t^2 + 9*t^4)^(1/2)*(4 + 36*t^2 + 36*t^4)^(1/2)))*Cos[theta] -
(6*t*Sin[theta])/(4 + 36*t^2 + 36*t^4)^(1/2)),
t^3 + r*((3*t*(1 + 2*t^2)*Cos[theta])/
((1 + 4*t^2 + 9*t^4)^(1/2)*(1 + 9*t^2 + 9*t^4)^(1/2)) +
Sin[theta]/(1 + 9*t^2 + 9*t^4)^(1/2))}

(*
EndPackage[]
*)
