/* Ruban de Moebius, surface avec ombres */ /* Teste avec Maxima 5.19.2 */ load(vect); f(u,r):=[cos(u)*(1+.2*r*cos(u/2)),sin(u)*(1+.2*r*cos(u/2)),.2*r*sin(u/2)]; /* ombre donnee par le produit scalaire du gradiant associe au graphe de f avec un vecteur fixe */ g:express(diff(f(u,r),u)~diff(f(u,r),r));g(u,r):=ev(g,diff); /* Attention : k(u,r):=diff(f(u,r),u);k(1,1); produit une erreur */ light:[-1/sqrt(3),-1/sqrt(3),1/sqrt(3)]; h(u,r):=light.g(u,r); load(draw); draw3d( file_name="moebius", /* terminal=png, */ surface_hide = true, xu_grid = 150, yv_grid = 60, zrange=[-.4,.4], rot_horizontal=24, rot_vertical=50, axis_3d=false, xtics=false, ytics=false, ztics=false, palette=[3,4,6], colorbox=false, enhanced3d=abs(h(u,r)), parametric_surface(f(u,r)[1],f(u,r)[2],f(u,r)[3],u,-%pi,%pi,r,-1,1) ) ;