12 components act as either "dual filters" or "motion functions". Dual filters (such as Modulo & Int) implement two related functions (such as floating point modulo and integer quantize) one of which is passed out the left output and the other of which is passed out the right output. These are useful in cases where you need to perform two calculations on the same value. The Dual Filters versions are computationally more efficient than connecting two different 11 Filters to the same input. A few of the 12 components (such as Circular Motion) are motion functions and translate a value (usually time) into a position. The motion function allow you to set up trees where motion is automatically created by time.
An essential in-depth discussion of ArtMatic structures Trees and components is found in ArtMatic Designer References and in Building trees.
12 Set Constant
parameters :
A : x or radius (variable)
B : y or angle (variable)
discussion :
This component generates a constant vector determined by Parameters 'x' and 'y'. The input value is ignored.
12 Set Vector (Ax,Bx)
parameters :
A (-12. : 12.)
B (-12. : 12.)
discussion :
Scale the input value using parameters A and B. Left output is A*x. Right output is B*x.
In ArtMatic Engine 8.5 the A B range is set to +-12 and the standard scaling options have been added for consistency with the 13 Set Vector (Ax,Bx,Cx) .
The component options picker provides the Scale options set.
12 Add (x+A,x+B)
parameters :
A : A (-50. : 50.)
B : B (-50. : 50.)
discussion :
This component is sometimes referred to as Add Vector. The outputs are x+A, x+B. Add Vector can be useful for adding offsets to the same axis or to move several objects.
12 2D derivative (dx,dy)
parameters :
A : Amplitude (-8. : 8.)
B : Normalize % (0. : 1.)
discussion :
2D derivative dx,dy returns the partial derivatives df/dX, df/dY. When Normalize is at 1 the vector is normalized and will have an unit length.
The derivatives are taken by evaluating the tree above several times using finite differences. The Derivative component has to "see" the function above which means it cannot be used within a CT to compute the derivative of a function depending on values computed outside. Practically if you create a CT for a function and needs its derivative, put the derivative component outside the CT and connect the derivative to the CT output.
When used with loopers the derivative component shall be placed outside the loop, that is, after a memory or accumulating component like 11 Memory Add or 21 Orbit_analyzer # .
12 Modulo & int
parameters :
A : Real Modulo (x) (0.12 : 64.)
B : Phase (-32. : 32.)
C : Int Modulo (y) (2 : 32)
discussion :
This component provides a few different flavors of Modulo and Integer functions. The left output is a continuous floating point version of the modulo/remainder function (see 11 Modulo). The right output is the discontinuous integer modulo function (which is equivalent to the 11 Quantize component).


12 Indexed Saw (1.5)
parameters :
A : Period (0.8 : 128.0)
B : Phase (-32.0 : 32.0)
C : Repeats # (when available)
discussion :
Indexed Saw provides a saw wave where each saw is indexed and the index value is returned in output 2. Saw wave is an useful primitive to repeat symetrical shapes. Period sets the space between each repeats.
When the index is further passed into random tiles it can be used to modify each saw instance separately or simply the index can give a particular color when passed into a color generating tile like 13 Main Gradient .
Example in Voyager Examples/DF Modeling/Geometry/CubeStar isaw.vy
The parameter options are "Infinite Tile" and "Repeats N". Use "Repeats N" when a fixed number of repetitions are needed otherwise the tiling is unbounded.
12 Integer Modulo
parameters :
A : Modulo (2 : 32)
B : Freq x (0. : 1.)
C : Freq y (0. : 1.)
discussion :
Integer Modulo essentially packs two 11 Quantize components into a single tile . The left and right outputs share the same number of steps but have independently controllable spacing via the frequency parameters.
12 Index to Array (1.5)
parameters :
A : Rows # (2 : 128)
B : input gain (1.0 : 16.0)
C : Period (0.4 : 100.0)
D : Randomize (0.0 : 1.0)
discussion :
Index to Array is an utility that maps the input index to an array cell position with 'Rows' number of item per row. The array cells are indexed from left to right and bottom to top. The input index is computed as int(input x * "input gain"). The array cell center position is given by (x=(index % Rows)*Period,y=(index / Rows)*Period). Negatives inputs are supported.
The "Period" parameter sets the dimension of the grid and the "Randomize" parameter allows to jitter the grid positions.
In general you will need to substract the cell center to the main (x,y) coordinate to get the full cell coordinates and use an iteration object to display all cells.
Index to Array can be used in motion equations to generate position on a grid for components like 2D Motion Pict Atlas or Motion Path render. When used directly it allows cool animation if you connect the input to time as each array cell will be displayed sequencially over time.
Examples in ArtMatic Designer CTX/Libraries/Component 8.5/Animation/
12 Cubic Clip
parameters :
A : Input Scale (0. : 2.)
B : Offset (-4. : 4.)
C : Amplitude (0. : 32.)
discussion :
The left output is the Cubic Clip function (see the 11 component description). The right output simply passes through the input value.
12 Math tools
parameters :
A : Offset A (-50. : 50.)
B : Offset B (-50. : 50.)
C : Thickness N (0. : 10.)
D : Thickness N (0. : 10.)
discussion :
This component provides a few useful math functions selected by the algorithms popup.
12 Linear motion
parameters :
A : Direction (angle) (-180. : 180.)
B : Speed (-50. : 50.)
discussion :
This component creates motion along a straight line when input is connected to Global Input Matrix Time (w) or z input in 2D systems. The direction is given by the "Direction" angle parameter and will be (cos(angle), sin(angle)). The 'Speed' parameter scales the input time. When negative motion will proceed backward. The motion is at constant speed if the input is linear.
The tile has the option to set the angle in degree or radian.
For a linear motion in 3D use the Linear motion
tile, available starting ArtMatic Engine 8.0.
12 Circular motion
parameters :
A : Radius (0. : 100.)
B : Speed X (-10. : 10.)
C : Speed Y (-10. : 10.)
discussion :
When Speed X and Speed Y are the same and when the input is connected to Global Input Matrix Time (w), the result is a circular motion. The motion will be elliptical when the Speed X and Speed Y parameters are different. The 'Radius' sets the radius of the circle.The 'Speed X or Y' parameters scales the input time. When negative motion will proceed backward. The motion position has to be added to the target coordinates usually with 4 in 2 out add tile.
The tile has the options to interpret the radius in various units.
For a 3D circular motion you can use the 13 Circular motion tile, available starting ArtMatic Engine 8.0.
12 Random motion
parameters :
A : Amplitude (0. : 100.)
B : Speed % (-50. : 50.)
discussion :
This component creates continuous random 2D motion when the input is connected to Global Input Matrix Time (w).The 'Amplitude' sets the radius of the motion.
The 'Speed' parameter scales the input time. When negative motion will proceed backward. The random positions are generated using a 1D vector valued (2D) perlin noise function. The motion position produced by Random motion has to be added to the target coordinates usually with a 4 in 2 out add tile when the target is a 3D object.
The tile has the options to interpret the radius in various units.
For a 3D random motion you can use the 13 Random motion tile, available starting ArtMatic Engine 8.0.
12 Saw motion
parameters :
A : Amplitude (-10. : 10.)
discussion :
Saw motion uses two dephased triangle saw waves to create a 45° rotated square motion. Amplitude controls both frequency and size which means this component can also be used for DF 3D modeling. This tile is available starting ArtMatic Engine 8.0.
The tile has the options to interpret the Amplitude in various units.
12 Perlin noise + derivative
parameters :
A : Amplitude (-8. : 8.)
B : Phase (-32. : 32.)
C : Frequency (-8. : 32.)
discussion :
The left-output is a 1D Perlin Noise function with its derivative provided from the second output. Derivative can be used to rotate an animated object while the the left-output value animates its position.
Here one can see the derivative in red crossing zero whenever the perlin noise is flat, as expected :
parameters :
A : Scale 0:1
B : Iterations
discussion :
Compiled Trees are groups of tiles that can be used in place of single tiles as a kind of macro or subroutine. 12 CT can hold any 1 input / 2 outputs tree and can be seen generally as a 2D vector valued 1D function.
12 CT are often used to define 2D coordinates derived from a single input (typically time). When input is time one can see the CT as the motion path equation or a 2D parametric curve of 't'. For example x=cos(t),y=sin(t) will define a circular motion. To efficiently render parametric curve ArtMatic Engine 8 offer a new component, 2D Motion Path render, that will work in tandem with 12 Compiled trees.
usage :
Select a 12 tile and use "New compiled tree" to create a new CT from the selection (Tree Edit menu or type 'n' key).
To save a CT on disk to use the function elsewhere use "Save compiled tree" from the Tree Edit menu.
You may also copy and paste the entire CT by using Copy Tile and Paste Tile from the Edit menu.
You may iterate the tree by "Iterations" number when the tree contains an Iterations tile to modify and accumulates various values. "Scale" provide an optional scaling of outputs which is set at 1 by default (no scaling).