Introduction Tools
The Tools section - a menu and a ruler below the window drawing area - offers extra mechanisms to improve GAMGI functionality. Everytime an action is active, its label in the tool bar is highlighted, showing the default color again when disabled.

### Axes

When rotating/moving, changes can be applied to the objects or to the referential. In GAMGI, by default, rotation/translation is applied to the objects (even when the selected object is a layer, in which case all layer objects are rotated/translated).

To rotate/translate the referential instead, just press the Axes button. To restore the initial mode, press Axes again. Changing the referential is equivalent to select Layer->Modify and change the layer parameters that define the observer position and orientation: Eye, Center and Up

Changing the referential has usually the opposite effect of changing the object, a confusing effect, even for experienced users: moving an object to the right has the same visual effect of moving the referential to the left. Moreover, changing the referential is usually a much more sensitive task than to change the objects: instead of changing an object some distance away, the eye position is directly changing. Using this mode with the ruler is thus probably more effective than dragging with the mouse, particularly when dragging along arcs far from the center, to rotate along the Z axis.

The (X,Y,Z) referential mentioned here is a set of 3 vectors pointing from the middle of the screen to: the right (X), the top (Y), the user (z). By default, the referential is positioned at (10, 0, 0) and the axes are orientated along (1,0,0) for X, (0,1,0) for Y and (0,0,1) for Z, but this is no longer the case when the layer referential is moved or rotated.

GAMGI supports 3 methods to rotate, move and scale:

1) Dragg the mouse over the drawing area. This is very intuitive and works very well with small- or medium-sized objects. However, it is not very precise, and is too slow for very large objects. Moreover, it is not possible to move along the Z axis and rotations around the Z-axis are less precise (though still intuitive).

2) Specify directly the rotation angles and translation vectors, using the Object Create and Object Modify dialogs. Although this is the most precise method, rotation and translation values must be introduced directly, which is usually very inconvenient unless the good values are known in advance.

3) After selecting the action in the tool bar: Rotate, Move or Scale, press the mouse over the positional ruler below, centered at 0, with larger negative changes at the far left and larger positive changes at the far right. Rotations/translations around/along the x,y,z axes are selected pressing the left,middle,right mouse buttons, respectively (scaling works with any button).

This method is more precise than the mouse dragging movements, without the need to introduce specific values for rotation, translation, scaling.

### Rotate

To rotate, press Rotate and then click on the positive (counter-colockwise) or negative side of the ruler, with the left button (X rotation), the middle button (Y rotation) or the right button (Z rotation). The rotation angle for the current mouse position, over the ruler, is shown in real time in the window status bar. Currently rotations angles vary in the range [-30.0, +30.0].

Rotating is always applied to the currently selected object when Axes is off and to the current layer referential when it is on.

### Move

To move, press Move and then click on the positive or negative side of the ruler, with the left button (X translation), the middle button (Y translation) or the right button (Z translation). The translation length for the current mouse position, over the ruler, is shown in real time in the window status bar. Currently translation lengths vary in the range [-10.0, +10.0].

Translating is always applied to the currently selected object when Axes is off and to the current layer referential when it is on.

### Scale

To scale, press Scale and then click on the positive or negative side of the ruler, with any button mouse. The scaling factor for the current mouse position, over the ruler, is shown in real time in the window status bar. Currently scaling factors vary in the range [0.5, 2.0].

Scaling is always applied to the currently selected object when Axes is off and to the current layer when it is on.

### Undo

For each layer, GAMGI maintains a list of old configurations, saved automatically, permiting users to undo any discontinuous action inside a layer. To change the number of saved configurations select Layer->Config.

Pressing Undo shows a dialog allowing users to navigate back and forward through a list of previously saved layers, plus the current one. Pressing Cancel restores the original layer and closes the dialog, pressing Ok turns the visible layer into the new current layer. In this case, the old current layer becomes the last saved layer, thus becoming the last to be removed and the first to appear when the user presses Undo again and inspects the saved layers.

Undo keeps automatically any discontinuous action occurring in a layer but ignores completely continuous actions. A discontinuous action occurs when a user presses Ok, clicks over the ruler to rotate, move, scale an object, or in general when a clear boundary can be defined between what existed before and after.

Continuous actions occur when objects are moved, rotated, scaled, directly with the mouse, as parameters are changing almost continuously. If continuous actions were saved with Undo, in a few seconds all Undo levels would be filled up with almost equal layers and old Undo layers would be removed forever, turning the Undo mechanism much less useful. Moreover, continuous actions would be slow, because GAMGI would be saving things all the time.

### Save

The Save mechanism works exactly as the Undo mechanism, except that it is fully controlled by the user, who decides when a layer must be saved, while the Undo mechanism works without any user intervention. With the Save mechanism, users can save any layer exactly when they wish (in particular after any discontinuous action), and control when old layers are discarded, after exceeding the number of saved configurations.

To save a layer, just press Save and then Ok, this way adding the current layer to the list of saved configurations (this mechanism works also with Undo, but it is not as useful as here, because Undo layers are removed automatically, without user control, when the number of Undo levels is exceeded).

Although Save and Undo work exactly in the same way and complement each other, they use totally independent resources, even the number of Undo levels is independent of the number of Save levels.
Home