Herramientas de usuario

Herramientas del sitio


openscad:transformaciones

¡Esta es una revisión vieja del documento!


Transformaciones

Modifican las características de las figuras: tamaño, posición, orientación, etc. Pueden anidar entre { } a las figuras a las que afectan. También pueden anteponerse antes de la declaración de la figura (sin terminar en ;) para afectar a esa figura.

Escalado

Sirve para modificar o 'escalar' las medidas de la figura correspondiente en cada uno de los ejes X, Y, Z. Hay que indicar el factor de escalado en cada eje.

scale(v = [x, y, z]) { ... }

No pueden usarse valores de escala negativos.
Ejemplo:

cube(10);
translate([15,0,0]) scale([0.5,1,2]) cube(10);

Modificar tamaño

La función resize() modifica el tamaño de la figura en cada eje, tomando el tamaño que se haya definido. Similar al escalado, pero en lugar de definir un factor de escala en cada eje, se define el tamaño final.

resize(v = [x, y, z], auto=[false, false, false]) { ... }

Ejemplo:

resize(newsize=[30,60,10]) sphere(r=10);

El parámetro 'auto' sirve para indicar que el tamaño de ese eje se modificará en la misma proporción que el que se haya definido en la función.

// resize to 10x8x1. Note that the z dimension is left alone.
resize([10,0,0], auto=[true,true,false]) cube([5,4,1]);

Rotación

Para rotar una figura se puede especificar una matriz el número de grados que debe rotar en cada eje.

cube(10, true);
translate([20,0,0]) rotate([45,0,45]) cube(10, true);

También es posible indicar un número de grados de rotación e indicar con 1/0 en cuál de los 3 ejes rota (sólo 1).

cube(10, true);
translate([20,0,0]) rotate(45,[1,0,0]) cube(10, true); 

Si el vector definido en el caso anterior modifica más de un eje, la fugyra rota respecto del eje especificado por ese vector.

translate([40,0,0]) rotate(45,[1,1,0]) cube(10, true)

Para saber en qué sentido rota la figura se utiliza la regla de la mano derecha.

Traslación

La función translate(), mueve el objeto en la dirección de cada eje, definida en un vector.

translate(v = [x, y, z]) { ... }

Se han visto varios ejemplos en funciones anteriores.

Espejo

Espeja el objeto en función de las coordenadas definidas. Estas coordenadas representan el vector normal al plano que se encuentra en el origen y respecto del cual se creará la imagen espejada.

mirror(v= [x, y, z] ) { ... }

Ejemplo:

translate([5,0,0]) cube(10, false);
mirror([1,0,0]) translate([5,0,0]) cube(10, false);

Multimatriz

A través de una matriz de 4×4, se especifica la transformación de la figura. Mediante este sistema es posible obtener figuras que no se podrían obtener con ninguna otra transformación.

multmatrix(m = [...]) { ... }

A continuación el significado de cada elemento de la matriz:

A B C D
E F G H
I J K L
0 0 0 1
  • A: Escalado en el eje X.
  • B: Escalado en X 'tirando' de los extremos del eje Y.
  • C: inclinación en X sin variar Y, ni Z.
  • D: Traslación en eje X.
  • E: Escalado en Y 'tirando' de los extremos del eje X.
  • F: Escalado en el eje Y.
  • G: inclinación en Y sin variar X, ni Z.
  • H: Traslación en eje Y.
  • I: Escalado en Z 'tirando' de los extremos del eje X.
  • J: Escalado en Z 'tirando' de los extremos del eje Y.
  • K: Escalado en el eje Z.
  • L: Traslación en eje Z.

La última columna se usa en entornos 3D para definir la vista del objeto, y no se usa en OpenSCAD. Debe ser siempre [0,0,0,1].

Un ejemplo que puede servir para realizar pruebas:

M = [ [ 1  , 0  , 0  , 0   ],
      [ 0  , 1  , 0  , 0   ],
      [ 0  , 0  , 1  , 0   ],
      [ 0  , 0  , 0  , 1   ] ] ;

multmatrix(M) cylinder (h=20, d=10, center=false, $fn=30);

Color

“Pinta” la figura del color y establece el 'canal' alfa (transparencia) que se defina.

Puede definirse de varias maneras:

color( c = [r, g, b, a] ) { ... }
color( c = [r, g, b], alpha = 1.0 ) { ... }
color( "colorname", 1.0 ) { ... }

los valores rgba son valores de coma flotante comprendidos entre 0 y 1.

translate([0,-5,0]) color("red") cube(10);
color("blue") translate([20,0,0]) cylinder(10,5,0);
color(0.5) translate([35,0,5]) sphere(5);

Ofset

Minkowski

Hull

openscad/transformaciones.1533909352.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki