Chapter 20. Some Classes of Surfaces
Rovenski Vladimir, Haifa
> restart:
20.1 Algebraic Surfaces
Exercise .
1. Prove that the following surfaces are algebraic:
c) The swallow-tail , (fifth order)
> plot3d([u, -4*v^3-2*u*v, 3*v^4+u*v^2], u=-4..4,v=-1..1, axes=framed);
d) The "wings" , (tenth order).
Solution .
c) Using the resultant (the {resultant of two polynomials}) where x=u, we eliminate the variable v from the system of
equations -4v^3-2xv-y= 0, 3v^4+xv^2-z= 0 and obtain a polynomial in x,y,z of fifth order:
> F:=resultant(-4*v^3-2*x*v-y, 3*v^4+x*v^2-z, v);
d) Using twice the resultant we eliminate the variables u,v from the system of polynomial equations
, and obtain a polynomial in x,y,z of tenth order:
> res1:=resultant(u^2-v^2-x, 2*u*v-y, v);
> F:=resultant(res1, u^5-z, u);
2.
a) The surface swallow-tail
> d:=discrim(t^4+x*t^2+y*t+z, t);
> subs({y=-4*t^3-2*x*t,z=3*t^4+x*t^2}, d);
> simplify(%); # checking
c)
> F:=t^4+x*t^2+y*t+z: F1:=diff(F,t): F2:=diff(F1,t):
> sol:=solve({F,F1,F2}, {x,y,z});
> plots[spacecurve]([-6*t^2, 8*t^3, -3*t^4], t=-1..1, axes=boxed, thickness=2);
>
20.2 Surfaces of Revolution
The surface of revolution of the curve (u): about the axis OZ is given in Figure together
with its parallels and meridians.
> plot3d([(4+sin(2*u))*cos(v), (4+sin(2*u))*sin(v), u], u=0..4*Pi, v=0..2*Pi, scaling=constrained, axes=framed);
The reader can use the following program to plot various surfaces of revolution and their profile curves in rotation.
> with(plots):
Warning, existing definition for changecoords has been overwritten
> phi:=u -> cos(u): psi:=u->sin(u): n:=6: u0:=-Pi/2: u1:=Pi/2: # enter your data
> X:= phi(u)*cos(v): Y:= phi(u)*sin(v): Z:=psi(u):
> plot([phi(u), psi(u), u=u0..u1], scaling=constrained); # curve
> a:=k-> spacecurve([phi(u)*cos(k), phi(u)*sin(k),psi(u)], u=u0..u1, thickness=3, color=green): # profile curve
> b:=plot3d([X,Y,Z], u=u0..u1, v=-Pi..Pi, style=wireframe): # surface
> display([seq(display([a(k*2*Pi/n), b]), k=1..n)], insequence=true,scaling=constrained); # surface with rotating profile curve
>
For example, in the case of revolution of the astroid (which is an algebraic curve of the sixth order), we eliminate
r from the system of equations , and obtain
, i.e., a surface of sixth order.
> restart: resultant(r^2-x^2-y^2, (r^2+z^2-a^2)^3+27*a^2*z^2*r^2, r);
For example, in the case of revolution of a circle, we eliminate r from the system
(with parameters a>b>0) and obtain a polynomial that defines a torus of revolution:
> resultant((r-a)^2+z^2-b^2, r^2-x^2-y^2, r);
which (check using Maple ) can be simplified to the short form .
5. Seven colors are sufficient to color a chart on a torus (see the problem of four colors [Gar 2]).
Plot it using animation as in the following program.
> with(plots): setoptions3d(style=patchnogrid, projection=0.5, orientation=[40,50], scaling=constrained):
Warning, existing definition for changecoords has been overwritten
> r1:=3: r2:=1: G:=array(0..14):
> xk:=(r1+r2*sin(u))*cos(v+2*Pi*k/7): yk:=(r1+r2*sin(u))*sin(v+2*Pi*k/7): zk:=r2*cos(u):
> for i from 1 to 7 do G[i]:=k->plot3d([xk,yk,zk], u=0..2*Pi, v=(2*Pi*(2*i-2)+5*u)/14..(2*Pi*(2*i)+5*u)/14, color=(i-1)/7, grid=[30,10]): G[7+i]:=k->spacecurve([subs(v=(2*Pi*(2*i-2)+5*u)/14,xk), subs(v=(2*Pi*(2*i-2)+5*u)/14, yk), subs(v=(2*Pi*(2*i-2)+5*u)/14, zk), u=0..2*Pi], thickness=3, color=black, numpoints=30) od:
> G[0]:=k->spacecurve([subs(u=2*Pi, xk), subs(u=2*Pi, yk), subs(u=2*Pi, zk)], thickness=3, v=0..2*Pi, color=black, numpoints=30):
> display([seq(display([seq(G[i](k), i=0..14)]), k=1..7)], insequence=true);
The 2-dimensional chart (scheme) is the following:
> G2:=array(0..9): for i from 1 to 9 do G2[i]:=plot([u+2*i-6,u,u=0..5], view=[0..14,0..5]) od:
> G2[0]:=polygonplot([[0,0], [14,0], [14,5], [0,5]]):
> plots[display]([seq(G2[i], i=0..9)], scaling=constrained);
6. Slowly changing the equations of a torus (using periodic flattening of the circle to a line segment) leads to
a {pinched torus}:
> plot3d([(1+0.2*sin(u))*cos(v), (1+0.2*sin(u))*sin(v),0.2*sin(v)*cos(u)], v=0..2*Pi, u=0..2*Pi,style=patch);
9. The Mobius band
> plot3d([(5+sin(v/2)*u)*cos(v), (5+sin(v/2)*u)*sin(v),cos(v/2)*u], v=0..2*Pi, u=-1..1, grid=[60,10],scaling=CONSTRAINED, orientation=[-106,70],style=patch);
>
The n-times turned (through 180^0) twisted strip
> n:=3: plot3d([(5+u*sin(n*v/2))*cos(v), (5+u*sin(n*v/2))*sin(v), u*cos(n*v/2)], v=0..2*Pi, u=-1..1, grid=[60,10], scaling=CONSTRAINED, orientation=[-106,70], style=patch);
>
20.3 Ruled Surfaces
20.3.1 Some Types of Ruled Surfaces
7. The program and plot the normal surface and the binormal surface r_1(u,v)= (u)+v (u), r_2(u,v)= (u)+v (u),
The intermediate surfaces for some values of : (u,v)= (u)+v cos( ) (u)+v sin( ) (u).
> restart: with(plots): with(linalg):
Warning, existing definition for changecoords has been overwritten
Warning, protected name norm has been changed and unprotected
Warning, protected name trace has been changed and unprotected
> r:=array([cos(u)^2, cos(u)*sin(u), sin(u)]);
> spacecurve(r, u=-Pi..Pi, thickness=3); # Viviani, Fig. 20.28}
> p1:=plot3d([cos(u)*cos(v), cos(u)*sin(v), sin(u)],u=-Pi/2..Pi/2, v=0..2*Pi, grid=[30,60], style=patch):
> p2:=plot3d([0.5+cos(u)/2, sin(u)/2,v],v=-1.2..1.2, u=0..2*Pi, grid=[20,45]):
> display3d({p1, p2},scaling=constrained); # Viviani as intersection
> ru:=map(diff,r,u); ruu:=map(diff,ru,u);
> tt:=scalarmul(ru, 1/norm(ru,2)):
> b:=crossprod(ru, ruu): bb:=scalarmul(b, 1/norm(b,2)):
> nn:=crossprod(bb, tt): rn:=evalm(r+scalarmul(nn, v)):
> rt:=evalm(r+scalarmul(tt, v)): rb:=evalm(r+scalarmul(bb, v)):
> rtheta:=evalm(r+scalarmul(nn, v*cos(Pi/6))+scalarmul(bb, v*cos(Pi/6))):
> plot3d(rt, u=-Pi..Pi, v=-1.8..1.8, grid=[70,20],scaling=constrained);
> plot3d(rn, u=-Pi..Pi, v=-1..1, grid=[70,20], scaling=constrained);
> plot3d(rb, u=-Pi..Pi,v=-0.5..0.5, grid=[70,15], scaling=constrained);
> plot3d(rtheta, u=-Pi..Pi,v=-2..2, grid=[70,20], scaling=constrained);
>
20.3.2 Striction Curve and Distribution Parameter
3. Calculate using Maple the striction curve and the distribution parameter of the hyperbolic paraboloid.
> restart: with(linalg): d:=evalm([0, 1, a*u]/sqrt(1+(a*u)^2)):
Warning, protected name norm has been changed and unprotected
Warning, protected name trace has been changed and unprotected
> r:=vector([u,0,0]): ru:=map(diff, r, u): du:=map(diff, d, u);
> p(u):=simplify(det(matrix(3,3, [d,du,ru]))/dotprod(du, du, orthogonal));
>
20.4 Envelope of a One-Parameter Family of Surfaces
20.4.1 Theorem on an Envelope of Surfaces
Example 4 .
> for t from 1 to 6 do p[t]:=plot3d([.8*t+cos(u)*cos(v), cos(u)*sin(v), sin(u)], u=-Pi/2..Pi/2, v=0..2*Pi) od:
> p[7]:=plot3d([v, cos(u), sin(u)], u=-Pi-1..0, v=-0.5..6):
> plots[display]([seq(p[t], t=1..7)], scaling=constrained);
The envelope from Example 20.4.2:
> for t from 1 to 12 do p[t]:=plot3d([3*cos(t*Pi/6)+cos(u)*cos(v), 3*sin(t*Pi/6)+cos(u)*sin(v), sin(u)], u=-Pi/2..Pi/2, v=0..2*Pi) od:
> p[13]:=plot3d([(3+cos(u))*cos(v), (3+cos(u))*sin(v),sin(u)], u=-Pi-1.3..0.7, v=Pi/3..2*Pi):
> plots[display]([seq(p[t], t=1..13)], scaling=constrained);
>
The discriminant set of the family of cylindrical surfaces with
the axis OZ coincides with a plane {y=0}.
> p:=t-> plot3d([u^3+2*t, u^2/10, v], u=-1.5..1.5, v=0..0.1, grid=[60,10]): plots[display]([seq(p(t), t=1..7)], scaling=unconstrained);
> p:=t->plot([u^3+2*t, u^2/10, u=-1.1..1.1]): plots[display]([seq(p(t), t=1..7)]);