Sysquake Pro – Table of Contents

Sysquake for LaTeX – Table of Contents

# Interactivity Functions

Interactive figures defined in SQ files and SQ scripts rely on special functions which describe precisely which element the user maniulates and where. For more informations, you should read the chapters SQ Files References and SQ Script References.

### firstrun

Determine whether the SQ script is run for the first time.

#### Syntax

b = firstrun

#### Description

`firstrun` returns true if the SQ script is run for the first
time after loading or reset, or false otherwise. For SQ scripts with interactive
graphics, it should be used to give an initial value to variables which can
later be manipulated by the user.

`firstrun` must not be used in SQ files.

#### Example

The following SQ script initializes variable `x` only once
to random values; then the user can manipuate each point interactively.

if firstrun x = rand(1,10); end if _id == 1 x(_ix) = _y1; end plot(1:10, x, '', 1);

### _dx _dy _dz

Displacement between current and previous position during a manipulation.

#### Syntax

dx = _dx dy = _dy dz = _dz

#### Description

When the button of the mouse is held down, `_dx` gives the horizontal
displacement from the previous to the current position of the mouse;
it is equivalent to `_x1-_x`. `_dy` give the vertical
displacement. `_dz` give both displacements as a complex number.

#### See also

`_x`,
`_y`,
`_y`,
`_x1`,
`_y1`,
`_y1`,
`_kx`,
`_ky`,
`_kz`

### _id

ID of the manipulated graphics object.

#### Syntax

n = _id

#### Description

When a graphics object drawn with an ID argument larger than zero is
manipulated with the mouse, `_id` gives its ID; in all other
cases, `_id` is the empty array `[]`.

#### Example

if firstrun y = 3; x = 2; end switch _id case 1 % the horizontal line is being manipulated y = _y1; case 2 % the vertical line is being manipulated x = _x1; end line([0,1], y, 'b', 1); line([1,0], x, 'r', 2);

### _ix

Index of the manipulated graphical element.

#### Syntax

n = _ix

#### Description

When a graphical object drawn with an ID argument larger than zero is
manipulated with the mouse, `_ix` gives the index of the point
being manipulated; in all other
cases, `_ix` is the empty array `[]`.

#### Example

if firstrun y = rand(1,10); end if ~isempty(_ix) y(_ix) = _y1; end plot(y, 'g', 1);

### _kx _ky _kz

Ratio between current and previous position during a manipulation.

#### Syntax

kx = _kx ky = _ky kz = _kz

#### Description

When the button of the mouse is held down, `_kx` gives the ratio
between the horizontal position of the mouse and the previous horizontal position;
it is equivalent to `_x1/_x`. `_kx` is
typically used to change a scale or a gain. `_ky` does the same
vertically, and `_kz` for both directions as a complex number.

#### Example

if firstrun num = 1; den = [1,2,3,4]; end if ~isempty(_ky) % change the gain of the transfer function num/den num = _ky * num; end step(num,den,'b',1);

#### See also

`_x`,
`_y`,
`_z`,
`_x1`,
`_y1`,
`_z1`,
`_dx`,
`_dy`,
`_dz`

### _nb

Number of the manipulated trace.

#### Syntax

n = _nb

#### Description

When a graphical object drawn with an ID argument larger than zero is
manipulated with the mouse, `_nb` gives the number of the trace
being manipulated; in all other
cases, `_ix` is the empty array `[]`.

#### Example

if firstrun Y = rand(5,10); end if ~isempty(_nb) Y(_nb,_ix) = _y1; end plot(Y, 'b', 1);

### _m

State of the Shift key during a manipulation.

#### Syntax

b = _m

#### Description

During a manipulation with the mouse, `_m` is
true if the Shift key is held down or false otherwise.

### _q

Plot-specific value.

#### Syntax

q = _q

#### Description

When a graphical object drawn with an ID argument larger than zero is
manipulated with the mouse, `_q` gives a value which
depends on the graphics; in all other
cases, `_ix` is the empty array `[]`. Not
all graphics define a value for `_q`.

#### Example

Root locus where the closed-loop and open-loop poles may be manipulated:

if firstrun % define an initial transfer function num = -1; den = 1:4; end switch _id case 1 % gain change num = num * _q; case 2 % new location of open-loop poles den = movezero(den, _z0, _z1); end scale('equal',[-3,1,-2,2]); sgrid; % root locus for a gain >= 0 rlocus(num,den,'r',1); % closed-loop poles on the root locus plotroots(addpol(num,den),'^',1); % open-loop poles (gain=0) plotroots(den, 'x', 2);

### _rho _theta

Mouse position in polar coordinates when the button was pressed.

#### Syntax

rho = _rho theta = _theta

#### Description

When the button of the mouse is held down, `_rho` and
`_theta` give the position at the instant when the button was
pressed in polar coordinates, i.e. `_rho` is `sqrt(_x^2+_y^2)`
and `_theta` is `atan2(_y,_x)`. In all other cases,
they return the empty array `[]`.

#### See also

`_x`,
`_y`,
`_z`,
`_rho0`,
`_theta0`,
`_rho1`,
`_theta1`

### _rho0 _theta0

Initial position of the object being manipulated in polar coordinates.

#### Syntax

rho = _rho0 theta = _theta0

#### Description

When the button of the mouse is held down over a graphical object
drawn with an ID argument larger than zero, `_rho0` and
`_theta0` give its initial position in polar coordinates,
i.e. `_rho0` is `sqrt(_x0^2+_y0^2)`
and `_theta0` is `atan2(_y0,_x0)`. In all other cases,
they return the empty array `[]`.

#### See also

`_x0`,
`_y0`,
`_z0`,
`_rho`,
`_theta`,
`_rho1`,
`_theta1`

### _rho1 _theta1

Current position of the mouse in polar coordinates during a manipulation.

#### Syntax

rho = _rho1 theta = _theta1

#### Description

When the button of the mouse is held down, `_rho` and
`_theta` give the current position of the mouse in polar coordinates,
i.e. `_rho1` is `sqrt(_x1^2+_y1^2)`
and `_theta1` is `atan2(_y1,_x1)`. In all other cases,
they return the empty array `[]`.

#### See also

`_x1`,
`_y1`,
`_z1`,
`_rho0`,
`_theta0`,
`_rho`,
`_theta`

### _v

Values of SQ variables.

#### Syntax

v = _v

#### Description

In a handler, `_v` gives a structure whose fields contain
the value of SQ variables.

### _x _y _z

Mouse position when the button was pressed.

#### Syntax

x = _x y = _y z = _z

#### Description

When the button of the mouse is held down, `_x` gives the
horizontal position at the instant when the button was pressed; in all other
cases, `_x` is the empty array `[]`. `_y`
gives the vertical position; `_z` gives the horizontal and
vertical position as a complex number.

#### Example

% define a region where the user can click scale([0,10,0,10]); if ~isempty(_x) % draws a line between the mousedown position % and the current position plot([_x,_x1],[_y,_y1]); end

#### See also

### _x0 _y0 _z0 _p0

Initial position of the object being manipulated with the mouse.

#### Syntax

x = _x0 y = _y0 z = _z0 p = _p0

#### Description

When the button of the mouse is held down over a graphical object
drawn with an ID argument larger than zero, `_x0` gives its initial
horizontal position; in all other
cases, `_x0` is the empty array `[]`. `_y0`
gives the vertical position; `_z0` gives the horizontal and
vertical position as a complex number; and `_p0` gives the
position as a 2D vector for 2D graphics and as a 3D vector for 3D graphics.

#### See also

`_x`,
`_y`,
`_z`,
`_x1`,
`_y1`,
`_z1`,
`_p1`

### _x1 _y1 _z1 _p1

Current position of the mouse during a manipulation.

#### Syntax

x = _x1 y = _y1 z = _z1 p = _p1

#### Description

When the button of the mouse is held down, `_x1` gives the current
horizontal position of the mouse; otherwise (when the button is up), `_x1`
is the empty array `[]`. `_y1`
gives the vertical position; `_z1` gives the horizontal and
vertical position as a complex number; and `_p1` gives
the position as a 2D vector for 2D graphics and as a 3D vector for 3D
graphics, using the associated surface set by `sensor3`.