<!-- ##### SECTION Title ##### -->
interactive

<!-- ##### SECTION Short_Description ##### -->
Gives tools to interact with the rendered area.

<!-- ##### SECTION Long_Description ##### -->
<para>
When one wants some interactions on the rendering area (either from the mouse or from the keyboard), one should initialise it using openGLInteractiveInit_session(). Then, during the interactive session, several modes have been implemented:
<itemizedlist>
<listitem><para>
openGLInteractiveBegin_mark(), is a mode where the mouse can select a node and this nodes become highlighted.
</para></listitem>
<listitem><para>
openGLInteractiveBegin_move(), the mouse is then used to move picked nodes. Moves are possible in the plane of the screen or constrained along axis of the bounding box.
</para></listitem>
<listitem><para>
openGLInteractiveBegin_observe(), in this mode, the mouse is used to change the position of camera, its orientation and its zoom characteristics.
</para></listitem>
<listitem><para>
openGLInteractiveBegin_pick(), this mode is the most complex picking mode. It can select atoms up to two references and measure distances and angles.
</para></listitem>
<listitem><para>
openGLInteractiveBegin_pickAndObserve(), this mode is a simplified mix of obervation and picking.
</para></listitem>
</itemizedlist>
The observe mode has two different moving algorithms that can be changed using openGLInteractiveSet_preferedObserveMethod(). The first, called 'constrained' (cf. #OPENGL_OBSERVE_CONSTRAINED) corresponds to movements along parallels and meridians. When the mouse is moved along x axis, the camera raotates along a parallel. When the camera is moved along y axis, the camera rotate along a meridian. The top is always pointing to the north pole (in fact, omega is always forced to 0 in this mode). This mode has a 'strange' behavior when the observer is near a pole: moving mouse along x axis make the box rotates on itself. It is normal, because movements on x axis is equivalent to movements on parallel and near the poles, parallel are small circle around the z axis. This can be unnatural in some occasion and the other mode, called 'walker' (see #OPENGL_OBSERVE_WALKER) can be used instead of the 'constrained' mode. In the former, the moving is done has if the observer was a walking ant on a sphere : moving the mouse along y axis makes the ant go on or forward ; and x axis movements makes the ant goes on its left or on it right. This is a more natural way to move the box but it has the inconvient that it is hard to return in a given position (omega has never the right value).
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT VisuPick_struct ##### -->
<para>

</para>

@data: 
@node: 
@button: 
@shiftMod: 
@x: 
@y: 

<!-- ##### TYPEDEF VisuPick ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION callBackOnNodeSelectedFunc ##### -->
<para>

</para>

@pickData: 
@data: 


<!-- ##### MACRO OPENGL_OBSERVE_CONSTRAINED ##### -->
<para>

</para>



<!-- ##### MACRO OPENGL_OBSERVE_WALKER ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveInit_session ##### -->
<para>

</para>

@window: 
@handler: 
@data: 
@stopPickObserve: 


<!-- ##### FUNCTION openGLInteractiveEnd_session ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveBegin_mark ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION openGLInteractiveBegin_move ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveBegin_observe ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveBegin_pick ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveBegin_pickAndObserve ##### -->
<para>

</para>



<!-- ##### FUNCTION openGLInteractiveSet_preferedObserveMethod ##### -->
<para>

</para>

@method: 


<!-- ##### FUNCTION openGLInteractiveGet_preferedObserveMethod ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION openGLInteractiveRemove_allMarks ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION openGLInteractive_init ##### -->
<para>

</para>



