Back to draw-VTK

# 'draw'-VTK interface:Shells

## The model

Once you have opened a Maxima session, load package draw and then set global variable draw_renderer to vtk:

load("draw") $draw_renderer: 'vtk$


The surface of a shell is the result of the displacement of an ellipse along an helico-spiral curve. The mathematical model used here is explained in this paper.

h(a,b,s):= 1/sqrt((cos(s)/a)^2+(sin(s)/b)^2) $x(d,A,beta,phi,omega,mu,alpha,a,b,theta,s):= d*(A*sin(beta) * cos(theta) + h(a,b,s) * ( cos(s+phi)*cos(theta+omega) - sin(mu)*sin(s+phi)*sin(theta+omega) )) * exp(theta*cot(alpha))$

y(A,beta,phi,omega,mu,alpha,a,b,theta,s):=
(-A*sin(beta)*sin(theta)-
h(a,b,s) * ( cos(s+phi)*sin(theta+omega) +
sin(mu)*sin(s+phi)*cos(theta+omega) )) *
exp(theta*cot(alpha))$z(A,beta,phi,mu,alpha,a,b,theta,s):= (-A*cos(beta) + h(a,b,s)*sin(s+phi)*cos(mu)) * exp(theta*cot(alpha))$

degree: %pi/180$shell(d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax) := [background_color = navy, axis_3d = false, color = white, xu_grid = 250, yv_grid = 50, parametric_surface( x(d,A,beta,phi,omega,mu,alpha,a,b,theta,s), y(A,beta,phi,omega,mu,alpha,a,b,theta,s), z(A,beta,phi,mu,alpha,a,b,theta,s), theta, thetamin, thetamax, s, smin , smax)]$


## Bivalvia

Glycimeris glycimeris (Linnaeus, 1767).

(alpha:37*degree,
beta:90*degree,
phi:0*degree,
mu:1*degree,
omega:1*degree,
A:2,
a:2,
b:2.1,
d:1,
thetamin:0*%pi,
thetamax:8*%pi,
smin:0,
smax:2*%pi,

draw3d(
shell(
d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)))$ Origin: Galician coast. Barnea candida (Linnaeus, 1758). (alpha:39*degree, beta:50*degree, phi:0*degree, mu:1*degree, omega:1*degree, A:9000, a:6500, b:17000, d:1, thetamin:0*%pi, thetamax:8*%pi, smin:0, smax:2*%pi, draw3d( shell( d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )$


Origin: Galician coast.

## Gastropoda

Turritella communis (Risso, 1824).

(alpha:88.9*degree,
beta:4*degree,
phi:55*degree,
mu:1*degree,
omega:-2*degree,
A:22.2,
a:1.3,
b:1.5,
d:1,
thetamin:0*%pi,
thetamax:25*%pi,
smin:0,
smax:2*%pi,

draw3d(
shell(
d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )$ Origin: Galician coast. Nucella lapillus (Linnaeus, 1758). (alpha:86*degree, beta:11*degree, phi:-22*degree, mu:0*degree, omega:24*degree, A:95, a:20, b:35, d:1, thetamin:-8*%pi, thetamax:4*%pi, smin:0, smax:2*%pi, draw3d( shell( d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )$


Origin: Galician coast.

## Scaphopoda

Dentalium vulgare (Da Costa, 1778).

(alpha:17*degree,
beta:80*degree,
phi:-30*degree,
mu:1*degree,
omega:-60*degree,
A:5,
a:0.4,
b:0.4,
d:1,
thetamin:-4*%pi,
thetamax:4*%pi,
smin:0,
smax:2*%pi,

draw3d(
shell(
d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )$ Origin: Galician coast. ## Cephalopoda Spirula spirula (Linnaeus, 1758). (alpha:78*degree, beta:90*degree, phi:1*degree, mu:1*degree, omega:1*degree, A:2.1, a:0.7, b:0.7, d:1, thetamin:0*%pi, thetamax:4*%pi, smin:0, smax:2*%pi, draw3d( shell( d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )$


Origin: Galician coast.

Nautilus sp.

(alpha:80*degree,
beta:90*degree,
phi:0*degree,
mu:0*degree,
omega:0*degree,
A:2,
a:2,
b:1.5,
d:1,
thetamin:0*%pi,
thetamax:8*%pi,
smin:0,
smax:2*%pi,

draw3d(
shell(
d,A,beta,phi,omega,mu,alpha,a,b,thetamin,thetamax,smin,smax)) )\$


Origin: Pacific Ocean.