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.