Tabla de Contenidos

Primitivas Básicas 3D

Cubo

Crea un cubo del que se pueden definir sus dimensiones en los ejes X, Y, Z; y si está o no centrado en el origen (si no lo está “hace esquina” en el origen). Si se indica un único eje, se toma esa medida en los 3 ejes.

cube(size = [x,y,z], center = true/false);
cube(size = [1, 1, 1], center = false);   // Por defecto
cube(size = [m], center = true/false);
cube(x, true/false);
cube([x, y, z], true/false);

Esfera

Crea una esfera, de la cual es necesario definir al menos el radio 'r' o el diámetro 'd'. Si se desea definir el diámetro, es neesario que se indique de forma explícita. Se pueden usar las variables especiales $fa, $fs, $fn para definir la resolución poligonal de la esfera.

sphere($fn = 0, $fa = 12, $fs = 2, r = 1);   // Por defecto
sphere(r = 10);
sphere(10);
sphere(d = 20);
sphere(d = 20, $fn=80);

Cilindro

Crea un cilindro, del cual podemos variar por separado el radio de ambos extremos, formando distintos tipos de cono. Si center=true, quedará centrado en el eje Z, entre +h/2 y -h/2, si no, quedará sobre la parte positiva de este eje. Podemos evitar definir los nombres de los parámetros si están colocados en orden, pero si especificamos alguno, hay que hacerlo con todos. Es posible especificar diámetros 'd1' o 'd2', en vez de radios 'r1' o 'r2'. 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.

cylinder(h = height, r1 = BottomRadius, r2 = TopRadius, center = true/false);
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);   // Por defecto
cylinder (h=20, d1=10, d2=15, center=false, $fn=30);

Poliedro

Crea figuras regulares o irregulares. Se definen en primer lugar las coordenadas de los vértices, que toman como índice el número de orden en que son declarados partiendo de 0. Después se declaran las “caras” del poliedro indicando los índices de los vértices que forman cada cara, de forma que se nombren en sentido horario o antihorario de la cara (pero no en cualquier orden, si no la cara del poliedro saldrá recortada). 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.

polyhedron( points = [ [X0, Y0, Z0], [X1, Y1, Z1], ... ], faces = [ [P0, P1, P2, P3, ...], ... ], convexity = N);
polyhedron(points = undef, faces = undef, convexity = 1);   // Por defecto
VerticesCubo=[
    [0,0,0],    // Índice: 0
    [10,0,0],   // Índice: 1
    [10,0,10],  // Índice: 2
    [0,0,10],   // Índice: 3
    [0,10,0],   // Índice: 4
    [10,10,0],  // Índice: 5
    [10,10,10], // Índice: 6
    [0,10,10],  // Índice: 7
];

CarasCubo=[
    [0,1,2,3],
    [4,5,6,7],
    [0,1,5,4],
    [1,5,6,2],
    [0,4,7,3],
    [3,7,6,2]
];

polyhedron(VerticesCubo,CarasCubo);