Nastro di Mobius

settings.outformat="pdf";
settings.prc=true;
settings.render=8;
defaultpen(fontsize(8pt));
import graph3;
import three;

size(10cm,0);

triple F_orig(pair uv) {
  real t=uv.x;
  real s=uv.y;
  return (cos(2*t)+s*cos(2*t)*cos(t), sin(2*t)+s*cos(t)*sin(2*t), s*sin(t));
}

surface surf_o=surface(F_orig,(0,-0.5),(2*pi,0.5),Spline);
draw(surf_o, surfacepen=material(green+opacity(0.5), emissivepen=0.2 white));


draw(-1X -- X, arrow=Arrow3(), L=Label("$x$", position=EndPoint, align=W));
draw(-1Y -- Y, arrow=Arrow3(), L=Label("$y$", position=EndPoint));
draw(-1Z -- Z, arrow=Arrow3(), L=Label("$z$", position=EndPoint));

int N=40;

for (int i=0; i<N; ++i)
{
  real u=2*pi/N*i;;
  real x1=cos(2*u)+0.5*cos(2*u)*cos(u);
  real y1=sin(2*u)+0.5*cos(u)*sin(2*u);
  real z1=0.5*sin(u);
  real x2=cos(2*u)-0.5*cos(2*u)*cos(u);
  real y2=sin(2*u)-0.5*cos(u)*sin(2*u);
  real z2=-0.5*sin(u);

  triple p1=(x1,y1,z1);
  triple p2=(x2,y2,z2);
  draw(p1 -- p2, blue);
}
Link al pdf navigabile (visualizzabile con Acrobat Reader)