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}]]