Estas figuras se utilizan principlmente en la extrusión de figuras 3D, en las que se toman como base de partida imágenes en 2D. Las primitivas 2D, al renderizar, tienen un grosor infinitamente pequeño, pero en la previsualización se muestran con un grosor de 1mm.
Crea un cuadrado (especificando el lado) o un rectángulo (especificando los lados en coordenadas [x,y]) que puede estar centrado en el origen (en el centro de la figura) o haciendo esquina en este (center = false).
square(size = [x, y], center = true/false); square(size = x , center = true/false); square(size = [1, 1], center = false); // Valores por defecto square([15,10], true);
Crea una circunferencia especificando el radio 'r' (o de forma explícita, el diámetro 'd'), centrada en el origen. Es posible usar las variables especiales $fa, $fs y $fn para definir la resolución polifonal de las superficies esféricas. Se recomienda usar $fn: número de polígonos en 360 grados.
circle(r=radius | d=diameter); circle($fn = 0, $fa = 12, $fs = 2, r = 1); // Por defecto circle(10);
Para crear una elipse se utilizan las funciones escale() o resize(), que pueden verse en el apartado Transformaciones, junto con la función circle().
Para crear un polígono cualquiera, se especifican las coordenadas [x,y] de cada uno e los vértices. Cada coordenada se identifica con un índice, según el orden en que ha sido declarada, partiendo de 0.
Después se especifica la forma del polígono indicando los vértices en sentido antihorario, que forman el polígono, nombrándolos según su índice (si no se especifico toma el orden en que fueron declarados). Si se especifican varias formas, se “restan” a la primera, de igual menra que ocurriría con la función difference().
Por último se declara la variable entera “convexity”, cuyo valor habitual es 10, y que sólo sirve para ver bien la figura en la previsualización, no tiene ningún efecto en el renderizado.
polygon(points = [ [x, y], ... ], paths = [ [p1, p2, p3..], ...], convexity = N);
verticesPoligono=[
[0,0], // 0
[100,0], // 1
[100+20,0+80], // 2
[0+20,0+80], // 3
[0+20,0+20], // 4
[100-10,0+20], // 5
[100+20-20,0+80-20], // 6
[0+20+10, 0+80-20] // 7
];
//polygon(verticesPoligono,[[0,1,2,3]]);
polygon(verticesPoligono,[[0,1,2,3],[4,5,6,7]]);
Un polígono regular podría crearse a partir de la función circle(), definiendo el parámetro $fn con el número de lados; sin embargo no se recomienda hacer esto, que además es una mala malísima práctica. La función circle() es para crear círculos y es posible que determinados motores gráficos intepreten así, saltándose el parámetro $fn. Polígonos regulares con circle ($fn) ¡NUNCA!
Para crear polígonos regulares, se recomienda usar el siguiente módulo:
module regular_polygon(order, r=1){
angles=[ for (i = [0:order-1]) i*(360/order) ];
coords=[ for (th=angles) [r*cos(th), r*sin(th)] ];
polygon(coords);
}
Sólo hay qie indicar el radio del círculo circunscrito que contiene al polígono, y el número de lados.
El módulo text() crea una imagen geométrica 2D de un texto, usando las fuentes instaladas en el sistema, o proporcionadas por un archivo de fuentes.
Para seleccionar el tipo de fuente y el estilo (bold, italic)
text(font="fuente:style=estilo",text="¡Hola Mundo!"); text(font="Times New Roman:style=Bold Italic",text="¡Hola Mundo!");
A continuación los parámetros que pueden ser configurados con “entrecomillado”:
Ejemplo:
text(font="Times New Roman:style=Bold Italic", text="¡Hola Mundo!", halign="center", valign="top", spacing=1.1, direction="ttb");
Para crear un imagen 2D a partir de una figura 3D se utiliza la función projection().
projection(cut = true/false) modulo/figura(); projection(cut = true) module002();
Si cut=false (por defecto), la imagen 2D se forma en Z=0, siendo la proyección desde la parte superior a la inferior de la figura 3D, es decir, de forma intuitiva.
Si cut=true, la imagen 2D en un corte de la figura 3D en Z=0.