Funcións:
Podemos utilizar unha función para establecer dimensións ou transformacións. No seguinte exemplo usaremos a función coseno.
// Función coseno
nx=180;
for(i=[0:1:nx]) {
translate( [i, 0, 0] )
square( [1, 11+10*cos(10*i)], center=false );
}
Tamén poderiamos escribir a función e despois chamala: // Función seno
nx=180;
function y(x) = 11+10*sin(10*x);
for(i=[0:1:nx]) {
translate( [i, 0, 0] )
square( [1, y(i)] );
}
|
|
Funcións paramétricas en X e en Y:
Imos utilizar a funcións matemáticas para xerar unha figura. O que facemos é unir círculos con hull() que se van trasladando unha distancia p seguindo a función definida con anterioridade.
Neste exemplo utilizamos a función do corazón.
// corazón
w= 2; // espesor
e=0.5; // para escalar a función
p=1; // paso
res=12; // resolución
h=2; // altura
function x(t) = 50*pow(sin(t),3);
function y(t) = 40*cos(t)-15*cos(2*t)-6*cos(3*t)-3*cos(4*t);
linear_extrude(h) for(i=[-180:1:180]) {
hull(){
translate([e*x(i),e*y(i),0]) circle(d=w,$fn=res);
translate([e*x(i+p),e*y(i+p),0]) circle(d=w,$fn=res);
}
}
Proba con outras funcións. Por exemplo Lissajous: // parámetros de lissajous (escala a función e=30;) A = 2; B = 3; Phase = 30; // Phase in degrees E = 1.618; // Eccentricity 1->cadrado, 1.618-> golden ratio function x(t) = E*cos(A*t+Phase); function y(t) = sin(B*t);
|
|
Funcións paramétricas en X, Y e Z:
Imos debuxar un resorte. Facemos o mesmo que antes, pero trasladando unha esfera tamén no eixe Z. (F5!!)
// resorte
w= 5; // diámetro esfera
p=1; // paso
res=12; // resolución
n=4; // voltas
A=40;
C=0.03;
function x(t) = A*sin(t);
function y(t) = A*cos(t);
function z(t) = C*t;
for(i=[0:1:360*n]) {
hull(){
translate([x(i),y(i),z(i)]) sphere(r=w/2,$fn=res);
translate([x(i+p),y(i+p),z(i+p)]) sphere(r=w/2,$fn=res);
}
}
|
|
Curvar unha función:
Imos partir dunha función, por exemplo esta: y(t)= 1+sin(s*f*t)*cos(c*f*t);
// Función sin-cos
w= 2; // espesor
p=1; // paso
res=12; // resolución
// parámetros función
f=6; // frecuencia
s=1; // amplitude seno
c=2; // amplitude coseno
e=20; // escala
function f(t) = 1+sin(s*f*t)*cos(c*f*t);
for(i=[0:1:360]) {
hull(){
translate([i,e*f(i),0]) circle(d=w,$fn=res);
translate([(i+p),e*f(i+p),0]) circle(d=w,$fn=res);
}
}
|
|
Agora imos curvala facendo un aro. Para iso creamos dúas funcións gx(t) e gy(t), desprazando cada punto a distancia do radio do aro e cos(t) no eixe X e sin(t) no eixe Y.
// Función sin-cos en aro
w= 1; // espesor
p=1; // paso
res=12; // resolución
// parámetros función
f=10; // frecuencia
s=1; // amplitude seno
c=2; // amplitude coseno
e=4; // escala
// parámetros aro
r=20; // radio do aro
function f(t) = 1+sin(s*f*t)*cos(c*f*t);
function gx(t) = (r+e*f(t))*cos(t);
function gy(t) = (r+e*f(t))*sin(t);
for(i=[0:1:360]) {
hull(){
translate([gx(i),gy(i),0]) circle(d=w,$fn=res);
translate([gx(i+p),gy(i+p),0]) circle(d=w,$fn=res);
}
}
|
![]() ![]() ![]() |
Agora queda extruír. Se queres facer un brazalete, parte do aro e extrúe a altura que queiras.
Tamén podemos facer un vaso para unha planta o un lapiceiro extruíndo como vimos na páxina de “extrusión de polígonos”
linear_extrude( height=80, twist=90, $fn = 360, scale=1.5)
for(i=[0:1:360]) {
hull(){
translate([gx(i),gy(i),0]) circle(d=w,$fn=res);
translate([gx(i+p),gy(i+p),0]) circle(d=w,$fn=res);
circle(d=w,$fn=res);
}
}
|
![]() |
Propostas:
Colgante:
Utiliza calquera destas funcións e modifica os parámetros ata que atopes unha figura que che guste. Despois engade unha argola. Para engadir o aro pensa en cal sería o valor máximo da función no eixe x, e fai a translación en función dese parámetro.
// Hipotrocoides: a=30; b=15; n=6; function x(t) = (a*cos(t) + b*cos(a*t/n)); function y(t) = (a*sin(t) - b*sin(a*t/n));
|
//Pétalos n=6; // voltas A=25; // amplitude function x(t) = A*cos(n*t)*cos(t); function y(t) = A*cos(n*t)*sin(t);
|
Brazalete:
Deseña o teu brazalete modificando os parámetros de amplitude e indicando coa variable n o número de cristas:
// función seno en z x(t) = 50*sin(t); y(t) = 50*cos(t); z(t) = 25*sin(n*t);
|
// solenoide tórico x(t) = (R+r*cos(n*t))*cos(t); y(t) = (R+r*cos(n*t))*sin(t); z(t) = r*sin(n*t);
|
Maceta
A partir dunha función que che guste crea unha maceta ou un lapiceiro extruíndo.

Aneis de Borromeo
Rota para conseguir uns aneis de Borromeo
// anel: a=10; b=7; function x(t) = a*cos(t); function y(t) = b*sin(t); function z(t) = 0; |
![]() |















