21.14 scherk.input¶
Scherk’s minimal surface, defined by: Scherk’s minimal surface ezcos(x)=cos(y). See: A Comprehensive Introduction to Differential Geometry, Vol. 3, by Michael Spivak, Publish Or Perish, Berkeley, 1979, pp. 249-252.
(xOffset, yOffset):DFLOAT Offsets for a single piece
of Scherk’s minimal surface
drawScherk(m,n) == Draw Scherk’s minimal surface
- free xOffset, yOffset on an m by n patch
- space := createThreeSpace() for i in 0..m-1 repeat xOffset := i*%pi for j in 0 .. n-1 repeat
- rem(i+j, 2) = 0 => ‘iter Draw only odd patches
- yOffset := j*%pi
- drawOneScherk(space) Draw a patch
- makeViewport3D(space, “Scherk’s Minimal Surface”)
scherk1(u,v) == The first patch that makes
x := cos(u)/exp(v) up a single piece of
point [xOffset + acos(x), yOffset + u, v, abs(v)] Scherk’s minimal surface
- scherk2(u,v) == The second patch
- x := cos(u)/exp(v) point [xOffset - acos(x), yOffset + u, v, abs(v)]
- scherk3(u,v) == The third patch
- x := exp(v) * cos(u) point [xOffset + u, yOffset + acos(x), v, abs(v)]
- scherk4(u,v) == The fourth patch
- x := exp(v) * cos(u) point [xOffset + u, yOffset - acos(x), v, abs(v)]
drawOneScherk(s) == Draw the surface by
breaking it into four
- patches and then drawing
- the patches makeObject(scherk1,-%pi/2..%pi/2,0..%pi/2,space==s, var1Steps == 28, var2Steps == 28) makeObject(scherk2,-%pi/2..%pi/2,0..%pi/2,space==s, var1Steps == 28, var2Steps == 28) makeObject(scherk3,-%pi/2..%pi/2,-%pi/2..0,space==s, var1Steps == 28, var2Steps == 28) makeObject(scherk4,-%pi/2..%pi/2,-%pi/2..0,space==s, var1Steps == 28, var2Steps == 28) void()