top of page
Search
Writer's pictureMatteo

Transformation Modules

Updated: Apr 11, 2022


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.

transformation-parameters
Transformation in Slice-Up are defined by a starting value, a target value, and a type


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.

linear-transformation
In this example each layer is gradually rotated until 90 degree rotation is reached at the top.

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.

function-plot
The domain let you select a specific area of a function - from left to right: 0 to 3.1, 0 to 6.2 and -9.3 to 9.3

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

scalePath-function-domain
The highlighted cos(x) domain mapped to a scale factor range 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.

offset-transformation-center
Offsetting the transformation center in a scalePath module (left), and a rotate module (right)

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

direction-amplitude-translations
A costant direction with a linear amplitude (left), and a costant amplitude with a linear direction (right)

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!


81 views0 comments

Recent Posts

See All

Comments


bottom of page