Nel post "solidi platonici2", ho inserito lo script per realizzare la primitiva di una sfera. Forse, tra i pochi che leggono i miei posts, qualcuno si chiederà: a che serve tutta quella complicazione? Infatti il comando:
sphere r
fornisce già confezionata una bella sfera primitiva di raggio r centrata in O. Però su questa sfera non possiamo intervenire con deformazioni specifiche, cosa che invece possiamo fare sulla primitiva del nostro script agendo sui vertici.
Occorre ricordare, però, che, a parte le calotte, formate da triangoli, la sfera è composta di quadrangoli, che devono rimanere piani. Per poter deformare la sfera a piacimento occorre riscrivere la primitiva della sfera con soli PGON triangolari, cosa che ho già fatto, ma che presenterò più tardi.
Per deformare la sfera basta considerare r=r(u,v) come funzione della latitudine v=180/m*j e della longitudine u=180/m*i
con 0<=u<360, - 90<=v<=90
Perché la sfera si raccordi bene dovrebbe risultare: r(0,v)=r(360,v)
Sicuramente, deformando soltanto i meridiani con la variabile v, lasciando circolari i paralleli, non risultano PGON quadrangolari sghembi, variando invece anche u in generale si generano PGON quadrangolari sghembi. Pertanto la sfera costruita in questo modo si presta a generare superfici di rotazione, a meno di non utilizzare come variabile per u non il raggio r, ma la distanza dall’asse verticale per il centro della sfera: r*cos(v)
Ponendo ad esempio r= (1+am*cos(v*f))* h, con f intero,
succede che per v=+/- 90 si annulla am*cos(v*f)), per cui i poli hanno sempre quota +/-h,
mentre in altri punti c’è uno spostamento lungo il raggio, positivo o negativo.
La variabile f definisce quanti picchi si creano.
Per ottenere la nuova superficie dalla sfera occorre intervenire solo sui vertici dello script:
Vert xc,yc,zc+r !polo nord
for j=1 to m-1
for i=0 to 2*m-1
v=90-180/m*j !j=0 polo N: v=90; j=m, polo sud: v=-90
u=180/m*i
Vert xc+r*cos(u)*cos(v),yc+r*sin(u)*cos(v),zc+r*sin(v)
next i
next j
Sopra abbiamo lo script della sfera di raggio r, sotto quello nuovo (con parametri h,am, f):
Vert xc,yc,zc+r !polo nord
for j=1 to m-1
for i=0 to 2*m-1
v=90-180/m*j !j=0 polo N: v=90; j=m, polo sud: v=-90
u=180/m*i
r= (1+am*cos(v*f))* h
Vert xc+r*cos(u)*cos(v),yc+r*sin(u)*cos(v),zc+r*sin(v)
next i
next j
r= h
Vert xc,yc,zc-r !polo sud
Per poter operare anche sui paralleli occorre considerare come parametro non r ma r*cos(v):
Vert xc,yc,zc+r !polo nord
for j=1 to m-1
for i=0 to 2*m-1
v=90-180/m*j !j=0 polo N: v=90; j=m, polo sud: v=-90
u=180/m*i
r= (1+am*sin(v*f))* h
Vert xc+ cos(u)* r*cos(v)*(1+ an*sin(u*g)),yc+sin(u)* r*cos(v)*(1+ an*sin(u*g)),zc+r*sin(v)next i
next j
r= h
Vert xc,yc,zc-r !polo sud
Di fatto abbiamo moltiplicato per un fattore del tipo (1+am*sin(v*f)), non solo il raggio r,
ma anche la proiezione su xy del raggio, data da r*cos(v) , che è diventata: r*cos(v)*(1+ an*sin(u*g)).
Questo tipo di deformazione essendo operata lungo i raggi ortogonali all’asse verticale, mantiene i PGON quadrilateri piani, come potete verificare dagli oggetti GDL che allego, costruiti in questo modo.
Variando i parametri potrebbero darvi delle idee per costruire oggetti di arredo, lampade o simili.