Application Center - Maplesoft

# 3-D surface models of seashells

You can switch back to the summary page by clicking here.

Seashells.mws

Virtual Seashells

by Alain Goriely, goriely@math.arizona.edu,
( http://www.math.arizona.edu/~goriely)

Abstract: This worksheet show how to represent seashells.
Application Areas/Subjects: Education, Biology, 3D graphics
Keywords: Seashells, 3D plots
Prerequisites: plots

Note: Send me an e-mail (comments-criticisms) if you use this worksheet.

> restart:with(plots):

```Warning, the name changecoords has been redefined
```

Introduction

Seashells can be represented by surfaces in 3D. Their self similar shape can be generated by a simple formula with a certain number of free parameters. Let ( ) be a point on the shell. Then, this point can be written in the following form:

=

=

This formula was obtained by A. Cortie and follows a series of basic rotations around the different axes (helical axis, body axis, etc..). In this formula the parameters are:

• : polar coordinates
• : tilt of ellipse major axis from horizontal plane
• : angle on each cross section
• : angle between the plane of the cross section and the helical axis
• : rotation of the elliptical cross section with respect to the horizonatl plane
• : angle between the helical axis ( ) and local aperture line
• R: length of aperture generating curve (can itself be a function of parameters and s to have a nonuniform cross sections
• a: major semiaxis of the elliptical cross section
• b: minor semiaxis
• D: sense of coiling

The following worksheet is a straightforward application of this formula for different typical shapes of seashells. It is not a profound exercice (it is actually straightforwad).

Just try to have fun with virtual seashells! I

f anybody has the courage to do it, it would be nice to transform these plots in vrml (easy) and apply realistic textures files (harder). It would be nice to have a real 3D virtual seashells museum in vrml (let me know!).

The model

> x:=D*(A*sin(beta)*cos(Theta)+R*cos(s+phi)*cos(Theta+Omega)-R*sin(mu)*sin(s+phi)*sin(Theta+Omega))*exp(Theta*cot(alpha)):
y:=(-A*sin(beta)*sin(Theta)-R*cos(s+phi)*sin(Theta+Omega)-R*sin(mu)*sin(s+phi)*cos(Theta+Omega))*exp(Theta*cot(alpha)):
z:=(-A*cos(beta)+R*sin(s+phi)*cos(mu))*exp(Theta*cot(alpha)):

> SR:=R=RE+k;
SRE:=RE=1/sqrt(cos(s)^2/a^2+sin(s)^2/b^2);
Sk:=k=L*exp(-(2*(s-P)/W[1])^2)*exp(-(2*g/W[2])^2);
Sg:=g=2*Pi/N*(Theta*N/2/Pi-round(Theta*N/2/Pi));

Natalina

R1:=subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])):

Lyria

R1:=subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])):

Turritella

R1:=subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])):

Oxystele

R1:=subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])):

Nautilus

R:=simplify(subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])));

Planorbis

R:=simplify(subs(S,subs(SR,SRE,Sk,Sg,[x,y,z]))):

Ammonite

R1:=simplify(subs(S,subs(SR,SRE,Sk,Sg,[x,y,z]))):

Conus

R:=subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])):

Helcion

R:=simplify(subs(S,subs(SR,SRE,Sk,Sg,[x,y,z])));

Codakia

R2:=simplify(subs(S,subs(SR,SRE,Sk,Sg,[x,y,z]))):

> R1:=simplify(subs(S1,S2,subs(SR,SRE,Sk,Sg,[x,y,z]))):

Struthiolaria