Translation Rotation and Scale

The three most commonly used transformations to an object are translation rotation and scale. This section will look in detail at how these work.

Translation

Translation is handled using the move function

move <object> <vector>

The object translates the object by vector

c = cone()    --c  is at 0,0,0
move c [0,1,0]  --after this line runs, c is at 0,1,0
move c [0,1,0]  --after this line runs, c is at 0,2,0

If you want to specify a absolute location for an object you can do so through its position property:

c = cone() --c is at 0,0,0
c.position = [0,10,0]  --after this line c is at 0,10,0
c.position = [0,10,0]  --after this line c is still at 0,10,0

Scale

An object can be scaled in the same way that it can be moved. call the scale function with the object and the vector to indicate how much to scale along each axis

c = cone()
scale c [2,2,2] -- makes c twice as big
scale c [2,2,2] -- makes c twice as big (4 times as big as original)

To do absolute scaling:

c=cone()
c.scale = [2,2,2]  -- makes c twice as big
c.scale = [2,2,2]  -- doesn't change c more than before

Rotate

There are also multiple modes of representing a rotation. This section looks at how rotations are represented.

Angle axis

Angle axis rotation states the rotation as an angle around a vector.

Imagine the vector as an axle that your object spins around. The axis runs through your object's pivot. The rotation then spins the object around the axle for the amount specified by the angle.

Angle axis requires specifying both the angle to spin and the vector to spin around. For example:

c=cone()
rotate c (angleaxis 60 [1,0,0])

the above will rotate c around the x axis for 60 degrees

Quaternions

Quaternions - holds rotations and a set of operations

Like angle axis, quaternions hold both the angle of rotation as well as the axis of rotation