--Copyright The Numerical Algorithms Group Limited 1991.

)clear all
sp := create3Space()$ThreeSpace(DFLOAT)
torusInKnot(p,q,r) ==
  a := 1
  b := 1
  ab := a+b
  fac := 2*ab/(1.1*ab-sin(q*t))
  Title := concat("Torus Knot of Type (", concat(string p, 
                  concat(",", concat(string q, ")"))))
  Curve := curve(a*fac*cos(p*t), a*fac*sin(p*t), b*fac*cos(q*t))
  r = 0 => draw(Curve, t=0..2*%pi, title == Title)
  draw(Curve, t=0..2*%pi, tubeRadius == r, title == Title, space == sp)

torusInKnot(15,17,.1)
cfxn(t:DFLOAT):DFLOAT == .7
--draw(sp,curve(3*sin(t),3*cos(t),0),t=0..2*%pi,tubePoints==10,tubeRadius==.7)
draw(curve(2.4*sin(t),2.4*cos(t),0),t=0..2*%pi,tubePoints==10,tubeRadius==.8,colorFunction==cfxn, space == sp)
