A Physical Model for Self-Similar Seashells
Paul A. Reiser

TL;DR
This paper introduces a coordinate-free physical model for self-similar seashell growth, using differential equations to describe the growth dynamics from both local and global perspectives, with practical implementation in Mathematica.
Contribution
It presents a novel coordinate-free differential equation model for seashell growth that links local biological parameters to global shell measurements.
Findings
Model accurately describes self-similar seashell growth.
Provides transformations between local and global shell representations.
Includes Mathematica code for simulation and visualization.
Abstract
This paper presents a simple physical model for self-similar (gnomonic, or first-order) seashell growth which is expressed in coordinate-free terms. The shell is expressed as the solution of a differential equation which expresses the growth dynamics, and may be used to investigate shell growth from both the local viewpoint of the organism building it and moving with the shell opening (aperture), as well as that of a researcher making global measurements upon a complete motionless shell. Coordinate systems needed to express the global and local descriptions of the shell are chosen. The parameters of growth, or their information equivalent, remain constant in the local system, and are used by the organism to build the shell, and are likely mirrored in the DNA of the organism building it. The transformations between local and global representations are provided. The global model of…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsElasticity and Material Modeling · Fluid Dynamics Simulations and Interactions · Structural Analysis and Optimization
A Physical Model for Self-Similar Seashells
Paul A. Reiser ([email protected])
Contents
1 Abstract
This paper presents a simple physical model for self-similar (gnomonic, or first-order) seashell growth which is expressed in coordinate-free terms. The shell is expressed as the solution of a differential equation which expresses the growth dynamics, and may be used to investigate shell growth from both the local viewpoint of the organism building it and moving with the shell opening (aperture), as well as that of a researcher making global measurements upon a complete motionless shell. Coordinate systems needed to express the global and local descriptions of the shell are chosen. The parameters of growth, or their information equivalent, remain constant in the local system, and are used by the organism to build the shell, and are likely mirrored in the DNA of the organism building it. The transformations between local and global representations are provided. The global model of Cortie[6], which is very similar to the present model, is expressed in terms of the present model, and the global parameters provided by Cortie for various species of mollusk may be used to calculate the equivalent local parameters.Mathematica code is provided to implement these transformations, as well as to plot the shells using both global and local parameters.
2 Introduction
Seashells of almost all types exhibit certain striking qualities and similarities. In particular, they approximate to varying degrees the property of self-similarity111In the present context, self-similarity means that the description of the shell at time is simply a magnified and rotated version of the shell at time .: Beyond a certain point in time, younger individuals practically differ from older individuals only in scale. Furthermore, to varying degrees, seashells appear to be different variations on one general theme: They wrap themselves in what is known as a logarithmic helico-spiral, which is self-similar. These properties suggest that a self-similar seashell can be described mathematically with a relatively small number of parameters which will account for the various shapes of the shells.
Models of seashell shapes generally describe the shell in terms of parameters derived from ”global” measurements of the shell (e.g., the angle of expansion, the size of the aperture, the chirality or handedness of the rotation). However, it is assumed that the organism does not have access to these global parameters but rather builds its shell using ”local” parameters that simply describe how to grow the shell, given only the present aperture.
In the present model, the growth at the aperture in an infinitesimal time interval is generally represented by an infinitesimal expansion, rotation, and displacement of the present aperture, without reference to the global shell geometry and without the need for an internal clock. (This may not be true in the case of shells with periodic knobs, such as Epitonium.) The present model is a special case of higher order models[1] and more detailed models which describe shell growth in terms of the biological and mechanical processes occurring at the aperture edge[2, 3]. This differential process of the present model, expressed as a differential equation, may then be integrated to obtain the shape of the entire shell. It is desired to express the shape and growth of the shell in terms of these constant local parameters. These local parameters are important since they, or their information equivalent, is encoded the the DNA of the organism, upon whose instructions the shell is built. The present model is a physical model rather than a descriptive model based on global shell measurements. It has all the attributes of a physical model: It is invariant with respect to position, time, orientation, and choice of coordinate system.
A rather complete review of the history and literature of seashell modeling is given in references [4] and [5]. The global model of Cortie[6] is of special interest. It essentially coincides with the results of the present model. Cortie gives global parameters for many species of mollusk and using the present model, these parameters may be used to derive the local parameters for the listed species.
In this paper, symbols in regular font (e.g. , , ) will stand for physical scalars, symbols in bold font (e.g. r, v) will stand for physical vectors (1st rank tensors) and large bold symbols (e.g. R, S, U ) will stand for physical vector operators (2nd rank tensors), unless otherwise noted. These tensors will have different representations in different coordinate systems, with vectors (1st-rank tensors) being generally represented by a 1x3 matrix (e.g. and vector operators (2nd-rank tensors) being represented by a 3x3 matrix. When dealing with only one coordinate system, no distinction will be made between the tensor and its representation, and when dealing with a physical process, the description will be independent of coordinate system. When multiple coordinate systems are being dealt with, a symbolic distinction will be made between the physical tensors and their representations in different coordinate systems.
3 The Logarithmic Spiral and Helico-spiral
A logarithmic spiral is a type of 2-dimension spiral. For a spiral centered at the origin, it may be expressed in 2-dimensional polar coordinates (r,) as:
where is the radial distance of the spiral from the origin at =0, and the angle is the angle between the forward-directed tangent to the spiral and the radius vector (from the origin to the spiral) which, for a logarithmic spiral, is constant, constrained by 222Alternatively[1], negative values of the angle may be included which will yield a left-handed spiral. In coordinate-free notation, the radius vector can be expressed as:
\mbox{\mathrm{\textbf{r}}}[\theta]=e^{\cot[\alpha]\theta}\,\mbox{{\normalsize{{R}}}}[\theta]\cdot\mbox{\mathrm{\textbf{r}}}[0]
where \mbox{\mathrm{\textbf{r}}}[0] is the radius vector at =0 and R[] is a rotation operator. In a Cartesian coordinate system, where \mbox{\mathrm{\textbf{r}}}[\theta] is represented by , the rotation operator is represented by:
\left(\begin{array}[]{cc}\cos[\theta]&-\sin[\theta]\\ \sin[\theta]&\cos[\theta]\end{array}\right)
The rotation operator may be expressed as the exponential of the product of the angle and the generator of the rotation:
where the generator is represented as:
\mbox{{\normalsize{{U}}}}=\left(\begin{array}[]{cc}0&-1\\ 1&0\end{array}\right)
This allows the centered logarithmic spiral to be expressed as:
[TABLE]
where, defining 1 as the 2x2 identity operator, S is the operator:
The spiral center is at , (i.e. \mbox{\mathrm{\textbf{r}}}[-\infty]=0). The spiral generated by the above equation is a ”right handed” or counter-clockwise spiral. Changing the sign of the term, or the U operator, but not both, will yield a left-handed spiral.
Equation 3.1 above may be extended to three dimensions to specify a logarithmic helico-spiral. In three dimensions, the generator of a right-handed rotation of angle about an axis given by a unit vector represented by can be represented by:
\left(\begin{array}[]{ccc}0&-u_{z}&u_{y}\\ u_{z}&0&-u_{x}\\ -u_{y}&u_{x}&0\end{array}\right)
and this, along with the 3x3 identity matrix, may be substituted into the expression for S in Eq. 3.1, yielding the Cartesian representation of a centered logarithmic helico-spiral. Rather than winding in a plane, the logarithmic helico-spiral winds right-handedly along a double cone with as the axis of both the cone and the rotation (see Figure 1). The helico-spiral can be specified by it’s projection onto the plane perpendicular to , and the cone around which it winds. While the parameter describes the projected plane spiral, a new parameter is required to specify the cone, where is the angle between the axis and any vector on the upper cone, or, equivalently, the angle between the - axis and any vector on the lower cone. This restricts to . The point on the cone at r[0] is as good as any other, so may be written as:
[TABLE]
In a more general formulation, the helico-spiral may be displaced and rotated from its ”standard” position described above, without altering its shape.
4 The Differential Equation of Shell Growth
One of the purposes of this model is to describe the shell from the point of view of a hypothetical organism building it. The edge of the shell aperture forms a closed, oriented curve in space and, for the purposes of this model, the organism is assumed to live on the aperture and, for building purposes, is only ”aware” of the aperture as it exists at the present time. Its building ”instructions” consist of a set of internalized constant parameters which determine, given the present aperture, the varying rate and direction of growth at each point on the aperture edge. These parameters, or their information equivalent, are mirrored in the organism’s DNA. These parameters are ”local” to the organism, as opposed to ”global” parameters which are used describe the shell in terms of measurements made by a researcher on the entire shell.
For building purposes, the organism doesn’t know its history or its orientation in space. It lives on the aperture and knows the aperture, and it knows what the aperture should be an infinitesimal time later and it builds new shell accordingly. It is assumed that the organism simply grows shell at its aperture edge at various predetermined rates (or possibly relative rates: slower growth rates when times are bad), without reference to any global considerations, such as the condition or shape of the entire shell. Using the present aperture as a measuring stick, it always ”sees” the same thing and this is the essence of the self-similarity of the shell structure.
Mathematically, it is assumed that the aperture is defined in terms of a right-handed Cartesian coordinate system (,,) with the plane being the ”aperture plane” and the axis being normal to that plane, pointed roughly in the direction of growth, ”out” of the shell. The aperture edge is described by the aperture function, also known as the generating curve. The aperture function is a vector function \mbox{\mathrm{\textbf{f}}}\,[s]=(f_{x}[s],f_{y}[s],f_{z}[s]), parametric in a variable , and describes the aperture edge at time . For example, if the aperture edge were a circle of radius , it could be described in the aperture coordinate system by \mbox{\mathrm{\textbf{f}}}\,[s]=\rho\,(\cos[s],\sin[s],0) where , in this case, is the angle from the local -axis to a point on the circle. \mbox{\mathrm{\textbf{f}}}\,[s] will also contain any number of parameters, such as in the above example, to describe the standard (time zero) aperture edge. It is assumed that the aperture at an infinitesimal time later is described by an infinitesimal advance of the aperture, magnification of the aperture, and rotation of the aperture. Mathematically, the aperture at time will be described by:
\mbox{\mathrm{\textbf{r}}}[t+\Delta t]=e^{\sigma\Delta t}\,\mbox{{\footnotesize{{R}}}}[\mbox{\boldmath\hat{u}},\omega\Delta t]\cdot\mbox{\mathrm{\textbf{r}}}[t]+\mbox{\mathrm{\textbf{A}}}[\Delta t]
where is the exponential enlargement of the aperture in time , \mbox{{\normalsize{{R}}}}[$$\hat{u}$$,\omega\Delta t]\cdot\mbox{\mathrm{\textbf{r}}}[t] is the rotation of \mbox{\mathrm{\textbf{r}}}[t] in time , with being the rotation rate, and \mbox{\mathrm{\textbf{A}}}[\Delta t] is the vector displacement of the center of the aperture in time ,
In the limit of infinitesimal , the aperture enlargement may be approximated to first order as:
The rotation can be described as a rotation by angle about an axis specified by a unit vector \mbox{\boldmath\hat{u}}=(u_{x},u_{y},u_{z}). Using the Rodrigues rotation formula:
\mbox{{\normalsize{{R}}}}[\mbox{\boldmath\hat{u}},\theta]\!=\!\mbox{{\normalsize{{1}}}}+\sin[\theta]\mbox{{\normalsize{{U}}}}+(1-\cos[\theta])\mbox{{\normalsize{{U}}}}\cdot\mbox{{\normalsize{{U}}}}
where 1 is the 3x3 identity matrix and U is the generator of the rotation, derived from :
\left(\begin{array}[]{ccc}0&-u_{z}&u_{y}\\ u_{z}&0&-u_{x}\\ -u_{y}&u_{x}&0\end{array}\right)
Infinitesimally, such a rotation may be represented as:
\mbox{{\normalsize{{R}}}}[\mbox{\boldmath\hat{u}},\omega\Delta t]=e^{\mbox{{\footnotesize{{U}}}}\,\omega\Delta t}\rightarrow\mbox{{\normalsize{{1}}}}+\omega\mbox{{\normalsize{{U}}}}dt.
The displacement vector \mbox{\mathrm{\textbf{A}}}[\Delta t] can be described infinitesimally as:
L[\Delta t]\rightarrow\mbox{\mathrm{\textbf{v}}}\,dt
where v is the forward displacement velocity of the aperture center, assumed to be constant from the aperture point of view. The infinitesimal growth equation may now be written as:
\mbox{\mathrm{\textbf{r}}}[t+dt]=(1+\sigma dt)(\mbox{{\normalsize{{1}}}}+\omega\mbox{{\normalsize{{U}}}}\,dt)\cdot\mbox{\mathrm{\textbf{r}}}[t]+\mbox{\mathrm{\textbf{v}}}dt
which yields the first order differential equation for the shell:
[TABLE]
This is the equation which describes the growth of the shell in terms of parameters , , and v which, from the point of view of the organism, moving with the aperture, are constant.
Define the operator and its inverse T, where and where . The solution to the above equation is then of the form:
r[t]=e^{\mbox{{\footnotesize{{S}}}}\,\omega t}\cdot\mbox{\mathrm{\textbf{K}}}-\mbox{{\normalsize{{T}}}}\cdot\mbox{\mathrm{\textbf{v}}}
where K is a vector that is constant in time, and is determined by boundary conditions. Since the vector function r[0]=f [s] is the equation of the aperture edge at , the solution is:
[TABLE]
This is the coordinate-free equation of the shell with general orientation and displacement. Making the substitutions , , \mbox{\mathrm{\textbf{f}}}\,[s]\rightarrow\mbox{\mathrm{\textbf{r}}}[0,s] it can be seen that \mbox{\mathrm{\textbf{r}}}[t,s] describes a family of logarithmic helico-spirals, parametric in , all originating at -\mbox{{\normalsize{{T}}}}\cdot\mbox{\mathrm{\textbf{v}}} growing along the \pm\mbox{\boldmath\hat{u}} axis. When the sign is positive, the shell grows on the upper cone with a right-handed twist, and when it is negative, the shell grows on the lower cone with a left handed twist. These spirals specify the two-dimensional surface of the shell. The origin of all spirals is the same:
\mbox{\mathrm{\textbf{r}}}[-\infty,s]=-\mbox{{\normalsize{{T}}}}\cdot\mbox{\mathrm{\textbf{v}}}
The shell centerline is given by setting \mbox{\mathrm{\textbf{f}}}\,[s]\rightarrow 0:
\mbox{\mathrm{\textbf{r}}}_{c}[t]=e^{\mbox{{\footnotesize{{S}}}}\,\omega t}\cdot\mbox{{\normalsize{{T}}}}\cdot\mbox{\mathrm{\textbf{v}}}-\mbox{{\normalsize{{T}}}}\cdot\mbox{\mathrm{\textbf{v}}}
In the following discussion, the term will be replaced by the angle , which is seen to be the angle of the projection of the centerline onto the plane of . The angle will still be referred to as the ”time”.
5 Local and Global Coordinate Systems
The solution \mbox{\mathrm{\textbf{r}}}[\theta,s] in the present model (Equation 4.4) is in coordinate-free notation. In order to actually perform calculations, a set of coordinate systems must be chosen in order to represent the various vectors and tensors as matrices. A global coordinate system is one in which the shell is motionless and in which measurements of the shell may be made. A local coordinate system moves with the aperture center, in which the aperture center is unvarying in time, and in which the aperture function undergoes only magnification in time, and in which organism lives. In the local system, representations of of various parameters such as the axis of rotation and the velocity take on constant values and constitute the unvarying ”instructions” by which the organism builds the shell. An aperture system is defined as a local system derived from the aperture itself and the organism’s orientation in that aperture, and is the only system available to the organism. Other local systems, derived from various vector quantities which are constant in the local system may also be defined (See e.g Appendix I), but are not accessible to the organism.
First, we may choose an aperture coordinate system, which is local, based on the aperture in some convenient way. For example, for an elliptical aperture, we may say that the ellipse lies on the aperture plane with \mbox{\mathrm{\textbf{f}}}[0] specifying the axis, and the axis is normal to that plane, forming a right-handed coordinate system. The -axis will be such that the component of the forward growth vector v is positive. If \mbox{\mathrm{\textbf{f}}}\,[s] is set to zero, \mbox{\mathrm{\textbf{r}}}[t] will specify the origin of that aperture coordinate system. The and v vectors will have a concrete and constant representation in this system, and the solution for \mbox{\mathrm{\textbf{r}}}[t] will yield the global shell in the aperture system. These technical concerns are of no concern to the organism, but rather are the result of our mathematical description of how the organism builds its shell.
We may next choose a global coordinate system in which the shell as a whole is at rest. It is convenient to choose the global origin to be the spiral origin at \mbox{\mathrm{\textbf{r}}}[-\infty]. Although it is not necessary, it is convenient to choose the global -axis to be parallel with the vector, which is constant in the global system as well, since it is an eigenvector of the rotation portion of the S operator. The representation of will differ depending upon global or local coordinate system, but the vector itself is constant in time in either system. We may choose a right-handed Cartesian coordinate system and set the origin of the aperture (\mbox{\mathrm{\textbf{r}}}_{c}[0]) at to lie in the global plane, such that the component of the aperture origin is positive. The component of \mbox{\mathrm{\textbf{r}}}_{c}[0] for right- and left-handed shells will be positive and negative respectively. In the global system, the vector will be unmoving, but the v vector will be moving, always equal to the velocity of the centerline (\mbox{\mathrm{\textbf{v}}}=d\mbox{\mathrm{\textbf{r}}}_{c}[t]/dt) in the global system. In a local system, both representations will be constant in time.
In the following, The subscript will stand for matrix representations in the particular global coordinate system chosen by the present model. The subscript will stand for representations in the particular local coordinate system chosen by the present model, which is an aperture coordinate system. In the spiral-centered global system of the present model, the equation the shell is:
\mbox{\mathrm{\textbf{r}}}_{P}[\theta,s]=e^{\mbox{{\footnotesize{{S}}}}_{P}\theta}\cdot(\mbox{{\normalsize{{T}}}}_{P}\cdot\mbox{\mathrm{\textbf{v}}}_{P}+\mbox{\mathrm{\textbf{f}}}_{P}[s])
while in the aperture system it is:
\mbox{\mathrm{\textbf{r}}}_{A}[\theta,s]=e^{\mbox{{\footnotesize{{S}}}}_{A}\theta}\cdot((\mbox{{\normalsize{{T}}}}_{A}\cdot\mbox{\mathrm{\textbf{v}}}_{A}+\mbox{\mathrm{\textbf{f}}}_{A}[s])-\mbox{{\normalsize{{T}}}}_{A}\cdot\mbox{\mathrm{\textbf{v}}}_{A}
In the present model, the axis is chosen to coincide with the global axis which yields \mbox{\mathrm{\textbf{u}}}_{P}=(0,0,1). is then equal to , where , is derived from \mbox{\mathrm{\textbf{u}}}_{P} in the usual way, and is then the matrix inverse of . The centerline at time zero is given by \mbox{\mathrm{\textbf{r}}}_{cP}[0]=\mbox{{\normalsize{{T}}}}_{P}\cdot\mbox{\mathrm{\textbf{v}}}_{P} which is set equal to , and \mbox{\mathrm{\textbf{f}}}_{P}[s] is the parametric representation of the aperture function in the present global coordinate system. In aperture coordinates, \mbox{\mathrm{\textbf{u}}}_{A}=(u_{x},u_{y},u_{z}) allowing , , and to be calculated, with \mbox{\mathrm{\textbf{f}}}_{A}[s] being the parametric representation of the aperture function in aperture coordinates, which is usually the simplest description of the aperture function. The constant local growth vector is given by \mbox{\mathrm{\textbf{v}}}_{A}=(v_{x},v_{y},v_{z}).
Except for position vectors, the local and global vector and operator representations will in general be related by some rotation such that for any vector q, \mbox{\mathrm{\textbf{q}}}_{P}=\mbox{{\normalsize{{R}}}}_{o}\cdot\mbox{\mathrm{\textbf{q}}}_{A}. It is desirable to express the aperture function in local terms, where it takes its simplest mathematical form. The global equation then will be:
[TABLE]
6 Local and Global Parameters
The global parameters are a set of six easily-measured parameters which describe the shell centerline. The global parameters are the angles and described above, , , and the components of the axis of rotation \mbox{\boldmath\hat{u}}_{P}. is the distance from the cone origin to the centerline position at time zero \mbox{\mathrm{\textbf{r}}}_{c}[0], and is equal to 1 for a right-handed spiral and -1 for a left-handed spiral. The representation of the unit vector , the axis of rotation, must be known as well, which requires two more constants.
The local parameters are a set of six parameters which the organism uses to define its centerline development. The local parameters are , and v. is counted as both a global and local parameter, while the centerline velocity v, consisting of three independent parameters, is purely local. The representation of the unit vector , the axis of rotation, must be known as well, which requires two more constants.
6.1 The Global Parameter
Assuming and , define the local parameter :
\cos[\gamma]=D\,\mbox{\boldmath\hat{u}}.\mbox{\mathrm{\textbf{v}}}/|\mbox{\mathrm{\textbf{v}}}|=|\mbox{\boldmath\hat{u}}.\mbox{\mathrm{\textbf{v}}}|/|\mbox{\mathrm{\textbf{v}}}|
which is the angle between v and the growth axis D\mbox{\boldmath\hat{u}}. The angle is restricted by . The angle is the angle between the axis and a point on the spiral centerline for the upper cone, and between the -\mbox{\boldmath\hat{u}} axis and the centerline on the lower cone. is thus restricted to . From Equation 3.2, the time-zero centerline \mbox{\mathrm{\textbf{r}}}_{c}[0] can be used to define . In local parameter terms:
\cos[\beta]=|\mbox{\mathrm{\textbf{r}}}_{c}[0].D\mbox{\boldmath\hat{u}}|/|\mbox{\mathrm{\textbf{r}}}_{c}[0]|=|(\mbox{{\normalsize{{T}}}}.\mbox{\mathrm{\textbf{v}}}).D\mbox{\boldmath\hat{u}}|/|\mbox{{\normalsize{{T}}}}.\mbox{\mathrm{\textbf{v}}}|=\cos[\gamma]\sqrt{\cos[\alpha]^{2}+\sin[\alpha]^{2}\cos[\gamma]^{2}}
Since and , the other trigonometric functions are easily calculated and may be calculated from local parameters by:
6.2 The Global Parameter
The parameter is the magnitude of the vector from the spiral origin to the centerline at time zero.
A=|\mbox{\mathrm{\textbf{r}}}_{c}[0]|=|\mbox{{\normalsize{{T}}}}.\mbox{\mathrm{\textbf{v}}}|=|\mbox{\mathrm{\textbf{v}}}|\sin[\alpha]\sqrt{1+\cos[\gamma]^{2}\tan[\alpha]^{2}}
6.3 The Global Parameter and Direction of Growth
The double cone on which the shell winds presents two growth possibilities: Growth upward from the origin at , with a right-handed rotation along the positive axis, or growth downward with a left-handed rotation along the -\mbox{\boldmath\hat{u}} axis. In other words, the growth axis may be either the +\mbox{\boldmath\hat{u}} or the -\mbox{\boldmath\hat{u}} axis333In Cortie’s model below, a parameter is specified a priori to handle these two cases. A negative value of effectively inverts the global coordinate system, so that all growth is downward, right-handedly for and left-handedly for .. In the present model, both growth directions are accepted, and the parameter is derivable from the local parameters. If the v vector points above the plane of , growth will be upward and right-handed, while if it points below, growth will be downward and left-handed. If v lies in the plane of , there will be no growth along an axis, only outward. Mathematically, the parameter may be expressed as:
D=\mbox{\boldmath\hat{u}}\cdot\mbox{\mathrm{\textbf{v}}}/|\mbox{\boldmath\hat{u}}\cdot\mbox{\mathrm{\textbf{v}}}|
The present model, when expressed terms of and v may use the parameter, with the understanding that it is not fundamental, but is rather derived from the fundamental and v vectors. This viewpoint of is necessary for the coordinate-free representation of the shell growth which is in turn necessary to express the growth process as a physical process, which in fact, it is.
6.4 The Global and Local v Parameter
The centerline velocity at time zero is given by:
\mbox{\mathrm{\textbf{v}}}=\mbox{{\normalsize{{S}}}}\cdot\mbox{\mathrm{\textbf{r}}}_{c}[0]
S is already defined using global parameters, so the \mbox{\mathrm{\textbf{r}}}_{c}[0] vector must be expressed in global parameters. Since \mbox{\mathrm{\textbf{r}}}_{c}[0] lies on the cone, for a coordinate system centered on the cone origin, \mbox{\mathrm{\textbf{r}}}_{c}[0] may be represented as:
[TABLE]
where D\cos[\beta]\mbox{\boldmath\hat{u}} is the component of \mbox{\mathrm{\textbf{r}}}_{c}[0] along the axis and is some unit vector in the plane of .
7 The Present Model
The present model in global terms chooses the central axis of the shell to be the positive axis so that \mbox{\boldmath\hat{u}}_{P}=(0,0,1), and specifies the location of the centerline at time zero to lie in the plane. Thus, using Equation 5.5,
[TABLE]
where
\left(\begin{array}[]{ccc}0&-1&0\\ 1&0&0\\ 0&0&0\end{array}\right)
and
places a right handed spiral on the upper cone and a left handed spiral on the lower cone. From Equation 6.6, the aperture center at time zero is:
\mbox{{\normalsize{{r}}}}_{cP}[0]=\mbox{{\normalsize{{T}}}}_{P}\cdot\mbox{\mathrm{\textbf{v}}}_{P}=A\,(\sin[\beta],0,D\,\cos[\beta])
and is an as yet undetermined transformation matrix which converts the local aperture function \mbox{\mathrm{\textbf{f}}}_{A}[s] to the global aperture function \mbox{\mathrm{\textbf{f}}}_{P}[s]. Generally, \mbox{\mathrm{\textbf{f}}}_{A}[s] may be chosen to be any cyclic continuous vector function of for which \mbox{\mathrm{\textbf{f}}}\,[0]=\mbox{\mathrm{\textbf{f}}}\,[2\pi]. As an example, if the aperture is elliptical in shape, then
\mbox{\mathrm{\textbf{f}}}_{A}[s]=R[s]\,\mbox{\boldmath\hat{n}}[s]
where and are constants and:
\mbox{\boldmath\hat{n}}[s]=(\cos[s],\sin[s],0)
The transformation matrix converts any local tensor representation to its global representation, including \mbox{\boldmath\hat{u}}_{A} and \mbox{\mathrm{\textbf{v}}}_{A}:
\mbox{{\normalsize{{R}}}}_{o}\cdot\mbox{\boldmath\hat{u}}_{A}=\mbox{\boldmath\hat{u}}_{P}
\mbox{{\normalsize{{R}}}}_{o}\cdot\mbox{\mathrm{\textbf{v}}}_{A}=\mbox{\mathrm{\textbf{v}}}_{P}
which is sufficient to define in terms of \mbox{\boldmath\hat{u}}_{P}, \mbox{\boldmath\hat{v}}_{P}, \mbox{\boldmath\hat{u}}_{A}, and \mbox{\boldmath\hat{v}}_{A}, but the representation is rather cumbersome and will not be written here, although an algorithmic representation of is easily implemented (See Appendix II). As shown in the next section, Cortie’s model can be used to express numerically using his provided measurements on actual shells.
8 Cortie’s Model
The model developed by Cortie[6] describes the shell in a global coordinate system using seven fundamental parameters, plus any number of parameters needed to describe the aperture function (e.g. the major and minor axes of an elliptical aperture). The seven main parameters are the four global parameters , , and , along with three angles, , , and . As in the present model, his model is a function of and . Cortie’s equations for the shell had some typographical errors, which were corrected by Picado[7], who also provides a Mathematica program for calculating Cortie’s model. Cortie’s corrected equations are:
[TABLE]
[TABLE]
[TABLE]
Cortie’s model is expressed in terms of a global coordinate system and yields essentially the same numerical results as the present model. Cortie’s model can be expressed in a concise form in a way very similar to the present model. Cortie’s function is better written and is a function of only to implement periodic knobs on the shell which will not be considered in this model, so the dependence of upon will be removed. Also, should properly be considered to involve any number of additional parameters needed to describe the aperture function. Defining \mbox{\mathrm{\textbf{r}}}_{C}[\theta,s]=(x[\theta,s],y[\theta,s],z[\theta,s]), and using the subscript to indicate representations in Cortie’s model, his model may be expressed as:
[TABLE]
where , being the generator of a rotation associated with the axis vector \mbox{\boldmath\hat{u}}_{C}=(0,0,-1):
\left(\begin{array}[]{ccc}0&1&0\\ -1&0&0\\ 0&0&0\end{array}\right)
and \mbox{\mathrm{\textbf{f}}}_{LC}[s] represents Cortie’s expression for the aperture function in local terms.
The D operator inverts the axis for . Cortie inverts the axis when D=-1 to generate a left-handed coordinate system, so that both left- and right-handed cases can be implemented on either the lower or the upper cone. Cortie chooses the lower cone since this is standard in the literature, but the D operator is not physical, which means the above equation is not a physical equation.
The D operator is given by:
\left(\begin{array}[]{ccc}D&0&0\\ 0&1&0\\ 0&0&1\end{array}\right)
\mbox{{\normalsize{{D}}}}\cdot\mbox{\mathrm{\textbf{r}}}_{c\,C}[0] is the location of the aperture origin at time zero always lying on the lower cone:
\mbox{\mathrm{\textbf{r}}}_{c\,C}[0]=A(\sin[\beta],0,-\cos[\beta])
Cortie’s global aperture function is parametric in and is given by \mbox{{\normalsize{{R}}}}_{oC}[\mu,\phi,\Omega]\cdot(R[s]\mbox{\boldmath\hat{n}}[s]), where is a rotation specified by angles , , and . It can be expressed as the product of three rotations[8]:
= \left(\begin{array}[]{ccc}\cos[\Omega]&\sin[\Omega]&0\\ -\sin[\Omega]&\cos[\Omega]&0\\ 0&0&1\end{array}\right)\cdot\left(\begin{array}[]{ccc}1&0&0\\ 0&\cos[\mu]&-\sin[\mu]\\ 0&\sin[\mu]&\cos[\mu]\end{array}\right)\cdot\left(\begin{array}[]{ccc}\cos[\phi]&0&-\sin[\phi]\\ 0&1&0\\ \sin[\phi]&0&\cos[\phi]\end{array}\right)
where the three angles are generally restricted by , , and .
It can be seen that the angles , and correspond to rotations around the , and axis respectively in a manner similar to a Tait-Bryan expression for a 3-D rotation[8], with . R[s]\mbox{\boldmath\hat{n}}[s] is Cortie’s expression for the local aperture function
\mbox{\mathrm{\textbf{f}}}_{LC}=R[s]\mbox{\boldmath\hat{n}}_{C}[s]
where
\mbox{\boldmath\hat{n}}_{C}[s]=(\cos[s],0,\sin[s])
This expresses the aperture in terms of an aperture plane on the plane with the normal in the direction. Cortie’s model could be extended to specify \mbox{\mathrm{\textbf{f}}}_{LC} as a general vector function of parameter , which need not be an angle in the plane. This is the case with the present model, in which the aperture function is described in terms of an aperture
plane on the plane with the normal in the direction, in local coordinates, and is not restricted to the aperture plane.
While Cortie’s model expresses \mbox{\mathrm{\textbf{r}}}_{C}[\theta,s] using the above mentioned seven global parameters, the present model uses four local parameters ( and v) and two chosen parameters . Since is normalized, it has only two independent parameters, and the angle is counted as both a global and local parameter.
Also, Cortie inverts the global coordinate system using the extra parameter in order to express both right and left-handed rotations on the lower cone of the helico-spiral. While the model is accurate, it is designed to describe the shell using easily-measured global parameters, rather than the parameters that the organism is using to build the shell. Also, the treatment of the handedness of rotation is rather artificial. The actual physical description of the shell must be coordinate-free, and must not depend upon inverting a coordinate system to describe different cases.
Cortie’s model can be related to the present model (see Equation 7.7):
[TABLE]
This is derived using:
\mbox{\mathrm{\textbf{r}}}_{c\,C}[0]=\mbox{{\normalsize{{g}}}}_{1}\cdot\mbox{\mathrm{\textbf{r}}}_{cP}[0]
\mbox{\mathrm{\textbf{f}}}_{LC}[s]=\mbox{{\normalsize{{g}}}}_{2}\cdot\mbox{\mathrm{\textbf{f}}}_{A}[s]
where
\left(\begin{array}[]{ccc}1&0&0\\ 0&1&0\\ 0&0&-D\end{array}\right)
\left(\begin{array}[]{ccc}1&0&0\\ 0&0&1\\ 0&1&0\end{array}\right)
It can be shown that:
\mbox{\mathrm{\textbf{r}}}_{C}=\mbox{{\normalsize{{J}}}}\cdot e^{\mbox{{\footnotesize{{S}}}}_{P}\theta}(\mbox{\mathrm{\textbf{r}}}_{cP}[0]+\mbox{{\normalsize{{g}}}}_{1}\cdot\mbox{{\normalsize{{R}}}}_{oC}\cdot\mbox{{\normalsize{{g}}}}_{2}^{-1}\cdot\mbox{\mathrm{\textbf{f}}}_{A})
where
so that the transformation matrix of the present model of equation 7.7 is related to Cortie’s transformation matrix by:
9 Calculating Local Parameters from Global Parameters
In the present model, transforms the \mbox{\mathrm{\textbf{f}}}_{P}[s] vector representation to \mbox{\mathrm{\textbf{f}}}_{A}[s], and is thus the coordinate transformation of any local vector representation to the global representation. Specifically,
[TABLE]
[TABLE]
Since \mbox{\mathrm{\textbf{r}}}_{cP}[0]=\mbox{{\normalsize{{T}}}}_{P}\cdot vP, and \mbox{\mathrm{\textbf{r}}}_{cP}=A\,{\sin[\beta],0,D\cos[\beta]} is known, it follows that \mbox{\mathrm{\textbf{v}}}_{P} can be determined by \mbox{\mathrm{\textbf{v}}}_{P}=\mbox{{\normalsize{{S}}}}_{P}\cdot\mbox{\mathrm{\textbf{r}}}_{c}[0] and
[TABLE]
Equations 9.13 and 9.15 above make the connection between the , , parameters and the local and global parameters of the present model, rather than leaving them as fundamental parameters as in Cortie’s model. Inverting , the above two equations are sufficient to determine the local parameters used by the organism to build the shell.
\mbox{\mathrm{\textbf{u}}}_{A}=\mbox{{\normalsize{{R}}}}_{o}^{-1}.\mbox{\mathrm{\textbf{u}}}_{P}
\mbox{\mathrm{\textbf{v}}}_{A}=\mbox{{\normalsize{{R}}}}_{o}^{-1}.\mbox{\mathrm{\textbf{v}}}_{P}
which yields the local parameters \mbox{\mathrm{\textbf{u}}}_{A} and \mbox{\mathrm{\textbf{v}}}_{A} in terms of the global, easily measurable, parameters. Conversely, the , , angles can, in principle, be expressed in terms of \mbox{\mathrm{\textbf{u}}}_{P} and\mbox{\mathrm{\textbf{v}}}_{P}, \mbox{\mathrm{\textbf{u}}}_{A} and \mbox{\mathrm{\textbf{v}}}_{A}, although the symbolic representation for in these terms is rather cumbersome. In the Mathematica code in Appendix II, the transformation matrix is calculated numerically from input values of \mbox{\mathrm{\textbf{u}}}_{P}, \mbox{\mathrm{\textbf{u}}}_{A}, \mbox{\mathrm{\textbf{v}}}_{P}, and \mbox{\mathrm{\textbf{v}}}_{A}.
10 The Aperture Function
The aperture function describes the aperture edge at time . It is a vector function (\mbox{\mathrm{\textbf{f}}}\,[s]=(f_{x}[s],f_{y}[s],f_{z}[s]) which describes a closed curve, parameterized by and it is assumed that \mbox{\mathrm{\textbf{f}}}\,[0]=\mbox{\mathrm{\textbf{f}}}\,[2\pi]. It is in the aperture system that the aperture function usually assumes its simplest expression. For simple cases (e.g. circle and ellipse), may be defined as the angle in the aperture plane from the point, which may be taken to be the -axis in the aperture plane, but in more complicated cases (e.g. a ”U” shaped aperture) using as an angle may yield an unusable double-valued function. The parameter may be chosen by convenience, and it is assumed that it is monotonically increasing with distance along the aperture curve.
For a given aperture function. there can be a certain ambiguity in the definition of the aperture plane. For example, a circular aperture, or any aperture contained in a plane, suggests that plane as the choice of the aperture plane, with \mbox{\mathrm{\textbf{f}}}_{z}[s] being equal to zero, but the aperture plane could just as easily be defined as being tilted and displaced with respect to the plane of the circle. This would entail \mbox{\mathrm{\textbf{f}}}_{z}[s] being generally non-zero. For apertures which vary in three dimensions, for which \mbox{\mathrm{\textbf{f}}}_{z}[s] is unavoidably non-zero, it is not clear how the aperture function defines the aperture plane, and thus the coordinate system for the aperture. This ambiguity results in an ambiguity in the v and u vectors, in that part of the displacement and rotation specified by the u and v vectors can be removed and placed into the aperture function. There can be various different choices of coordinate system and aperture function which yield exactly the same global results. In order to compare different shells, a consistent method of determining the aperture coordinate system is needed which makes no reference to global parameters.
One method to eliminate this ambiguity and to make the u and v vectors unambiguous is to require that the aperture function have no net displacement or rotation in the aperture frame. Mathematically, this would mean that, in the aperture system,
\oint\mbox{\mathrm{\textbf{f}}}\,[s]\,df=\mbox{\mathrm{\textbf{0}}}
for
where is the distance along the aperture curve from and
df=\left|\frac{\partial\,\mbox{\mathrm{\textbf{f}}}\,[s]}{\partial s}\right|\,ds
In other words, the description provided by \mbox{\mathrm{\textbf{f}}}\,[s] is constrained such that the average of the aperture function defines the origin of the aperture coordinate system444This is essentially the same definition used by Illert[1] who expressed the constraint as \mbox{\mathrm{\textbf{r}}}_{c}[\theta]=\oint\mbox{\mathrm{\textbf{r}}}\,[\theta,s]\,df=\mbox{\mathrm{\textbf{0}}} in a global system., and the plane of minimum variance defines the aperture plane.555It is assumed that the variation of the aperture function in the direction is less than the variation in the plane. For example, in the case of an elliptical aperture function, this would place the origin at the center of the ellipse, and the aperture plane would be the plane of the ellipse.
Another method to remove the ambiguity is to specify the aperture plane by using one of the two constant vectors available to the organism, namely the or v vector. Using the aperture average as the local origin, one of these two vectors could be specified as the aperture z-axis with the plane normal to them as the aperture plane. The problem with this approach is that the organism only has access to the aperture frame, and the information contained in the representations of and v are used to build the shell. A representation that uses one of these vectors will yield a trivial, and therefore useless representation of that vector.
A further issue is the problem of how the organism maintains its orientation in the aperture plane. In mathematical terms, the question is ”how does the organism define and maintain the and axes in the aperture coordinate system?”. The organism must store the information equivalent of the and v vectors, but in order to do so, they must be referenced to a coordinate system which is not defined by them, or any other vector derived from them and the angle.
In the present model, the -axis is arbitrarily chosen as the s=0 point in a mathematically convenient (and to that extent arbitrary) definition of the aperture function. The organism itself surely has an internal sense of direction in the plane but it would have to be quite immune to any disturbance of that sense in order to produce the very accurate shells seen in nature, without some sort of self-correcting mechanism. The aperture shape itself might be used in conjunction with the internal orientation to maintain orientation, but this would be impossible for a circular aperture. It may be that the idea that the organism has no sense of the global shell, and senses only the aperture, is not correct. The organism may be in contact with part of the shell that was created at a time roughly previously, and may use that contact region as a point of orientation.
With regard to the idea that the organism uses the aperture shape to determine orientation in the aperture plane, an examination of the correlation matrix for the aperture function is helpful. The correlation matrix for the aperture function in any coordinate system is:
where is the distance along the aperture edge from the point.
Since this matrix is positive semi-definite, it has three real orthonormal eigenvectors \mbox{\boldmath\hat{n}}_{1}, \mbox{\boldmath\hat{n}}_{2}, and \mbox{\boldmath\hat{n}}_{3} and three corresponding real, positive eigenvalues , , and . There exists a rotation matrix which will diagonalize this matrix, with the three positive eigenvalues on the diagonal, and, assuming the variation of \mbox{\mathrm{\textbf{f}}}[s] normal to the aperture plane is less than the variation of \mbox{\mathrm{\textbf{f}}}[s] in any direction in the aperture plane, the eigenvector with the smallest eigenvalue will specify the axis perpendicular to the aperture plane. We can specify this as the \mbox{\boldmath\hat{n}}_{3} vector. The other two eigenvectors could be chosen as an aperture-defined and axis in the aperture plane, as long as those eigenvalues are not equal to each other. If they are equal, then any linear combination of the two will also be an eigenvector of the correlation matrix, and no unique and axis may be defined from the correlation matrix. This is only a problem for a circular aperture. For example, a square aperture will have the two eigenvalues equal, yet one corner of the square could serve as a constant point of orientation. There are actually three pairs of unit eigenvectors, each element of a pair being opposite in sign. The organism has a sense of forward direction, and essentially knows the proper sign of \mbox{\boldmath\hat{n}}_{3}, and it will be such that \mbox{\boldmath\hat{n}}_{3}\cdot\mbox{\mathrm{\textbf{v}}}\,>\,0. The question of how the signs of the other two eigenvectors is determined is unresolved. This means that although we do not know how the organism stores the and components of an aperture representation, the information described by the present model’s choice of aperture system is nevertheless stored.
Once the aperture coordinate system has been defined, we need to find its relationship, at , to our chosen global coordinate system. Except for position vectors, the two will generally be related by a rotation, which requires three independent parameters. Cortie specifies this rotation by introducing three global Euler-like angles , and as parameters of the model. The present model specifies the rotation by realizing that the u vector in the aperture system coincides with a fixed vector in the global system, , and that the local v parameter coincides with the global direction of the centerline, d\mbox{\mathrm{\textbf{r}}}_{c}[\theta]/dt. The relationship between systems is thus specified by the local u and v vectors and the choice of local and global coordinate system, without requiring three new parameters.
In Cortie’s model, the growth axis (D\mbox{\boldmath\hat{u}}) is specified to be the global axis, (i.e. \mbox{\boldmath\hat{u}}=-\mbox{\boldmath\hat{z}}) and the aperture origin is the average of the aperture function for most cases (except Lyria and Epitonium). The aperture plane at is taken to be the global plane, rather than the plane as in the present model. For example, in the case of an ellipse, Cortie’s aperture function contains any rotation of the ellipse away from the plane at time zero. The rotation requires three parameters and Cortie’s model uses the , and parameters to specify such a rotation.
11 Conclusion
A physical model has been developed for the growth of self-similar seashells, expressed in differential form by Eq. 4.3 and in an integrated form by Eq. 4.4. As a physical model, it is expressed in coordinate-free notation involving length and time. The model may be expressed in terms of a chosen global coordinate system, at rest with respect to the shell, and using measured parameters of the shell, or in an aperture coordinate system fixed to the moving aperture, and using local parameters, which are the parameters used by the organism to build the shell. The present model makes specific choices of these coordinate systems, as does the model of Cortie[6]. Cortie’s model can be expressed in terms of the present model, and the measurements of Cortie on various species of mollusk can be used to calculate the local parameters of the present model. In Appendix II below, Mathematica code has been provided which implements transformations between coordinate systems, and plots various shells in both the local and global versions of the present model.
Hopefully, this paper will provide both a general mathematical framework by which various models may be compared, and an approach that will be helpful in determining the information needed by the organism in other higher-order models of the shell.
12 Appendix I - The Frenet Coordinate System
As developed by Illert[1] and used by Fowler[4], the Frenet coordinate system is sometimes used as a local coordinate system. The Frenet coordinate system is based on the centerline velocity vector v and the centerline acceleration vector a. At time :
\mbox{\mathrm{\textbf{a}}}=\frac{d^{2}\mbox{\mathrm{\textbf{r}}}_{c}}{d\theta^{2}}=\mbox{{\normalsize{{S}}}}\cdot\mbox{\mathrm{\textbf{v}}}
and as a function of time, \mbox{\mathrm{\textbf{a}}}[\theta]=e^{\mbox{{\footnotesize{{S}}}}\theta}\mbox{\mathrm{\textbf{a}}}.
The disadvantage of the Frenet coordinate system is that it cannot be used by the organism, since the aperture coordinate system, defined by the aperture, is the only coordinate system available to it. The organism cannot store a non-trivial representation of a vector parameter in a coordinate system defined that vector. Additionally, the v and a vectors are not sufficient to determine the handedness of the shell, so that the parameter cannot be derived from them, and must be defined a priori 666Illert[1] allows for negative values of to determine which is equivalent to using in this paper in which is restricted by .
The advantage of the Frenet coordinate system is that the representations of many of the vectors and tensors involved in the description of the shell take a particularly simple form, which simplifies the mathematical expression of a model of the shell. It also provides a simple system to deal with the inclination of the aperture plane with respect to the velocity vector, which Illert[1] separates into prosoclinal, orthoclinal, and (non-physical) opisthoclinal orientations according to whether the component of the normal vector in the v a plane lies between, on or outside those two vectors, respectively.
Defining v=|\mbox{\mathrm{\textbf{v}}}| and a=|\mbox{\mathrm{\textbf{a}}}| the coordinate vectors of the Frenet coordinate system form a right-handed coordinate system and are defined as:
\begin{array}[]{l}\mbox{\boldmath\hat{e}}_{z}=\mbox{\mathrm{\textbf{v}}}/v\\ \mbox{\boldmath\hat{e}}_{y}=\mbox{\mathrm{\textbf{v}}}\times\mbox{\mathrm{\textbf{a}}}/|\mbox{\mathrm{\textbf{v}}}\times\mbox{\mathrm{\textbf{a}}}|\\ \mbox{\boldmath\hat{e}}_{x}=\mbox{\boldmath\hat{e}}_{y}\times\mbox{\boldmath\hat{e}}_{z}\end{array}
In the aperture coordinate system, the basis unit vectors are represented as:
\begin{array}[]{l}\mbox{\boldmath\hat{x}}=(1,0,0)\\ \mbox{\boldmath\hat{y}}=(0,1,0)\\ \mbox{\boldmath\hat{z}}=(0,0,1)\end{array}
which allows the transformation matrix between the aperture coordinate system and Frenet coordinate systems to be calculated:
\left(\begin{array}[]{ccc}-\sin[\alpha]&\cos[\alpha]&0\\ -D\cos[\alpha]\cos[\gamma]&-D\sin[\alpha]\cos[\gamma]&\sin[\gamma]\\ \cos[\alpha]\sin[\gamma]&\sin[\alpha]\sin[\gamma]&D\cos[\gamma]\end{array}\right)
where for any vector q, \mbox{\mathrm{\textbf{q}}}_{A}=\mbox{{\normalsize{{F}}}}\cdot\mbox{\mathrm{\textbf{q}}}_{F} and the transpose of F is its inverse. In terms of v and a it can be shown that:
\cot[\alpha]=(\mbox{\mathrm{\textbf{v}}}\cdot\mbox{\mathrm{\textbf{a}}})/v^{2}
and:
\sin[\gamma]=|\mbox{\mathrm{\textbf{v}}}\times\mbox{\mathrm{\textbf{a}}}|/v^{2}
The following representations in the Frenet coordinate system (subscript ) result:
\mbox{\boldmath\hat{u}}_{F}=(0,\sin[\gamma],D\cos[\gamma])
\mbox{\mathrm{\textbf{v}}}_{F}=(0,0,v)
\mbox{\mathrm{\textbf{a}}}_{F}=v(\sin[\gamma],0,\cot[\alpha])
\mbox{\mathrm{\textbf{r}}}_{cF}[0]=v \left(\begin{array}[]{c}-\sin[\alpha]^{2}\sin[\gamma]\\ D\sin[\alpha]^{2}\tan[\alpha]\cos[\gamma]\sin[\gamma]\\ \tan[\alpha](\cos[\alpha]^{2}+\sin[\alpha]^{2}\cos[\gamma]^{2})\end{array}\right)
The Frenet representations for S and T follow directly. The normal to the aperture plane is given by:
\mbox{\boldmath\hat{z}}_{F}=(\cos[\alpha]\sin[\gamma],\,\sin[\alpha]\sin[\gamma],\,D\cos[\gamma)
13 Appendix II - Mathematica Code
The following modules are written for clarity rather than efficiency. There are three datasets, ”Global” for the global parameters of the present model, ”Local” for the local parameters in the aperture frame, and ”CortieGlobal” for the global parameters of Cortie.
13.1 Auxiliary Modules
(* Calculate the present model transformation matrix Ro given the
local and global values of u and v )
Clear[GetRo1]
GetRo1[uG_, uL_, vG_, vL_] :=
Module[{k, K, PL, PG, nPL, nPG, Cos[Epsilon], Sin[Epsilon], Ro},
k = Cross[vL - vG, uL - uG];
k = {kx, ky, kz} = k/Sqrt[k.k]; ( the axis of rotation for Ro *)
K = {{0, -kz, ky}, {kz, 0, -kx}, {-ky, kx, 0}}; (* The generator for Ro ) PL = -K.K.uL; ( The projection of uL onto the plane of k (assumes uL.uL[Equal]1) *)
PG = -K.K.uG; (*
The projection of uG onto the plane of k (assumes uG.uG[Equal]1) *)
If[Chop[PL.PL] == Chop[PG.PG],
Null, {Print ["GetRo1 ERROR1: PL.PL != PG.PG"], Abort[]}, Print["GetRo1 WARNING: PL.PL==PG.PG cannot be verified"]]; nPL = PL/Sqrt[PL.PL];(* normalized projection of uL *)
nPG = PG/Sqrt[PG.PG];(* normalized projection of uG *)
Cos[Epsilon] = nPL.nPG; (* Cosine of the angle of rotation *)
Sin[Epsilon] = k.Cross[nPL, nPG]; (* Sine of the angle of rotation *)
Ro = IdentityMatrix[3] + Sin[Epsilon] K + (1 - Cos[Epsilon]) K.K; (* The rotation (Rodriguez formula) *)
If[Chop[Ro.uL - uG] != 0, Print["GetRo1 ERROR 2"]]; If[Chop[Ro.vL - vG] != 0, Print["GetRo1 ERROR 3"]]; Ro ]
(* Calculate the present model transformation matrix Ro given [Mu],
[Phi], and [CapitalOmega] *)
Clear[GetRo2];
GetRo2[[Mu], [Phi], [CapitalOmega]_] :=
Module[{g1, g2, ig2, RoC, RoC[CapitalOmega], RoC[Mu], RoC[Phi],
Ro},
g1 = {{1, 0, 0}, {0, 1, 0}, {0, 0, -dd}};
g2 = {{1, 0, 0}, {0, 0, 1}, {0, 1, 0}};
ig2 = Inverse[g2];
RoC[CapitalOmega] = {{Cos[[CapitalOmega]], Sin[[CapitalOmega]],
0}, {-Sin[[CapitalOmega]], Cos[[CapitalOmega]], 0}, {0, 0,
1}};
RoC[Mu] = {{1, 0, 0}, {0, Cos[[Mu]], -Sin[[Mu]]}, {0, Sin[[Mu]],
Cos[[Mu]]}};
RoC[Phi] = {{Cos[[Phi]], 0, -Sin[[Phi]]}, {0, 1,
0}, {Sin[[Phi]], 0, Cos[[Phi]]}};
RoC = RoC[CapitalOmega].RoC[Mu].RoC[Phi];
Ro = g1.RoC.ig2;
Ro
]
(* Natalina Cafra from Cortie *) SetNatalina[] := Module[{}, [Alpha] = 80 Degree; [Beta] = 40 Degree; [Phi] = 55 Degree; [Mu] = 30 Degree; [CapitalOmega] = 10 Degree; dd = 1; aa = 25; a = 12; b = 16; uG = {0, 0, 1}; ]
13.2 Global to Local Parameter Transformation
The Mathematica module below calculates the local aperture parameters , \mbox{\mathrm{\textbf{u}}}_{A} \mbox{\mathrm{\textbf{v}}}_{A} and \mbox{\mathrm{\textbf{f}}}_{A} from the global parameters , , , , , (as dd), (as aa) and \mbox{\mathrm{\textbf{f}}}_{P}, according to the transformation matrix .
Clear[GlobalToLocal]; GlobalToLocal[{[Alpha], [Beta], aa_, dd_, uG_, fG_, Ro_}] :=
Module[{uGx, uGy, uGz, UG, II, SG, ro, uL, vL, fL, vG, vGx, vGy, vGz, iRo}, {uGx, uGy, uGz} = uG; UG = {{0, -uGz, uGy}, {uGz, 0, -uGx}, {-uGy, uGx, 0}}; II = IdentityMatrix[3]; SG = Cot[[Alpha]] II + UG; ro = aa { Sin[[Beta]], 0, dd Cos[[Beta]] }; vG = {vGx, vGy, vGz} = SG.ro; iRo = Inverse[Ro]; uL = iRo.uG; vL = iRo.vG; fL = iRo.fG; {[Alpha], uL, vL, fL, Ro} ]
Test the above with Cortie’s Natalina Cafra data Natalina Cafra
SetNatalina[] (* Load Cortie’s Natalina Cafra parameters *)
(* Convert local FL to global manually, and apply to GlobalToLocal *)
Rs = 1/Sqrt[Cos[s]^2/a^2 + Sin[s]^2/b^2]; ns = {Cos[s], Sin[s], 0}; Ro = GetRo2[[Mu], [Phi], [CapitalOmega]]; fG = Rs Ro.ns;
Global = N[{[Alpha], [Beta], aa, dd, uG, fG, Ro}]; Local = {[Alpha], uL, vL, fL, Ro} = GlobalToLocal[Global];
Print["uL = ", uL] Print["vL = ", vL] Print["fL = ", Chop[FullSimplify[fL]]]
(* Results: uL = {-0.709406,-0.496732,-0.5} vL = {-9.07886,-6.35709,12.443} fL = {(1. Cos[s])/Sqrt[0.00542535 +0.0015191 Cos[2 s]],(1. Sin[s])/Sqrt[0.00542535 +0.0015191 Cos[2 s]],0} *)
13.3 Local to Global Parameter Transformation
The Mathematica module below calculates the global parameters , , (as aa), (as dd), \mbox{\boldmath\hat{r}}_{P} and \mbox{\mathrm{\textbf{f}}}_{P}, from local parameters , \mbox{\mathrm{\textbf{u}}}_{A} \mbox{\mathrm{\textbf{v}}}_{A} and \mbox{\mathrm{\textbf{f}}}_{A} according to the transformation matrix .
In[89]:= Clear[LocalToGlobal] LocalToGlobal[{[Alpha], uL, vL_, fL_, Ro_}] := Module[{ux, uy, uz, UL, II, dd, Cos[Gamma], Sin[Gamma], Cos[Beta], Sin[Beta], [Beta], SL, TL, roL, aa, uG, fG, [Phi], [Mu], [CapitalOmega]}, {ux, uy, uz} = uL; UL = {{0, -uz, uy}, {uz, 0, -ux}, {-uy, ux, 0}}; II = IdentityMatrix[3]; dd = uL.vL/Sqrt[(uL.vL)^2]; Cos[Gamma] = dd uL.vL/Sqrt[vL.vL]; Sin[Gamma] = Sqrt[1 - Cos[Gamma]^2]; Cos[Beta] = Cos[Gamma]/Sqrt[ Cos[[Alpha]]^2 + Cos[Gamma]^2 Sin[[Alpha]]^2]; Sin[Beta] = (Cos[[Alpha]] Sin[Gamma])/Sqrt[ Cos[[Alpha]]^2 + Cos[Gamma]^2 Sin[[Alpha]]^2]; [Beta] = ArcTan[Cos[Beta], Sin[Beta]]; SL = Cot[[Alpha]] II + UL; TL = Inverse[SL]; roL = TL.vL; aa = Sqrt[roL.roL];(* also aa= Sqrt[vL.vL]Sin[[Alpha]]Sqrt[ 1+ Cos[Gamma]^2 Tan[[Alpha]]^2] *) uG = Ro.uL; fG = Ro.fL;
{[Alpha], [Beta], aa, dd, uG, fG, Ro} ]
Test the above with Cortie’s Natalina Cafra data Natalina Cafra
In[78]:= SetNatalina[] (* Load Cortie’s Natalina Cafra parameters *)
(* Calculate fG manually *) Rs = 1/Sqrt[Cos[s]^2/a^2 + Sin[s]^2/b^2]; ns = {Cos[s], Sin[s], 0}; NRo = GetRo2[[Mu], [Phi], [CapitalOmega]]; fG = Rs NRo.ns;
In[94]:= (* Recover Cortie’s Natalina Cafra parameters *)
Global = N[{[Alpha], [Beta], aa, dd, uG, fG, NRo}]; Local = {[Alpha], uL, vL, fL, NRo} = GlobalToLocal[Global]; Global2 = {[Alpha], [Beta], aa, dd, uG, fG, NRo} = LocalToGlobal[Local];
In[100]:= Chop[FullSimplify[Global2 - Global]]
13.4 Plot using Global Parameters
The Mathematica module below plots the shell using global parameters, including the transformation angles , , and .
Clear[PlotShellGlobal]
PlotShellGlobal[{[Alpha], [Beta], [Phi], [Mu],
[CapitalOmega], dd, aa_, uG_, fG_}] :=
Module[{[Theta], uGx, uGy, uGz, UG, SG, TG, ro, Rs, vG, g1, g2, ig2, RoC[Phi], RoC[Mu], RoC[CapitalOmega], Ro, r0, r0c, tmax, tmin, plot1, plot2},
{uGx, uGy, uGz} = uG; UG = {{0, -uGz, uGy}, {uGz, 0, -uGx}, {-uGy, uGx, 0}}; SG = Cot[[Alpha]] II + UG; TG = Inverse[SG]; ro = aa { Sin[[Beta]], 0, dd Cos[[Beta]] }; vG = {vGx, vGy, vGz} = SG.ro; Ro = GetRo2[[Mu], [Phi], [CapitalOmega]]; r0 = Chop[N[MatrixExp[SG [Theta]].(TG.vG + fG)]]; r0c = Chop[N[MatrixExp[SG [Theta]].(TG.vG + .01 fG)]]; tmin = -8 [Pi]; tmax = 0; plot1 = ParametricPlot3D[r0, {[Theta], tmin, tmax}, {s, 0, 2 [Pi]}, PlotStyle -> Opacity[0.6], Mesh -> None, PlotPoints -> 80]; plot2 = ParametricPlot3D[r0c, {[Theta], tmin, tmax}, {s, 0, 2 [Pi]}, PlotPoints -> 80]; Show[plot1, plot2, AxesLabel -> {x, y, z}, PlotRange -> All] ]
SetNatalina[] (* Load Cortie’s Natalina Cafra parameters *)
ns = {Cos[s], Sin[s], 0}; Rs = 1/Sqrt[Cos[s]^2/a^2 + Sin[s]^2/b^2]; Clear[fL, fG]; fL = Rs ns; fG = GetRo2[[Mu], [Phi], [CapitalOmega]].fL;
Global = N[{[Alpha], [Beta], [Phi], [Mu], [CapitalOmega], dd, aa, uG, fG}]; PlotShellGlobal[Global]
13.5 Plot Using Local Parameters
The Mathematica module below plots the shell using local parameters. The transformation matrix is not needed to convert \mbox{\mathrm{\textbf{f}}}_{A} and is not used, it is only kept for compatibility with the other modules. Note that the origin is the center of the aperture at time zero.
Clear[PlotShellLocal] PlotShellLocal[{[Alpha], uL, vL_, fL_, Ro_}] := Module[{[Theta], UL, uLx, uLy, uLz, SL, TL, ro, r, rc, tmin, tmax, plot1, plot2}, {uLx, uLy, uLz} = uL; UL = {{0, -uLz, uLy}, {uLz, 0, -uLx}, {-uLy, uLx, 0}}; II = IdentityMatrix[3]; SL = Cot[[Alpha]] II + UL; TL = Inverse[SL]; ro = TL.vL; r = Chop[N[Simplify[MatrixExp[SL [Theta]].(ro + fL) - ro]]]; (* The shell *)
rc = Chop[ N[Simplify[MatrixExp[SL [Theta]].(ro + .01 fL) - ro]]]; (* The centerline, 0.01 thick *) tmin = -8 [Pi]; tmax = 0; plot1 = ParametricPlot3D[r, {[Theta], tmin, tmax}, {s, 0, 2 [Pi]}, PlotStyle -> Opacity[0.6], Mesh -> None, PlotPoints -> 80]; plot2 = ParametricPlot3D[rc, {[Theta], tmin, tmax}, {s, 0, 2 [Pi]}, PlotPoints -> 80]; Show[plot1, plot2, AxesLabel -> {x, y, z}, PlotRange -> All] ]
SetNatalina[] (* Load Cortie’s Natalina Cafra parameters *)
(* Calculate fG from Cortie’s data *) ns = {Cos[s], Sin[s], 0}; Rs = 1/Sqrt[Cos[s]^2/a^2 + Sin[s]^2/b^2]; Ro = GetRo2[[Mu], [Phi], [CapitalOmega]]; Clear[fL, fG] fL = Rs ns; fG = Ro.fL;
Global = N[{[Alpha], [Beta], aa, dd, uG, fG, Ro}]; Local = FullSimplify[GlobalToLocal[Global]]; plot1 = PlotShellLocal[Local]
14 Bibliography
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1[1] Illert, C., ”Formulation and Solution of the Classical Seashell Problem. II. - Tubular Three-Dimensional Seashell Surfaces”, Il Nuovo Cimento, 11,5, (Maggio 1989). doi = 10.1007/BF 02451562 https://www.researchgate.net/publication/225310303
- 2[2] Shiva Rudraraju, Derek E. Moulton, Régis Chirat, Alain Goriely, Krishna Garikipati, ”A computational framework for the morpho-elastic development of molluskan shells by surface and volume growth” ar Xiv:1901.00497 v 1 [q-bio.QM] 2 Jan 2019.
- 3[3] D. Ambrosi, G.A. Ateshian, E.M. Arruda, S.C. Cowin, J. Dumais, A. Goriely, G.A. Holzapfel, J.D. Humphrey, R. Kemkemer, E. Kuhl, J.E. Olberding, L.A. Taber, K. Garikipati. ”Perspectives on biological growth and remodeling” Journal of the Mechanics and Physics of Solids 59 (2011) 863–883.
- 4[4] Deborah R. Fowler, Hans Meinhardtz and Przemyslaw Prusinkiewiczy, ”Modeling seashells”, Computer Graphics, 26, 2, (July 1992), ACM SIGGRAPH, New York, pp. 379-387. http://deborahrfowler.com/Math For VSFX/My Stuff/shells.sig 92.pdf
- 5[5] Christian Van Osselaer and Philippe Grosjean, ”Suture and location of the coiling axis in gastropod shells”, Paleobiology, Volume 26, Issue 2, Spring 2000 , pp. 238-257. https://www.researchgate.net/publication/247855429
- 6[6] M. B. Cortie. Models for mollusc shell shape. South African Journal of Science, 85:454-460, 1989. https://www.researchgate.net/publication/238757952
- 7[7] Jorge Picado (Universidade de Coimbra - Portugal), ”Seashells: the Plainness and Beauty of Their Mathematical Description,” Convergence (February 2010), DOI:10.4169/loci 003294. https://www.maa.org/press/periodicals/loci/seashells-the-plainness-and-beauty-of-their-Mathematical-description
- 8[8] P. B. Davenport. ”Rotations about nonorthogonal axes.” AIAA Journal, Vol. 11, No. 6 (1973), pp. 853-857. https://arc.aiaa.org/doi/abs/10.2514/3.6842?journal Code=aiaaj
