NOTE: this article was made for the old version of Slice-Up. The new Slice-Up Beta features a new interface, and all transformation modules are condensed in a single module, which is Transform. All other information provided in this tutorial are still useful and relevant to the new Slice-Up Beta.
This article provides a detailed overview of how the transformation modules work.
It includes an explanation of the inner logic, parameters, and mathematical functions that are common to translateModule, rotateModule and scaleModule.
Note: in order to illustrate the different concepts I will use a simple wall toolpath, which was generated by importing a straight line into the importCurve module.
Inner logic
All transformations are applied incrementally from the first layer, up.
In other words - each layer is normally assigned a different transformation value. I said normally because it is technically possible to define a single value to all layers.
Range of values
In all transformation modules you are required to specify two values:
a starting value (e.g. starting rotation, starting scale factor, ...)
a target value (e.g. target rotation, target scale factor, ...)
Those are the maximum and minimum transformation value. Each layer gets assigned a value in between these two. If you set the two values equal, then the same transformation value is applied to all layers.
You can define how to map transformation values in this range to each layer by selecting a transformation type: Linear or Function.
Linear Transformation
In a linear transformation, all transformation values are applied incrementally from the first layer to the last one. In other words - the first layer gets assigned the starting value. Every other layer gets a slightly larger value until the target value is reached at the top layer.
Function Transformation
You can map the outcome of a single variable function to the range of transformation values. The steps are the following:
Type in a function: this will dictate how the transformation values will change within the previously defined range
Define a domain: this let you focus on a specific area of that function, and will also have an impact on the shape
Note: function syntax follow that of standard text editors (e.g. x^2, sqrt(x), sin(x)*cos(x), tan(x), ln(x))
Here is a neat trick: you can google "[insert function here] plot" - so that you can have a visual tool to predict the outcome of your transformation.
The following examples show how the cos(x) function map to a scale transformation with factor scale factor ranging from 0.9 to 1.1
Offsetting the transformation center
In the rotatePath and scalePath modules, you can choose to offset that center to the side using the offset transformation center parameter.
By default, the center of the transformation is set to the area centroid for closed curves or mid of curve for open curves.
Direction and Amplitude in Translations
The translatePath module requires two inputs by definition:
Direction vector: you can express it with a number between 0 and 360 (degrees), with 0 and 360 being 3 o' clock, and values increasing in counter-clockwise direction
Amplitude value: this is the amplitude of the translation vector, expressed in mm
Conclusion
This article should have cleared some doubts regarding the inner workings of transformation modules. Any doubt you may have left is probably better solved experimenting with it.
However, you can ask for help or share questions and ideas in the discourse forum.
In future tutorial I will show some examples of how different transformation modules can be employed creatively to achieve different results: sign up to our newsletter to stay up to date with all documentation releases!
Comments