Conchas marinhas: a simplicidade e beleza da sua descrição matemática

O modelo completo



Se quisermos acrescentar nódulos, espinhos e estrias à concha, bastará considerar os seguintes parâmetros [1], ilustrados na figura:


W1: comprimento do nódulo ao longo da geratriz.

W2: comprimento do nódulo ao longo da helicóide.

L: altura do nódulo.

P: ângulo que mede a posição do nódulo na geratriz.

e ainda

N: número de nódulos encontrados enquanto o ângulo roda 360o.


Bastará então substituir a equação da elipse geradora


por

onde, caso W1=0 ou W2=0 ou N=0,

e, caso W1, W2 e N sejam não nulos,

com

Nota importante: este modelo contém o caso anterior, mais simples, das conchas sem nódulos; basta para isso tomar L=0.

A variação destes novos parâmetros altera significativamente a forma da concha. Para perceber melhor quais as alterações que ocorrem na concha quando se variam estes parâmetros, observe os seguintes aplicativos interactivos (na página do projecto Atractor):
Variação na curva geradora
Variação ao longo da helicóide
Variação na concha.

No total, as equações da superfície da concha dependem de 14 parâmetros (os últimos quatro só são relevantes caso L seja diferente de zero):
D, A, , , , , , a, b, L, P, W1, W2, N.


Finalmente, as dimensões:

omin, omax: valores mínimo e máximo de

smin, smax: valores mínimo e máximo de s

Os parâmetros od e sd determinam a resolução com que a superfície da concha é traçada (por exemplo, se os nódulos forem muito finos e compridos teremos que usar valores muito pequenos de od e sd de modo a que sejam desenhados sem grande deformação).

Implementação do modelo


A implementação deste modelo no Mathematica pode ser feita do seguinte modo:

l[n_][theta_] = (2Pi/n)((n theta/2Pi) - IntegerPart[n theta/2Pi]);

k[a_,b_,ll_,p_,w1_,w2_,n_][s_,theta_] = If[w1=0||w2=0||n=0,0, ll Exp[-(2(s-p)/w1)^2-(2l[n][theta]/w2)^2]];

h[a_,b_,ll_,p_,w1_,w2_,n_][s_,theta_] = (1/(Sqrt[(Cos[s]/a)^2+(Sin[s]/b)^2])) + k[a_,b_,ll_,p_,w1_,w2_,n_][s_,theta_];

x[d_,aa_,beta_,phi_,omega_,mu_,alpha_,a_,b_,ll_,p_,w1_,w2_,n_][theta_,s_] = 

      d(aa Sin[beta] Cos[theta] + h[a,b,ll,p,w1,w2,n][s,theta]

             (Cos[s+phi] Cos[theta+omega] - Sin[mu] Sin[s+phi] Sin[theta+omega])) Exp[theta Cot[alpha]];

y[aa_,beta_,phi_,omega_,mu_,alpha_,a_,b_,ll_,p_,w1_,w2_,n_][theta_,s_] = 

      (-aa  Sin[beta] Sin[theta] - h[a,b,ll,p,w1,w2,n][s,theta]

             (Cos[s+phi] Sin[theta+omega] + Sin[mu] Sin[s+phi] Cos[theta+omega]))Exp[theta Cot[alpha]];

z[aa_,beta_,phi_,mu_,alpha_,a_,b_,ll_,p_,w1_,w2_,n_][theta_,s_] =
    
      (-aa  Cos[beta] + h[a,b,ll,p,w1,w2,n][s,theta] Sin[s+phi] Cos[mu]) Exp[theta Cot[alpha]];

%EXEMPLO: NÁTICA DE ORELHA

With[{d=1,aa=25,beta=42Degree,phi=70Degree,omega=30Degree,mu=10Degree,alpha=83Degree,a=12,b=20,ll=0,p=0,w1=0,w2=0,n=0}, 

ParametricPlot3D[{x[d,aa,beta,phi,omega,mu,alpha,a,b,ll,p,w1,w2,n][theta,s],

                  y[aa,beta,phi,omega,mu,alpha,a,b,ll,p,w1,w2,n][theta,s],

                  z[aa,beta,phi,mu,alpha,a,b,ll,p,w1,w2,n][theta,s]}, 

                 {theta, -4Pi, 4Pi}, {s, 0 Degree, 360 Degree},

                 Boxed -> False, Axes -> False, PlotPoints -> {100,20}, PlotRange -> All, ViewPoint -> {-1,-3,0.5}]]

[1] M. B. Cortie, Digital seashells, Comput. & Graphics 17 (1993) 79-84.

8 Set 23:55:10 2007 / Jorge Picado

Modelo básico | Voltar para o Índice