new
Francois Delebecque [Thu, 23 Sep 2004 12:52:52 +0000 (12:52 +0000)]
scilab_doc/intro/chap1.tex
scilab_doc/intro/chap2.tex
scilab_doc/intro/chap3.tex
scilab_doc/intro/chap4.tex
scilab_doc/intro/chap5.tex
scilab_doc/intro/intro.tex

index 9db88f1..a8d47d2 100755 (executable)
@@ -4,46 +4,48 @@
 
 \section{What is Scilab}
 
-Developed at INRIA, Scilab has been developed for system control and
-signal processing applications. It 
-is freely distributed in source code format (see the copyright file). 
+Developed at INRIA and ENPC, Scilab has been developed for engineering 
+applications. It is freely distributed (see the copyright file) and the source
+code is available.
 
 Scilab is made of three distinct parts: an interpreter, 
-libraries of functions (Scilab procedures) and libraries of Fortran 
-and C routines. 
-These routines (which, strictly speaking, do not belong to Scilab but
+a set of libraries of Fortran and C routines linked with Scilab
+and a number of toolboxes written in Scilab language.
+The numerical librairies (which, strictly speaking, do not belong to Scilab but
 are interactively called by the interpreter) are of 
-independent interest and most of them are available through Netlib. 
-A few of them have been slightly modified for better compatibility
-with Scilab's interpreter.
+independent interest and most of them are available through the Web. 
  
 A key feature of the Scilab syntax is its ability to handle matrices: 
 basic matrix manipulations such as concatenation, 
 extraction or transpose are immediately performed as well as basic operations
-such as addition or multiplication. Scilab also aims at handling more complex
-objects than numerical matrices. For instance, control people may want
-to manipulate rational or polynomial transfer matrices. This is
-done in Scilab by manipulating lists and typed lists which allows a 
+such as addition or multiplication. The syntax for manipulating
+matrices is mostly compatible with Matlab. 
+Scilab also aims at handling more complex
+objects than numerical matrices. This is
+done in Scilab by manipulating structures which allows a 
 natural symbolic representation of complicated
-mathematical objects such as transfer functions, linear systems or graphs
+objects such as transfer functions, linear systems or graphs
 (see Section~\ref{s2.5}).
 
-        Polynomials, polynomials matrices and transfer matrices 
-are also defined and the syntax used for manipulating these matrices
-is identical to that used for manipulating constant vectors and matrices.
+ Mathematical objects such as polynomials, polynomials matrices 
+and rational polynomial matrices are also defined and the syntax 
+used for manipulating these matrices is identical to that used for 
+manipulating numerical vectors and matrices.
 
         Scilab provides a variety of powerful primitives for
 the analysis of non-linear systems.  
 Integration of explicit and implicit dynamic systems can be accomplished 
 numerically.  The {\tt scicos} toolbox allows the graphic definition
-and simulation of complex interconnected hybrid systems.
+and simulation of complex interconnected hybrid systems. Documentation
+about {\tt scicos} can be found at its the Web page 
+\href{http://www.scicos.org}{scicos.org}.
 
- There exist numerical optimization 
-facilities for non linear optimization (including
-non differentiable optimization), quadratic optimization and 
-linear optimization.
+ There exist numerical optimization facilities for non linear 
+optimization (including non differentiable optimization), quadratic 
+optimization and linear optimization (see also the contribution 
+directory on the Scilab Web page).
 
-        Scilab has an open programming environment where the
+  Scilab has an open programming environment where the
 creation of functions and libraries of functions is completely in the
 hands of the user (see Chapter~\ref{ch4}).    
 Functions are recognized as data objects in Scilab and, thus, can be 
@@ -68,11 +70,7 @@ a syntax which is natural and easy to use.
    \item To provide a reasonable set of primitives which serve
            as a basis for a wide variety of calculations.
    \item To have an open programming environment where new
-           primitives are easily added. A useful tool distributed with
- Scilab is {\tt intersci} which
-is a tool for building interface programs to add new primitives 
-i.e. to add new modules of Fortran or C code into Scilab.
-
+           primitives are easily added. 
    \item To support library development through ``toolboxes'' of
          functions devoted to specific
            applications (linear control, signal processing, 
@@ -80,7 +78,7 @@ i.e. to add new modules of Fortran or C code into Scilab.
 \end{itemize}
 
         The objective of this introduction manual is to give the user 
-an idea of what Scilab can do. On line documentation on all
+an idea of what Scilab can do. On line documentation about all
 functions is available ({\tt help} command).
 
 
@@ -90,11 +88,13 @@ Scilab is divided into a set of directories. The main directory
 \verb!SCIDIR! contains the following files: {\tt scilab.star} (startup file), the
 copyright file {\tt notice.tex}, and the \verb!configure! files
 (see(\ref{install})).
-The subdirectories are the following:
+The main subdirectories are the following:
 \begin{itemize}
 
 \item{{\tt bin} is the directory of the executable files.
-The starting script {\tt scilab} on Unix/Linux systems and {\tt runscilab.exe} on Windows95/NT, The executable code of Scilab: {\tt scilex} on Unix/Linux systems and {\tt scilex.exe} on Windows95/NT are there. 
+The starting script {\tt scilab} on Unix/Linux systems and {\tt runscilab.exe} on Windows.
+The executable code of Scilab: {\tt scilex} on Unix/Linux systems and {\tt scilex.exe} on 
+Windows are there. 
 This directory also contains Shell scripts 
 for managing or printing Postscript/\LaTeX\  files produced by Scilab.}
 
@@ -108,29 +108,14 @@ Note that running a graphic function without input parameter
 provides an example of use for this function (for instance {\tt
 plot2d()} displays an example for using {\tt plot2d}  function). }
 
-\item{{\tt examples} contains useful examples of how to link
-external programs to scilab, using dynamic link or {\tt intersci}}
-
-\item{{\tt doc} is the directory of the Scilab documentation: \LaTeX\ , dvi 
-and Postscript files. 
-This documentation is {\tt SCIDIR/doc/intro/intro.tex}. }
-
-\item{{\tt geci} contains source code and binaries for GeCI which is an 
-interactive communication manager created in order to
-manage remote executions of softwares and allow exchanges of messages
-beetwen those programs. It offers the possibility to exploit numerous
-machines on a network, as a virtual computer, by creating a
-distributed group of independent softwares 
-(\verb!help communications! for a detailed description).
-GeCI is used for the link of Xmetanet with Scilab.}
-
-\item{\tt pvm3} contains source code and binaries of the PVM version
-3 which is another interactive communication manager. 
-
-\item{{\tt imp} is the directory of the routines managing the Postscript files
-for print.}
-
-\item{{\tt libs} contains the Scilab libraries (compiled code).}
+\item{{\tt examples} contains examples of specific topics. It is shown
+in appropriate subdirectories how to add new C or Fortran program
+to Scilab (see \verb!addinter-tutorial!). More complex examples are given
+in \verb!addinter-examples!. The directory \verb!mex-examples!
+contains examples of interfaces realized by emulating the Matlab
+mexfiles. The directory \verb!link-examples! illustrates the use of
+the \verb!call! function which allows to call external function within
+Scilab.}
 
 \item{{\tt macros} contains the libraries of functions
 which are available on-line. New libraries can easily be added 
@@ -138,15 +123,12 @@ which are available on-line. New libraries can easily be added
 which contain ``Toolboxes'' for control, signal processing, etc... Strictly
 speaking Scilab is not organized in toolboxes : functions of a specific
 subdirectory can call functions of other directories; so, for example, the 
-subdirectory {\tt signal} is not self-contained but its functions are all devoted
-to signal processing.}
+subdirectory {\tt signal} is not self-contained but all the functions there 
+are devoted to signal processing.}
 
 \item{{\tt man} is the directory containing the manual divided 
-into submanuals, corresponding to the on-line help and to 
-a \LaTeX\  format of the reference manual. 
-The \LaTeX\  code is produced by a 
-translation of the Unix format Scilab manual (see the subdirectory
-{\tt SCIDIR/man}).}
+into submanuals, corresponding to the on-line help.}
+
 To get information about an item, one should enter 
 {\tt help item}\index{help@{\tt help}} 
 in Scilab or use the help window facility obtained with help button.
@@ -154,77 +136,47 @@ To get information corresponding to a key-word, one should  enter
 {\tt apropos key-word} or use 
 {\tt apropos}\index{apropos@{\tt apropos}} in the help window. 
 All the {\tt item}s and {\tt key-words} known by the {\tt help} and 
-{\tt apropos} commands are in {\tt .cat} and {\tt whatis} files 
+{\tt apropos} commands are in {\tt .html} and {\tt whatis} files 
 located in the {\tt man} subdirectories.
 
 To add new items to the {\verb!help!} and {\tt apropos} commands 
 the user can extend the list of directories available to the help 
 browser by adapting the variable \verb!%helps!. 
-See the README file in the \verb!man! directory and the example
-given in \verb!examples/man-examples! directory
-
-\item{{\tt maple} is the directory which contains the source code of Maple
-functions which allow the transfer of Maple objects
-into Scilab functions. For efficiency, the transfer
-is made through Fortran code generation which is dynamically linked
-to Scilab.}
 
 \item{{\tt routines} is a directory which contains the source code of all
 the numerical routines. The subdirectory {\tt default} is important
 since it contains the
-source code of routines which are necessary to customize Scilab.}
+source code of routines which are necessary to customize Scilab.
 In particular user's C or Fortran routines for ODE/DAE simulation 
 or optimization can be included here (they can be also dynamically
-linked).
+linked)}
 
-\item{{\tt examples} contains examples of specific topics. It is shown
-in appropriate subdirectories how to add new C or Fortran program
-to Scilab (see \verb!addinter-tutorial!). More complex examples are given
-in \verb!addinter-examples!. The directory \verb!mex-examples!
-contains examples of interfaces realized by emulating the Matlab
-mexfiles. The directory \verb!link-examples! illustrates the use of
-the \verb!call! function which allows to call external function within
-Scilab.}
+\item{{\tt tests} : this directory contains evaluation programs for testing 
+Scilab's installation on a machine. The file ``demos.tst'' tests all the 
+demos.}
 
 \item{{\tt intersci} contains a program which can be used to build
 interface programs for adding new Fortran or C 
 primitives to Scilab. This program is executed by the {\tt intersci}
 script in the {\tt bin/intersci} directory.}
 
-\item{{\tt scripts} is the directory which contains the source code of 
-shell scripts files. Note that the list of printers \index{printers} 
-names known by Scilab is defined there by an environment variable.}
-
-\item{{\tt tests} : this directory contains evaluation programs for testing 
-Scilab's installation on a machine. The file ``demos.tst'' tests all the 
-demos.}
-
-\item{{\tt wless, xless} is the Berkeley file browsing tool}
-
-\item{{\tt xmetanet} is the directory which contains {\tt xmetanet}, a 
-graphic display for networks. Type {\tt metanet()} in Scilab to use it.}
-
 \end{itemize}
 
 \section{Installing Scilab. System Requirements}
 \label{install}
-Scilab is distributed in source code format; binaries for Windows95/NT
+Scilab is distributed in source code format; binaries for Windows98/NT/XP
 systems and several popular Unix/Linux-XWindow systems are also
-available: Dec Alpha (OSF V4), Dec Mips (ULTRIX 4.2), Sun Sparc
-stations (Sun OS), Sun Sparc stations (Sun Solaris), HP9000 (HP-UX
-V10), SGI Mips Irix, PC Linux. All of these binaries versions include
-tk/tcl interface.
+available. See the Scilab Web page and the contributions for specific
+ports. All of these binaries versions include tk/tcl interface.
 
 The installation requirements are the following :
 
 - for the source version: Scilab requires approximately 130Mb of disk
-storage to unpack and install (all sources included).  You need X
-Window (X11R4, X11R5 or X11R6, C compiler and Fortran compiler
-(e.g. f2c or g77 or Visual C++ for Windows systems). 
+storage to unpack and install (all sources included).  You a C 
+compiler and a Fortran compiler.
   
 - for the binary version: the minimum for running Scilab (without
 sources) is about 40 Mb when decompressed.
-These versions  are partially statically linked and in principle do not require a fortran compiler.
 
 \label{stks}
 Scilab uses a large internal stack for its calculations. This size
@@ -234,7 +186,7 @@ command. The default dimension of the internal stack can be adapted
 by modifying the variable {\tt newstacksize} in the {\tt scilab.star}
 script.
 
-- For more information on the installation, please look at the README files
+- For more information on the installation, please look at the README files.
 
 \section{Documentation}
 
@@ -244,21 +196,16 @@ reports devoted to specific toolboxes: Scicos (graphic system builder
 and simulator), Signal (Signal processing toolbox), Lmitool (interface for 
 LMI problems), Metanet (graph and network toolbox). An FAQ is
 available at Scilab home page:\\
-(\verb!http://www-rocq.inria.fr/scilab!)\index{home page}.
+(\verb!http://www.scilab.org!)\index{home page}.
+
+Several documents are available in French, German, Spanish, Chinese etc. 
+See the Scilab Web page.
 
 \section{Scilab at a Glance. A Tutorial}
 
 \subsection{Getting Started}
 
-Scilab is called by running the {\tt scilab} script in the 
-directory {\tt SCIDIR/bin} ({\tt SCIDIR} denotes the directory 
-where Scilab is installed).
-This shell script  runs Scilab in an Xwindow environment (this 
-script file can be invoked with
-specific parameters such as \verb!-nw! for ``no-window'').
-You will immediatly get the Scilab window with the following banner and 
-prompt represented by the {\tt -->} : 
-
+After starting Scilab, you get:
 
 \bigskip
 
@@ -268,8 +215,8 @@ prompt represented by the {\tt -->} :
                            ===========
  
  
-                  Scilab-2.x  ( 12 July 1998 ) 
-                  Copyright (C) 1989-98 INRIA 
+                          Scilab-x.y.z
+                  Copyright (C) 1989-xx INRIA/ENPC 
  
  
 Startup execution:
@@ -332,65 +279,6 @@ useful if you type your commands in an editor. Another way to
 ``load'' files containing Scilab statements
 is available with the {\tt File/File Operations} button.
 
-\subsection{Buttons}
-The Scilab window has the following {\bf Control} buttons.\\
-
-%
-\begin{itemize}
-\item Stop     interrupts execution of Scilab and enters in 
-{\tt pause} mode
-\item Resume    continues execution after a {\tt pause}
-entered as a command in a function or generated by the {\tt Stop}
-button or Control C.
-\item Abort     aborts execution after one (or several) {\tt pause}, 
-and returns to top-level prompt
-\item Restart   clears all variables and executes startup files
-\item Quit      quits Scilab
-\item Kill      kills Scilab shell script
-\item Demos     for interactive run of some demos
-\item File Operations   facility for loading functions or data into
-Scilab, or executing script files. 
-\item Help : invokes on-line help with the tree of the man and the 
-names of the corresponding items. It is possible to type directly 
-{\tt help <item>} in the Scilab window.
-\item Graphic Window : select active graphic window
-\end{itemize}
-%
-New buttons can be added by the 
-{\tt addmenu}\index{addmenu@{\tt addmenu}} command.
-Note that the command:\\
-{\tt SCIDIR/bin/scilab -nw} \\
-invokes Scilab in the ``no-window'' mode.
-
-\subsection{Customizing your Scilab - Unix only}
-
-
-The parameters of the different windows opened by 
-Scilab can be easily changed. The way for doing that is to edit the files 
-contained in the directory {\tt X11-defaults}. The first possibility is 
-to directly customize these files. Another way is to copy 
-the right lines with the modifications in the {\tt .Xdefaults} 
-file of the home directory.
-These modifications are activated by starting again Xwindow or with the
-command {\tt xrdb .Xdefaults}. Scilab will read the {\tt .Xdefaults} file: 
-the lines of this
-file will cancel and replace the corresponding lines of X11-defaults.
-
-A simple example : 
-
-\begin{verbatim}
-Xscilab.color*Scrollbar.background:red
-Xscilab*vpane.height: 500
-Xscilab*vpane.width:  500
-\end{verbatim}
-
-in {\tt .Xdefaults} will change the 500x650 window to a square window of 
-500x500 and the  
-scrollbar background color changes from green to red.
-
-An important parameter for customizing Scilab is \verb!stacksize!
-discussed in \ref{install}.
-
 \subsection{Sample Session for Beginners}
 
 We present now some simple commands. At the carriage return all the 
@@ -446,10 +334,16 @@ A  more complicated command which creates a polynomial.
 
 \noindent\dotfill
 
+\input{diary/d1p41.dia}
+
+Definition of a structure variable. 
+
+\noindent\dotfill
+
 \input{diary/d1p5.dia}
 
 Definition of a polynomial matrix. The syntax for polynomial matrices
-is the same as for constant matrices. Calculation of the
+is the same as for numerical matrices. Calculation of the
 determinant of the polynomial matrix by the {\tt det} function. 
 
 
@@ -562,16 +456,18 @@ by {\tt exec} or by {\tt getf} ).
 
 \input{diary/d1p15.dia}
 
-Relation with the Unix environment.
+Relation with the host environment.
 
 \noindent\dotfill
 
 \input{diary/d1p16.dia}
 
 Definition of a column vector of character strings used for defining a C
-function file. The routine is compiled (needs a compiler), dynamically 
+function file. The routine is compiled (needs a compiler), 
+and a shared library is done. The libary is dynamically 
 linked to Scilab by the {\tt link} command, and interactively called
-by the function {\tt myplus}.
+by the function {\tt myplus}. {\tt myplus} passes variables from Scilab
+to C and conversely.
 
 \noindent\dotfill
 
index 49e12d2..abaaa8e 100755 (executable)
@@ -3,13 +3,11 @@
 \chapter{Data Types}
 \label{ch2}
 \index{data types}
-
 Scilab recognizes several data types.
- Scalar objects are constants, booleans, polynomials, strings and 
+ Scalar objects are numerical constants, booleans, polynomials, strings and 
 rationals (quotients of polynomials). These objects in turn allow to 
 define matrices which admit these scalars as entries.
-Other basic objects are lists, typed-lists and functions. Only
-constant and boolean sparse matrices are defined.
+Other basic objects are lists, typed-lists and functions.
 %
 The objective of this chapter is to describe the use of each of 
 these data types.
@@ -55,7 +53,7 @@ of these objects are revealed in the following Scilab sessions.
 Scalars are either real or complex numbers.  The values of
 scalars can be assigned to variable names chosen by the user.
 \begin{verbatim}
---> a=5+2*%i
+--> a=5+2*%i   //a complex number
  a         =
  
     5. + 2.i  
@@ -317,10 +315,10 @@ manipulated as full matrices.
 \index{data types!character strings}
 \index{character strings}
 
-       Character strings can be created by using single or double quotes.
+Character strings can be created by using single or double quotes.
 Concatenation of strings is performed by the {\tt +} operation.
 Matrices of character strings are constructed as ordinary matrices,
-e.g. using brackets.  A very important feature of matrices of
+e.g. using brackets.  An important feature of matrices of
 character strings is the capacity to manipulate and create functions.
 Furthermore, symbolic manipulation of mathematical objects can be
 implemented using matrices of character strings.  The following
@@ -354,10 +352,46 @@ Note that in the above Scilab session the function
 {\tt trianfml}\index{trianfml@{\tt trianfml}}\index{symbolic triangularization}
 performs the symbolic triangularization of the matrix {\tt A}.
 The value of the resulting symbolic matrix can be obtained by
-using {\tt evstr}.  
+using {\tt evstr}.
+
+The following table gives the list of some useful functions:
+
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+\verb!ascii! & ascii code of strings\\ \hline
+
+\verb!execstr! & executes the string\\ \hline
+
+\verb!grep ! & looks for a chain into a matrix \\ \hline
+
+\verb!sort, gsort ! & sorting (lexicographic,...) \\ \hline
+
+\verb!part! & extract a subchain  \\ \hline
+
+\verb!mmscanf! & formated read into a chain \\ \hline
+
+\verb!msprintf! & construct a chain/vector   \\ \hline
+
+\verb!strindex! & location of a subchain \\ \hline
+
+\verb!string ! & convert into a string \\ \hline
+
+\verb!stripblanks! & remove blank characters \\ \hline
 
-       A very important aspect of character strings is that they
-can be used to automatically create new functions (for more on functions
+\verb!strsubst! & chain replacement \\ \hline
+
+\verb!tokens! &  cuts a chain \\ \hline
+
+\verb!strcat! & catenates chains  \\ \hline
+
+\verb!length! &  chain length  \\ \hline
+\end{tabular}
+\end{center}
+
+
+       A string matrices can be used to create new 
+functions (for more on functions
 see Section~\ref{s4.2}).  An example of automatically creating a 
 function is illustrated in the following Scilab session where it is
 desired to study a polynomial of two variables {\tt s} and {\tt t}.
@@ -366,13 +400,12 @@ supported in Scilab, we can construct a new data structure using
 a list (see Section~\ref{s2.5}).
 The polynomial to be studied is $(t^2+2t^3)-(t+t^2)s+ts^2+s^3$.
 \begin{verbatim}
--->getf("macros/make_macro.sci");
 -->s=poly(0,'s');t=poly(0,'t');
  
 -->p=list(t^2+2*t^3,-t-t^2,t,1+0*t);
  
--->pst=makefunction(p) //pst is a function t->p (number->polynomial)
+-->pst=makefunction(p) //pst is a function 
+//                t->p (number->polynomial)
  pst       =
  
 [p]=pst(t)
@@ -414,7 +447,7 @@ evaluates to the polynomial in two variables.
 
        Polynomials are easily created and manipulated in Scilab.
 Manipulation of polynomial matrices is essentially identical
-to that of constant matrices.
+to that of constant numerical matrices.
 The {\tt poly}\index{poly@{\tt poly}} 
 primitive in Scilab can be used to specify the coefficients
 of a polynomial or the roots of a polynomial.
@@ -476,13 +509,7 @@ for systems theory.
  
 -->s=poly(0,'s');
  
--->A=[1 s;s 1+s^2]
- A         =
-!   1     s      !
-!                !
-!              2 !
-!   s     1 + s  !
+-->A=[1 s;s 1+s^2];   //Polynomial matrix
  
 --> B=[1/s 1/(1+s);1/(1+s) 1/s^2]
  B         =
@@ -691,6 +718,89 @@ AND, OR and NOT bit-wise operations.
  253
 \end{verbatim}
 %%%%%
+\section{N-dimensionnal arrays}
+N-dimensionnal array can be defined and handled in simple way:
+\begin{verbatim}
+-->M(2,2,2)=3
+ M  =
+(:,:,1)
+!   0.    0. !
+!   0.    0. !
+(:,:,2)
+!   0.    0. !
+!   0.    3. !
+-->M(:,:,1)=rand(2,2)
+ M  =
+(:,:,1)
+!   0.9329616    0.312642  !
+!   0.2146008    0.3616361 !
+(:,:,2)
+!   0.    0. !
+!   0.    3. !
+-->M(2,2,:)
+ ans  =
+(:,:,1)
+    0.3616361  
+(:,:,2)
+    3.  
+-->size(M)
+ ans  =
+!   2.    2.    2. !
+-->size(M,3)
+ ans  =
+    2.  
+\end{verbatim}
+
+They can be created from a vector of data and a vector of dimension 
+
+\begin{verbatim}
+-->hypermat([2 3,2],1:12)
+ ans  =
+(:,:,1)
+!   1.    3.    5. !
+!   2.    4.    6. !
+(:,:,2)
+!   7.    9.     11. !
+!   8.    10.    12. !
+\end{verbatim}
+
+N-dimensionnal matrices are coded as {\tt mlists} with 2 fields~:
+\begin{verbatim}
+-->M=hypermat([2,3,2],1:12);
+-->M.dims
+ ans  =
+!   2.    3.    2. !
+-->M.entries'
+ans  =
+         column  1 to 11
+!   1.    2.    3.    4.    5.    6.    7.    8.    9.    10.    11. !
+         column 12
+!   12. !
+\end{verbatim}
+
 
 \section{Lists}
 \label{s2.5}
@@ -709,26 +819,16 @@ example:
 \begin{verbatim}
 -->L=list(1,'w',ones(2,2))  //L is a list made of 3 entries
  L  =
        L(1)
  
     1.  
        L(2)
  w   
        L(3)
-!   1.    1. !
+ !   1.    1. !
 !   1.    1. !
 
--->L(3)   //extracting entry 3 of list L
- ans  =
-!   1.    1. !
-!   1.    1. !
+-->L(3);   //extracting entry 3 of list L
 
 -->L(3)(2,2)  //entry 2,2 of matrix L(3)
  ans  =
@@ -737,26 +837,16 @@ example:
 
 -->L(2)=list('w',rand(2,2)) //nested list: L(2) is now a list
  L  =
        L(1)
  
     1.  
        L(2)
         L(2)(1)
  w   
         L(2)(2)
 !   0.6653811    0.8497452 !
 !   0.6283918    0.6857310 !
        L(3)
 !   1.    1. !
 !   1.    1. !
 
@@ -778,10 +868,7 @@ by using character strings (the names) as shown below.
 \begin{verbatim}
 -->L=tlist(['Car';'Name';'Dimensions'],'Nevada',[2,3])
  L  =
        L(1)
 !Car         !
 !            !
 !Name        !
@@ -789,23 +876,16 @@ by using character strings (the names) as shown below.
 !Dimensions  !
  
        L(2)
  Nevada   
        L(3)
 !   2.    3. !
 
 -->L.Name    //same as L(2)
  ans  =
  Nevada   
 -->L.Dimensions(1,2)=2.3
 
  L  =
        L(1)
  
 !Car         !
@@ -815,13 +895,10 @@ by using character strings (the names) as shown below.
 !Dimensions  !
  
        L(2)
  Nevada   
        L(3)
  
 !   2.    2.3 !
 
 -->L(3)(1,2)
  ans  =
@@ -836,264 +913,10 @@ by using character strings (the names) as shown below.
 An important feature of typed-lists is that it is possible to define
 operators acting on them (overloading), i.e., it is possible
 to define e.g. the multiplication \verb!L1*L2! of the two typed lists 
-\verb!L1! and \verb!L2!. An example of use is given below, where
-linear systems manipulations (concatenation, addition,
-multiplication,...) are done by such operations.
-\section{N-dimensionnal arrays}
-N-dimensionnal array can be defined and handled in simple way:
-\begin{verbatim}
--->M(2,2,2)=3
- M  =
-(:,:,1)
-!   0.    0. !
-!   0.    0. !
-(:,:,2)
-!   0.    0. !
-!   0.    3. !
--->M(:,:,1)=rand(2,2)
- M  =
-(:,:,1)
-!   0.9329616    0.312642  !
-!   0.2146008    0.3616361 !
-(:,:,2)
-!   0.    0. !
-!   0.    3. !
--->M(2,2,:)
- ans  =
-(:,:,1)
-    0.3616361  
-(:,:,2)
-    3.  
--->size(M)
- ans  =
-!   2.    2.    2. !
--->size(M,3)
- ans  =
-    2.  
-\end{verbatim}
+\verb!L1! and \verb!L2!. 
 
-They can be created from a vector of data and a vector of dimension 
-
-\begin{verbatim}
--->hypermat([2 3,2],1:12)
- ans  =
-(:,:,1)
-!   1.    3.    5. !
-!   2.    4.    6. !
-(:,:,2)
-!   7.    9.     11. !
-!   8.    10.    12. !
-\end{verbatim}
 
-N-dimensionnal matrices are coded as {\tt mlists} with 2 fields~:
-\begin{verbatim}
--->M=hypermat([2 3,2],1:12);
--->M.dims
- ans  =
-!   2.    3.    2. !
--->M.entries
- ans  =
-!   1.  !
-!   2.  !
-!   3.  !
-!   4.  !
-!   5.  !
-!   6.  !
-!   7.  !
-!   8.  !
-!   9.  !
-!   10. !
-!   11. !
-!   12. !
-\end{verbatim}
-
-\section{Linear system representation}
-Linear systems are treated as specific typed lists {\tt tlist}.
-The basic function which is used for defining linear systems is {\tt syslin}.
-This function receives as parameters the constant matrices which
-define a linear system in state-space form or, in the case of
-system in transfer form, its input must be a rational matrix.
-To be more specific, the calling sequence of {\tt syslin} is
-either {\tt Sl=syslin('dom',A,B,C,D,x0)} or {\tt Sl=syslin('dom',trmat)}.
-{\tt dom} is one of the character strings {\tt 'c'} or {\tt 'd'}
-for continuous time or discrete time systems respectively.
-It is useful to note that {\tt D} can be a polynomial matrix 
-(improper systems); {\tt D} and {\tt x0} are optional arguments.
-{\tt trmat} is a rational matrix i.e. it is defined as a matrix
-of rationals (ratios of polynomials). {\tt syslin} just converts
-its arguments (e.g. the four matrices A,B,C,D) into a typed
-list {\tt Sl}. For state space representation {\tt Sl} is 
-the {\tt tlist(['lss','A','B','C','D'],A,B,C,D,'dom')}. This tlist
-representation allows to access the A-matrix i.e. the second entry of
-{\tt Sl} by the syntax {\tt Sl('A')} (equivalent to {\tt Sl(2)}).
-Conversion from a representation to another is done by {\tt ss2tf}
-or {\tt tf2ss}. Improper systems are also treated. {\tt syslin} 
-defines linear systems as specific {\tt tlist}. ({\tt help syslin}).
-
-\input{diary/syslin.dia}
-
-       The list representation allows manipulating linear systems as
-abstract data objects.  For example, the linear system can be combined
-with other linear systems or the transfer function representation of
-the linear system can be obtained as was done above using {\tt ss2tf}.
-Note that the transfer function representation of the linear system
-is itself a tlist. 
-       A very useful aspect of the manipulation of systems 
-is that a system can be handled as a data object.
-Linear systems can be 
-inter-connected\index{linear systems!inter-connection of},
-their representation
-can easily be changed from state-space to transfer function
-and vice versa.
-
-       The inter-connection of linear systems can be made
-as illustrated in Figure~\ref{f3.2}.
-%
-\begin{figure}
-
-%BEGIN IMAGE
-\begin{center}
-\begin{picture}(200,330)(0,-60)
-
-\put(180,280){\makebox(0,0)[lb]{\tt S2*S1}}
-\put(9,280){\circle{2}}
-\put(10,280){\vector(1,0){20}}
-\put(30,270){\framebox(30,20){$S_1$}}
-\put(60,280){\vector(1,0){30}}
-\put(90,270){\framebox(30,20){$S_2$}}
-\put(120,280){\vector(1,0){20}}
-\put(141,280){\circle{2}}
-
-\put(180,220){\makebox(0,0)[lb]{\tt S1+S2}}
-\put(29,220){\circle{2}}
-\put(30,220){\line(1,0){20}}
-\put(50,220){\circle*{2}}
-\put(50,200){\line(0,1){40}}
-\put(50,200){\vector(1,0){20}}
-\put(50,240){\vector(1,0){20}}
-\put(70,190){\framebox(30,20){$S_2$}}
-\put(70,230){\framebox(30,20){$S_1$}}
-\put(100,200){\line(1,0){20}}
-\put(100,240){\line(1,0){20}}
-\put(120,240){\vector(0,-1){15}}
-\put(120,200){\vector(0,1){15}}
-\put(120,220){\circle{10}}
-\put(120,220){\framebox(0,0){$+$}}
-\put(125,220){\vector(1,0){15}}
-\put(141,220){\circle{2}}
-
-\put(180,140){\makebox(0,0)[lb]{\tt [S1,S2]}}
-\put(49,160){\circle{2}}
-\put(49,120){\circle{2}}
-\put(50,120){\vector(1,0){20}}
-\put(50,160){\vector(1,0){20}}
-\put(70,110){\framebox(30,20){$S_2$}}
-\put(70,150){\framebox(30,20){$S_1$}}
-\put(100,120){\line(1,0){20}}
-\put(100,160){\line(1,0){20}}
-\put(120,160){\vector(0,-1){15}}
-\put(120,120){\vector(0,1){15}}
-\put(120,140){\circle{10}}
-\put(120,140){\framebox(0,0){$+$}}
-\put(125,140){\vector(1,0){15}}
-\put(141,140){\circle{2}}
-
-\put(180,50){\makebox(0,0)[lb]{\tt [S1 ; S2]}}
-\put(49,50){\circle{2}}
-\put(50,50){\line(1,0){20}}
-\put(70,50){\circle*{2}}
-\put(70,30){\line(0,1){40}}
-\put(70,30){\vector(1,0){20}}
-\put(70,70){\vector(1,0){20}}
-\put(90,20){\framebox(30,20){$S_2$}}
-\put(90,60){\framebox(30,20){$S_1$}}
-\put(120,30){\vector(1,0){20}}
-\put(120,70){\vector(1,0){20}}
-\put(141,30){\circle{2}}
-\put(141,70){\circle{2}}
-
-\put(180,-40){\makebox(0,0)[lb]{\tt S1/.S2}}
-\put(70,-20){\circle{10}}
-\put(70,-20){\framebox(0,0){$+$}}
-\put(34,-20){\vector(1,0){30}}
-\put(33,-20){\circle{2}}
-\put(70,-60){\line(0,1){40}}
-\put(70,-60){\line(1,0){20}}
-\put(70,-20){\vector(1,0){20}}
-\put(90,-70){\framebox(30,20){$S_2$}}
-\put(90,-30){\framebox(30,20){$S_1$}}
-\put(140,-60){\vector(-1,0){20}}
-\put(120,-20){\line(1,0){20}}
-\put(141,-20){\circle{2}}
-\put(140,-60){\line(0,1){40}}
-\end{picture}
-\end{center}
-%END  IMAGE
-%HEVEA\imageflush
-
-\caption{Inter-Connection of Linear Systems}
-\label{f3.2}
-\end{figure}
-%
-For each of the possible inter-connections of two systems
-{\tt S1} and {\tt S2} the command which makes the inter-connection
-is shown on the right side of the corresponding block diagram in
-Figure~\ref{f3.2}. Note that feedback interconnection is performed by
-\verb!S1/.S2!. 
-
-       The representation of linear systems can be in state-space
-form or in transfer function form.  These two representations can
-be interchanged by using the functions 
-{\tt tf2ss}\index{linear systems!{\tt tf2ss}}\index{tf2ss@{\tt tf2ss}} and 
-{\tt ss2tf}\index{linear systems!{\tt ss2tf}}\index{ss2tf@{\tt ss2tf}}
-which change the representations of systems from transfer function
-to state-space and from state-space to transfer function, respectively.
-An example of the creation, the change in representation, and the
-inter-connection of linear systems is demonstrated in the following
-Scilab session.
-
-\input{diary/connect.dia}
-
-The above session is a bit long but illustrates some very important
-aspects of the handling of linear systems.  First, two linear systems
-are created in transfer function form using the function called 
-{\tt syslin}\index{linear systems!{\tt syslin}}\index{syslin@{\tt syslin}}.
-This function was used to label the systems in this example 
-as being continuous (as opposed to discrete).  
-The primitive {\tt tf2ss} is used to convert one of the
-two transfer functions to its equivalent state-space representation
-which is in list form (note that the function {\tt ssprint} creates a more
-readable format for the state-space linear system).
-The following multiplication of the two systems yields their
-series inter-connection.  Notice that the inter-connection 
-of the two systems is effected even though one of the systems is
-in state-space form and the other is in transfer function form.
-The resulting inter-connection is given in state-space form.
-Finally, the function {\tt ss2tf} is used to convert the resulting
-inter-connected systems to the equivalent transfer function representation.
-
-\section{Functions (Macros)}
+\section{Functions}
 \label{s2.6}
 \index{data types!functions}
 \index{functions}
@@ -1115,8 +938,6 @@ can be created directly in the Scilab environment using the syntax
 -->    if y>0 then, x=1; else, x=-1; end
 --> endfunction
  
---> deff('[x]=foo(y)','if y>0 then, x=1; else, x=-1; end')
 --> foo(5)
  ans       =
  
@@ -1202,7 +1023,9 @@ SYMBOL & OPERATION
 
 \verb!( )! & insertion:  \verb!a(k)=m!  \\ \hline
 
-\verb!'! & transpose \\ \hline
+\verb!.'! & transpose \\ \hline
+
+\verb!'! & conjugate transpose \\ \hline
 
 \verb!+! & addition  \\ \hline
 
@@ -1241,10 +1064,82 @@ or \verb!help insertion!.
 \subsection{Indexing in matrices}
 Indexing in matrices can be done by giving the indices of selected
 rows and columns or by boolean indices or by using the \verb!$! symbol.
+Here is a sample of commands: 
 \input{diary/extract.dia}
 
 \subsection{Indexing in lists}
 The following session illustrates how to create lists and
 insert/extract entries in {\tt list} and {\tt tlist} or {\tt mlist}.
 Enter {\tt help insertion} and {\tt help extraction} for additinal examples.
+Below is a sample of commands:
 \input{diary/list.dia}
+
+\subsection{Structs and Cells \`a la Matlab}
+The command {\tt X=tlist(...)} or {\tt Y=mlist(...)} creates a
+Scilab variable X of type {\tt tlist} or {\tt mlist}.
+The entries of {\tt X} are obtained by the names of their fields.
+
+For instance, if {\tt X=tlist(['mytype','a','b'],A,B)} the command
+X.a returns A. If A is a matrix the command X.a(2,3) returns the 
+entry at row 2 and column 3 of X;a, i.e. {\tt A(2,3)}.
+Similarly, if {\tt Y=mlist(['mytype','a','b'],A,B)}, we can use the
+syntax Y(2,3), once the extraction function \verb! %mytype_e(varargin)!
+has been defined. 
+
+Also the syntax {\tt Y(2,3)=33} can be given a meaning
+through the function \verb!%s_i_mytype(varargin)!. 
+This powerful overloading mechanism allows to define complex objects
+with a general indexing where indices can be fields (string) or a set
+of integers.
+
+If the variable X is not defined in the Scilab workspace, then
+the command X.a=A creates a particular mlist which behaves as 
+a Matlab struct. Its internal representation is similar to
+{\tt X=mlist(['st','dims','a'],int32([1,1]),A)}.
+It is a one dimensional {\tt struct} with one field called 'a' and 
+the value of X.a is A.
+Multidimensional structs are created and manipulated in a similar way.
+For instance {\tt X(2,3).a.b(2)=4} creates a 2 x 3 struct with one field
+a. It is represented as
+\begin{verbatim}
+mlist(['st','dims','a'],int32([2,3]),list([],[],[],[],[],w))
+\end{verbatim}
+where w is a struct with one field 'b', and w.b is the vector [0,4].
+A particular display is done for structs. Here, we have:
+\begin{verbatim}
+-->X(2,3)
+ ans  =
+   a: [1x1 struct]
+-->X(2,3).a
+ ans  =
+   b: [0;4]
+\end{verbatim}
+
+All the struct manipulations are implemented by soft coded operations
+i.e. Scilab overloaded functions. As structs are not basic data types
+some operations are slow. They have been implemented for a better 
+Matlab compatibility.
+
+The Matlab cells are also easily emulated. A cell is seen as a particular
+struct with one field called 'entries'. We just show a simple example:
+
+\begin{verbatim}
+
+-->X=cell(1,2)
+ X  =
+!{}  {}  !
+
+-->X(2).entries=11
+ X  =
+!{}  !
+!    !
+!11  !
+\end{verbatim}
+
+Note that Matlab uses braces \verb!X{2}! for extracting entries from
+a cell. 
index 19dff2a..fcd1734 100755 (executable)
@@ -4,22 +4,22 @@
 \label{ch4}
 \index{programming}
 
-       One of the most useful features of Scilab is its ability
+        One of the most useful features of Scilab is its ability
 to create and use functions.  This allows the development of specialized
 programs which can be integrated into the Scilab package in a simple and
 modular way through, for example, the use of libraries.  In this chapter we 
 treat the following subjects:
 \begin{itemize}
-       \item Programming Tools
-       \item Defining and Using Functions
+        \item Programming Tools
+        \item Defining and Using Functions
         \item Definition of Operators for New Data Types
-       \item{Debbuging}
-\end{itemize}  
+        \item{Debbuging}
+\end{itemize}   
 Creation of libraries is discussed in a later chapter.
 
 \section{Programming Tools}
 
-       Scilab supports a full list of programming tools
+        Scilab supports a full list of programming tools
 including loops, conditionals, case selection,
 and creation of new environments.  Most programming tasks
 should be accomplished in the environment of a function.
@@ -98,7 +98,7 @@ matrices. The index takes as values the entries of the list.
  str
 \end{verbatim}
 
-       The {\tt while} loop repeatedly performs a sequence of commands 
+        The {\tt while} loop repeatedly performs a sequence of commands 
 until a condition is satisfied.
 \begin{verbatim}
 --> x=1; while x<14,x=2*x,end
@@ -182,7 +182,7 @@ has the usual meaning and is a also a keyword recognized by the interpreter.
 \end{verbatim}
 
 
-       The {\tt select}-{\tt case} conditional
+        The {\tt select}-{\tt case} conditional
 compares an expression to several possible expressions and performs the
 instructions following the first case which equals the initial expression.
 \begin{verbatim}
@@ -206,7 +206,7 @@ where none of the cases are satisfied.
 \index{functions}
 \index{functions!definition}
 
-       It is possible to define a function directly in
+        It is possible to define a function directly in
 the Scilab environment, however, the most convenient way
 is to create a file containing the function
 with a text editor.  In this section we describe the
@@ -380,16 +380,16 @@ Scilab has several special commands which are used almost exclusively
 in functions.  These are the commands 
 
 \begin{itemize}
-       \item {\tt argn}\index{argn@{\tt argn}}: returns the number of input
+        \item {\tt argn}\index{argn@{\tt argn}}: returns the number of input
 and output arguments for the function
-       \item {\tt error}\index{error@{\tt error}}: used to suspend the 
+        \item {\tt error}\index{error@{\tt error}}: used to suspend the 
 operation of a function, to print an error message, and to return to the
 previous level of environment when an error is detected.  
-       \item {\tt warning}\index{warning@{\tt warning}}, 
-       \item {\tt pause}\index{pause@{\tt pause}}: temporarily suspends the 
+        \item {\tt warning}\index{warning@{\tt warning}}, 
+        \item {\tt pause}\index{pause@{\tt pause}}: temporarily suspends the 
 operation of a function.
-       \item {\tt break}\index{break@{\tt break}}: forces the end of a loop 
-       \item {\tt return}\index{return@{\tt return}} or {\tt resume} : used 
+        \item {\tt break}\index{break@{\tt break}}: forces the end of a loop 
+        \item {\tt return}\index{return@{\tt return}} or {\tt resume} : used 
 to return to the calling environment and to pass local
 variables from the function environment to the calling environment.  
 \end{itemize}
@@ -455,7 +455,7 @@ the global environment.
 \label{s4.3}
 \index{operations!for new data types}
 
-       It is possible to transparently define fundamental operations 
+        It is possible to transparently define fundamental operations 
 for new data types in Scilab (enter {\tt help overloading} for 
 a full description of this feature).
 That is, the user can give a sense to multiplication, division, addition, etc.
@@ -467,7 +467,7 @@ Scilab performs these user defined operations by searching for functions
 (written by the user) which follow a special naming convention described
 below.
 
-       The naming convention Scilab uses to recognize operators 
+        The naming convention Scilab uses to recognize operators 
 defined by the user is determined by the following conventions.  The name
 of the user defined function is composed of four (or possibly three)
 fields.  The first field is always the symbol {\tt \%}.  
@@ -593,7 +593,7 @@ representing a linear system has the form: \\
  and, thus, the {\tt xxx}
 above is {\tt lss}.
 
-       An example of the function name which multiplies two
+        An example of the function name which multiplies two
 linear systems together (to represent their series inter-connection)
 is {\tt \%lss\_m\_lss}.  Here the first field is \%, the second field is 
 {\tt lss} (linear state-space), the third field is {\tt m} ``multiply''
index 2e998bc..8b90c50 100755 (executable)
@@ -1,5 +1,3 @@
-% Copyright INRIA
-
 \chapter{Basic Primitives}
 \label{ch5}
 This chapter briefly describes some basic primitives of Scilab.
@@ -125,6 +123,58 @@ mfprintf}\index{mfprintf@{\tt mfprintf}}  can be also used
 --> mclose(fd)
 \end{verbatim}
 
+Here is a table of useful input-output functions:
+
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+\verb!mprintf! & print in standard output\\ \hline
+
+\verb!mfprintf! & print in a file\\ \hline
+
+\verb!msprintf! & print in a string matrix \\ \hline
+
+\verb!mscanf! & read in standard input \\ \hline
+
+\verb!mfscanf! & read in a file \\ \hline
+
+\verb!msscanf! & read in a string matrix \\ \hline
+
+\verb!fprintfMat! & formated write a matrix into a file  \\ \hline
+
+\verb!fscanfMat! & formated read of a matrix in a file \\ \hline
+
+\verb!mgetl! & read a file as a Scilab string matrix  \\ \hline
+
+\verb!mputl! & write a string matrix \\ \hline
+
+\verb!mopen! & open a file \\ \hline
+
+\verb!mclose! & close a file\\ \hline
+\end{tabular}
+\end{center}
+
+To manipulate binary files, the following functions are available:
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+\verb!mget! & read binary data\\ \hline
+
+\verb!mput! & write binary data\\ \hline
+
+\verb!mgetstr! & print in a string matrix \\ \hline
+
+\verb!mputstr! & write a string matrix \\ \hline
+
+\verb!mgetstr! & read in a file \\ \hline
+
+\verb!mtell! & current position in a file\\ \hline
+
+\verb!mseek! & move current position  \\ \hline
+
+\verb!meof! & end of file test \\ \hline
+\end{tabular}
+\end{center}
 
 \section{Help}
 On-line help is available either by clicking on the 
@@ -156,25 +206,27 @@ can be obtained by entering {\tt help}. For each manual entry the
 \begin{itemize}
 \item{Elementary functions: {\tt sum, prod, sqrt, diag, cos, max, round, sign, fft}}
 \item{Sorting: {\tt sort, gsort, find}}
-\item{Specific Matrices: {\tt zeros, eye, ones, matrix, empty}}
+\item{Specific Matrices: {\tt zeros, eye, ones, matrix}}
 \item{Linear Algebra: {\tt det, inv, qr, svd, bdiag, spec, schur}}
 \item{Polynomials}: {\tt poly, roots, coeff, horner, clean, freq}
 \item{Buttons, dialog: \verb!x_choose, x_dialog, x_mdialog, getvalue, addmenu!}
+\item{GUI (Tcl-tk): \verb!TK_EvalStr, TK_GetVar, TK_SetVar, TK_EvalFile!}
 \item{Linear systems: {\tt syslin}}
-\item{Random numbers: {\tt rand}}
+\item{Random numbers: {\tt rand}, {\tt grand}}
 \item{Programming: {\tt function, deff, argn, for, if, end, while, 
 select, warning, error, break, return}}
 \item{Comparison symbols: {\tt ==}, {\tt >=}, {\tt >}, {\tt ~=}, {\verb!&!}
 ({\tt and}),{\tt |} ({\tt or})}
 \item{Execution of a file: {\tt exec}}
 \item{Debugging: {\tt pause, return, abort}}
-\item{Spline functions, interpolation: {\tt splin, interp, interpln}}
-\item{Character strings: {\tt string, part, evstr, execstr}}
-\item{Graphics: {\tt plot, xset, driver, plot2d, xgrid, locate, plot3d, Graphics}}
+\item{Spline functions, interpolation: {\tt splin2d, interp2d, smooth, splin3d}}
+\item{Character strings: {\tt string, part, evstr, execstr, grep}}
+\item{Graphics: {\tt plot2d, set, get, xgrid, locate, plot3d, Graphics}}
 \item{Ode solvers: {\tt ode, dassl, dassrt, odedc}}
-\item{Optimization: {\tt optim, quapro, linpro, lmitool}}
+\item{Optimization: {\tt optim, quapro, linpro, lmitool, lsqrsolve}}
 \item{Interconnected dynamic systems: {\tt scicos}}
-\item{Adding a C or Fortran routine: {\tt link, fort, addinter, intersci}}
+\item{Adding a C or Fortran routine: {\verb!link, call, addinter, ilib_for_link, ilib_build!}}
+\item{Graphs, networks: {\verb! edit_graph, metanet!}}
 \end{itemize}
 
 
@@ -236,9 +288,6 @@ permanent manner by inserting it in a specific interface in
 {\tt SCIDIR/routines/default} and rebuild a new Scilab by a 
 {\tt make all} command in the Scilab directory.
 
-
-
-
 \section{XWindow Dialog}
 It may be convenient to open a specific XWindow window for entering
 interactively parameters inside a function or for a demo.
@@ -253,3 +302,18 @@ A Graphic User Interface object can be created by the function
 \verb!uicontrol!. Basic primitives are \verb!TK_EvalFile!,
 \verb!TK_EvalStr! and \verb! TK_GetVar, TK_Setvar!. Examples
 are given by invoking the help of these functions.
+
+Let us give a simple dialog. We pass a script to TK as a Scilab
+string matrix, TK opens a dialog box, and the result is returned
+to Scilab as a string, using \verb!TK_GetVar!.
+\begin{verbatim}
+-->TK_script=["toplevel .dialog";
+              "label .dialog.1 -text ""Enter your input\n here""";
+              "pack .dialog.1";
+              "entry .dialog.e -textvariable scivar";
+              "set scivar """"";
+              "pack .dialog.e"];
+-->TK_EvalStr(TK_script);
+-->text=TK_GetVar(scivar);
+\end{verbatim}
+
index 8404dca..52e30f9 100755 (executable)
-% Copyright INRIA
-
-\chapter{Graphics}
-This section introduces graphics in Scilab. 
-
-\section{The Graphics Window}
-It is possible to use several graphics windows {\tt ScilabGraphicx} x being
-the number used for the management of the windows, but at any time only
-one window is active. On the main Scilab window the button
- {\tt Graphic Window x} is used to manage the windows : x denotes the
-number of the active window, and we can set (create), raise or delete 
-the window numbered x : in particular we can directly create the 
-graphics window numbered 10.
-The execution of a plotting command automatically creates a window if 
-necessary.
-
-We will see later that Scilab uses a {\tt graphics environment}
-defining some parameters of the plot, these parameters have default
-values and can be changed by the user; every graphics window has its
-specific context so the same plotting command van give different
-results on different windows.
-
-There are 4 buttons on the graphics window:
-\begin{itemize}
-       \item \verb+3D Rot.+: for applying a rotation with the mouse to a
-3D plot. This button is inhibited for a 2D plot. For the help of
-manipulations (rotation with specific angles ...) the rotation angles 
-are given at the top of the window.
-       \item \verb+2D Zoom+: zooming on a 2D plot. This command can be
-recursively invoked. For a 3D plot this button is not inhibited but it
-has no effect.
-       \item \verb+UnZoom+: return to the initial plot (not to the plot
-corresponding to the previous zoom in case of multiple zooms).
-
-These 3 buttons affecting the plot in the window are not always in
-use; we will see later that there are different choices for the 
-underlying device and zoom and rotation need the record of the
-plotting commands which is one of the possible choices (this is the
-default).
-
-       
-       \item \verb+File+: this button opens different commands and menus.
-
-The first one is simple : {\tt Clear} simply rubs out the window
-(without affecting the graphics context of the window).
-
-The command {\tt Print...} opens a selection panel for printing. 
-Under Unix, the printers are defined in the main scilab script 
-{\tt SCIDIR/bin/scilab} (obtained by ``make all'' from the origin 
-file {\tt SCIDIR/bin/scilab.g}).
-
-The {\tt Export} command opens a panel selection for getting a copy of the 
-plot on a file with a specified format (Postscript, Postscript-Latex, Xfig).
-
-The {\tt save} command directly saves the plot on a file with a
-specified name. This file can be loaded later in Scilab for replotting.
-
-The {\tt Close} is the same command than the previous {\tt Delete
-Graphic Window} of the menu of the main window, but simply 
-applied to its window (the graphic context is, of course deleted). 
-
-\end{itemize}
-
-\section{The Media}
-There are different graphics devices in Scilab which can be used to send
-graphics to windows or paper. The default for the output is 
-\verb+ScilabGraphic0+ window .
-
-\noindent The different drivers are:
-
-%
-\begin{itemize}
-       \item \verb+X11+        : memoryless screen graphics driver
-       \item \verb+Rec+        : a screen driver  which also
-       records all the graphic commands. This is the default
-       (required for the zoom and rotate).
-       \item \verb+Wdp+        : a screen driver without recorded
-       graphics; the graphics are done on a pixmap and are send to
-       the graphic window with the command  {\tt xset("wshow")}. The 
-       pixmap is cleared with the command {\tt xset("wwpc")} or with the
-       usual command {\tt xbasc()}
-       \item \verb+Pos+        : graphics driver for Postscript printers 
-       \item \verb+Fig+        : graphics driver for the Xfig system
-       \item \verb+GIF+        : graphics driver for the GIF file format
-\end{itemize}
-%
-
-In the 3 first cases the 'implicit' device is a graphics window
-(existing or created by the plot). For the 2 last cases we will see
-later how to affect a specific device to the plot : a file where the
-plot will be recorded in the Postscript or Xfig format.
-
-The basic Scilab graphics commands are :
-%
-\begin{itemize}
-       \item \verb+driver+: selects a graphic driver
-
-The next 3 commands are specific of the screen drivers :
-
-       \item \verb+xclear+: clears one or more graphic windows; does
-       not affect the graphics context of these windows.
-       \item \verb+xbasc+: clears a graphic window and erase the
-       recorded graphics; does not affect the graphics context of  
-       the window.
-       \item \verb+xpause+: a pause in milliseconds
-       \item \verb+xselect+: raises the current graphic window
-       (for X-drivers)
-       \item \verb+xclick+: waits for a mouse click
-       \item \verb+xbasr+: redraws the plot of a graphic window
-       \item \verb+xdel+: deletes a graphic window (equivalent to the
-       {\tt Close} button
-
-The following commands are specific of the Postscript, Xfig and GIF drivers
-drivers :
-       
-       \item \verb+xinit+: initializes a graphic device (file).
-       \item \verb+xend+: closes a graphic session (and the
-       associated device).
-\end{itemize}
-%
-
-In fact, the regular driver for a common use is {\tt Rec} and there
-are special commands in order to avoid a change of driver; in many
-cases, one can ignore the existence of drivers and use the
-functions \verb+xbasimp+, \verb+xs2fig+ in order to send a graphic 
-to a printer or in a file for the \verb+Xfig+ system. For example with
-:
-
-\begin{verbatim}
--->driver('Pos')
--->xinit('foo.ps')
--->plot(1:10)
--->xend()
--->driver('Rec')
--->plot(1:10)
--->xbasimp(0,'foo1.ps')
-
-\end{verbatim}
-
-\noindent we get two identical Postscript files : {\tt 'foo.ps'} and {\tt 'foo1.ps.0'}
-(the appending 0 is the number of the active window where the plot has been 
-done).
-
-The default for plotting is the superposition; this means that between
-2 different plots one of the 2 following command is needed:
-{\tt xbasc(window-number)} which clears the window and erase the
-recorded Scilab graphics command associated with the window 
-\verb+window-number+ or {\tt xclear}) which simply clears the window.
-
-If you enlarge a graphic window, the command \verb+xbasr(window-number)+
-is executed by Scilab. This command clears the graphic window
-\verb+window-number+ and replays the graphic commands associated with it. One 
-can call this function manually, in order to verify the associated
-recorded graphics commands. 
-
-Any number of graphics windows can be created with buttons 
-or with the commands \verb+xset+ or \verb+xselect+. The environment 
-variable DISPLAY can be used to specify an X11 Display or one can use
-the \verb+xinit+ function in order to open a graphic window on a
-specific display. 
-
-\section{Global Parameters of a Plot}
-\subsubsection{Graphics Context}
-
-Some parameters of the graphics are controlled by a graphic context 
-( for example the line thickness) and others are controlled through
-graphics arguments of a plotting command.
-The graphics context has a default definition and can be change by the
-command {\tt xset} : the command without argument i.e. {\tt xset()}
-opens the {\tt Scilab Toggles Panel} and the user can changes the
-parameters by simple mouse clickings. We give here different
-parameters controlled by this command :
-%
-\begin{itemize}
-       \item  {\tt xset}               : set graphic context values.
-
-(i)-{\tt xset("font",fontid,fontsize)}         : fix the current font and 
-its current size.
-
-(ii)-{\tt xset("mark",markid,marksize)}        : set the current mark 
-and current mark size.
-
-(iii)-{\tt xset("use color",flag)}     : change to color or gray plot according to 
-the values (1 or 0) of {\tt flag}.
-
-(iv)-{\tt xset("colormap",cmap)}       : set the colormap as a m x 3
-matrix. m is the number of colors.  Color number i is given as a
-3-uple cmap[i,1],cmap[i,2], cmap[i,3] corresponding respectively to Red,
-Green and Blue intensity between 0 and 1. Calling again {\tt xset()} 
-shows the colormap with the indices of the colors.
-
-(v)-{\tt xset("window",window-number)} : sets the current window to the window \\
-{\tt window-number} and creates the window if it doesn't exist.
-
-(vi)-{\tt xset("wpos",x,y)}    : fixes the position of the upper left point of 
-the graphic window.
-
-Many other choices are done by {\tt xset} :
--use of a pixmap : the plot can be directly displayed on the screen or
-executed on a pixmap and then expose by the command 
-{\tt xset("wshow")}; this is the usual way for animation effect.
-
--logical function for drawing : this parameter can be changed for 
-specific effects (superposition or adding or substracting of colors).
-Looking at the successive plots of the following simple commands give
-an example of 2 possible effects of this parameter :
-
-\begin{verbatim}
-xset('default');
-plot3d();
-plot3d();
-xset('alufunction',7);
-xset('window',0);
-plot3d();
-xset('default');
-plot3d();
-xset('alufunction',6);
-xset('window',0);
-plot3d();
-\end{verbatim} 
-
-We have seen that some choices exist for the fonts and this choice can
-be extended by the command:
-        \item  {\tt xlfont}    : to load a new family of fonts 
-
-
-There exists the function ``reciprocal'' to {\tt xset} :
-
-       \item  {\tt xget}       : to get informations about the
-       current graphic context.
-
-All the values of the parameters fixed by {\tt xset} can be obtained by 
-{\tt xget}. An example :
-
-\begin{verbatim}
-
--->pos=xget("wpos")
- pos  =
-!   105.    121. !
-
-\end{verbatim}
-
-{\tt pos} is the position of the upper left point of the graphic window.
-\end{itemize}
-%
-
-\subsubsection{Some Manipulations}
-
-Coordinates transforms:
-\begin{itemize}
-
-\item \verb+isoview+   : isometric scale without window change 
-
-allows an isometric scale in the window of previous plots without changing
-the window size:
-
-\begin{verbatim}
-
-t=(0:0.1:2*%pi)';
-plot2d(sin(t),cos(t));
-xbasc()
-isoview(-1,1,-1,1);
-plot2d(sin(t),cos(t));
-
-\end{verbatim}
-
-\item \verb+square+    : isometric scale with resizing the window
-
-the window is resized according to the parameters of the command.
-
-\item \verb+scaling+   : scaling on data
-\item \verb+rotate+    : rotation
-
-\verb+scaling+ and \verb+rotate+ executes respectively an affine transform and
-a geometric rotation of a 2-lines-matrix corresponding to the {\tt (x,y) }
-values of a set of points.
-\item \verb+xgetech, xsetech+  : change of scale inside the graphic window
-
-The current graphic scale can be fixed by a high level plot command. You may
-want to get this parameter or to fix it directly : this is the role of 
-\verb+xgetech, xsetech+ . {\tt xsetech } is a simple way to cut the
-window in differents parts for different plots :
-
-\begin{verbatim}
-
-t=(0:0.1:2*%pi)';
-xsetech(wrect=[0.,0.,0.6,0.3],frect=[-1,1,-1,1]);
-plot2d(sin(t),cos(t));
-xsetech(wrect=[0.5,0.3,0.4,0.6],frect=[-1,1,-1,1]);
-plot2d(sin(t),cos(t));
-
-\end{verbatim}
-
-\end{itemize}
-%
-
-
-\section{2D Plotting}
-
-\subsection{Basic 2D Plotting}
-
-The simplest 2D plot is {\tt plot(x,y)} or {\tt plot(y)}: this is the plot of 
-{\tt y} as function of {\tt x} where {\tt x} and {\tt y} are 2 vectors; if 
-{\tt x} is missing, it is replaced by the vector {\tt (1,size(y,'*')))}.
-If {\tt y} is a matrix, its rows are plotted. There are optional arguments.
-
-
-A first example is given by the following commands and one of the results is
-represented on figure \ref{d7-1}:
-
-\begin{verbatim}
-
-t=(0:0.05:1)';
-ct=cos(2*%pi*t);
-// plot the cosine
-plot(t,ct);
-// xset() opens the toggle panel and 
-// some parameters can be changed with mouse clicks
-// given by commands for the demo here 
-xset("font",5,4);xset("thickness",3);
-// plot with captions for the axis and a title for the plot
-// if a caption is empty the argument ' ' is needed
-plot(t,ct,'Time','Cosine','Simple Plot');
-// click on a color of the xset toggle panel and do the previous plot again
-// to get the title in the chosen color
-
-\end{verbatim}
-
-\input{figures/d7-1.tex}
-\caption{\label{d7-1}First example of plotting}
-%\dessin{First example of plotting}{d7-1}
+\chapter{Graphics}\label{Graphics}
+The graphics primitives in Scilab release 3.0 accept two graphic ``styles'',
+the ``old'' style which is based on a pre-processing treatment 
+and the ``new'' style, used by default, which is based on an object 
+oriented environment.
+
+These two styles are not fully compatible. To switch to the old style,
+use the command \verb!set old_style on!.
+
+The old style mode is essentially based on two functions, 
+{\tt xset} and {\tt xsetech} which act on the graphic environment.
+Once the graphic environment parameters are set, the graphic commands
+are used for plotting.
+
+In the new style mode, once the plotting command is issued, it is 
+possible to act on the graphic environment by changing the
+properties of the graphic objects made by the plot command.
+The graphic environment is post-processed.
+
+%Nouvelles primitives
+%set get draw drawlater drawnow move copy delete glue unglue
+%Nouvelles macros
+%gcf gca gdf gda sdf sda clearpixmap showpixmap
+
+%primitives obsolete pour le nouveau graphique
+%xset (sauf 'window' et 'alufunction')
+%xget (sauf 'window' et 'alufunction')
+%xtape xname xgrid replot isoview
+
+Scilab graphics are based on a set a graphics functions such as {\tt plot2d},
+{\tt plot3d} \ldots and an object oriented graphic environment.
+The properties of the graphic objects (color, thickness, ...) are manipulated
+with the functions {\tt get} and {\tt set}. The main graphic objects
+are the figure entity and the axes entity. 
+We give here a description of the most useful functions illustrated by
+simple examples. For more sophisticated examples, it is necessary to read
+the on-line help pages. The graphic demos are also useful and it is
+a good way to start.
+
+\section{Function plot2d}
+The basic graphic function \index{plot2d@\scilab{plot2d}} used
+for plotting one or several 2D curves is \scifun{plot2d}.
+The simplest graphic command is \scilab{plot2d(x,y)} where 
+x and y are two vectors with same dimension.
+This command gives the graph of the polyline which links each
+point with  coordinates \scilab{(x(i),y(i))} with the next point
+with coordinates \scilab{(x(i+1),y(i+1))}. The vectors
+\scilab{x} et \scilab{y} must have at least two components. 
+The vector \scilab{x} can be omitted, its default value being 
+\scilab{1:n} where \scilab{n} is the size of \scilab{y}. 
+\begin{figure}
+\begin{center}
+%\includegraphics[width=10cm]{figures/graphique0.eps}
+\includegraphics[width=10cm,height=7.6cm]{figures/f0.eps}
+\end{center}
+\caption{A simple graph}
+\label{f0}
 \end{figure}
 
-\noindent The generic 2D multiple plot is 
-
-
-\noindent {\tt  plot2di(x,y,<options>)}
-\begin{itemize}
-
-\item index of \verb+plot2d+   : {\tt i=missing,2,3,4}.
-
-For the different values of {\tt i} we have:
-
-       {\tt i=missing} : piecewise linear/logarithmic plotting
-
-       {\tt i=2}       : piecewise constant drawing style
-
-       {\tt i=3}       : vertical bars
-
-       {\tt i=4}       : arrows style (e.g. ode in a phase space)
-
-\end{itemize}
-
-\begin{verbatim}
-t=(1:0.1:8)';xset("font",2,3);
-subplot(2,2,1)
-plot2d([t t],[1.5+0.2*sin(t) 2+cos(t)]);
-xtitle('Plot2d-Piecewise linear');
-//
-subplot(2,2,2)
-plot2d(t,[1.5+0.2*sin(t) 2+cos(t)],logflag='ll');
-xtitle('Plot2d1-Logarithmic scales');
-//
-subplot(2,2,3)
-plot2d2(t,[1.5+0.2*sin(t) 2+cos(t)]);
-xtitle('Plot2d2-Piecewise constant');
-//
-subplot(2,2,4)
-plot2d3(t,[1.5+0.2*sin(t) 2+cos(t)]);
-xtitle('Plot2d3-Vertical bar plot')
-\end{verbatim}
-
-\input{figures/nouv1.tex}
-
-\begin{itemize}
-
-
-\item Parameters {\tt x,y} : two matrices of the same size {\tt [nl,nc]} ({\tt nc} 
-is the number of curves and {\tt nl} is the number of points of each
-curve).
-
-For a single curve the vector can be row or column: \\
-{\tt plot2d(t',cos(t)')  plot2d(t,cos(t))} are equivalent.
-
-
-\item option {\tt style}       :it is a real vector of size {\tt
-(1,nc)}; the style 
-to use for curve j is defined by {\tt size(j)} (when only one curve is drawn 
-{\tt style} can specify the style and a position to use for the
-caption).
-
-\begin{verbatim}
-xmax=5.;x=0:0.1:xmax;
-u=[-0.8+sin(x);-0.6+sin(x);-0.4+sin(x);-0.2+sin(x);sin(x)];
-u=[u;0.2+sin(x);0.4+sin(x);0.6+sin(x);0.8+sin(x)]';   
-//start trying the symbols (negative values for the style)
-
-plot2d(x,u,style=[-9,-8,-7,-6,-5,-4,-3,-2,-1,0])
-
-x=0:0.2:xmax; 
-v=[1.4+sin(x);1.8+sin(x)]'; 
-xset("mark size",5);
-plot2d(x,v,style=[-7,-8])
-xset('default');
-\end{verbatim}
-
-\input{figures/nouv2.tex}
-
-\item Option {\tt frameflag} : is a scalar corresponding to :
-
-\begin{tabular}{|l|l|l|l|}                               \hline
-   requirements&ranges       &ranges    &ranges       \\    
-               &of a previous&given by  &computed from\\
-actual         &plot         &rect arg  &x and y      \\ \hline
-requested      &             &          &             \\
-one            &        0    &      1   &        2    \\ \hline
-Computed       &             &          &             \\
-for isometric  &             &      3   &        4    \\
-view           &             &          &             \\ \hline
-Enlarged       &             &          &             \\  
-For pretty     &             &      5   &        6    \\
-axes           &             &          &             \\ \hline
-Previous and   &             &          &             \\
-current        &             &      7   &        8    \\
-plots merged   &             &          &             \\ \hline
-\end{tabular}
-\item Option {\tt axesflag} controls the display of information on the frame around the plot :
-\begin{itemize}
-\item 0
-: 
-nothing is drawn around the plot.
-\item 1 
-: 
-axes are drawn, the y=axis is displayed on the left. 
-\item 2
-: 
-the plot is surrounded by a box without tics.
-\item 3 
-: 
-axes are drawn, the y=axis is displayed on the right. 
-\item 4
-: 
-axes are drawn centred in the middle of the frame box. 
-
-\item 5 
-: 
-axes are drawn so as to cross at point {\tt (0,0)}.  If point
-{\tt (0,0)} does not lie inside the frame, axes will not appear on the graph.
-\end{itemize}
-
-\item Option {\tt leg }         : it is the string of the captions for the different 
-plotted curves . This string is composed of fields separated by the {\tt @} 
-symbol: for example  {\tt ``module@phase''} (see example below). These 
-strings are
-displayed under the plot with  small segments recalling the styles of the 
-corresponding curves.
-
-\item Option {\tt rect }       : it is a vector of 4 values specifying the boundaries 
-of the plot {\tt rect=[xmin,ymin,xmax,ymax]}.
-
-\item Option {\tt nax }        : it is a vector [nx,Nx,ny,Ny] where nx (ny) is 
-the number of subgrads on the x (y) axis and Nx (Ny) is the number of 
-graduations  on the x (y) axis.
-
-\end{itemize}
-
-\begin{verbatim}
-
-//captions for identifying the curves
-//controlling the boundaries of the plot and the tics on axes
-x=-5:0.1:5;
-y1=sin(x);y2=cos(x);
-X=[x;x]; Y=[y1;y2];
-plot2d(X',Y',style=[-1 -3]',leg="caption1@caption2",...
-rect=[-5,-1,5,1],nax=[2,10,5,5]);
-
-\end{verbatim}
-
-\input{figures/nouv3.tex}
-
-
-For different plots the simple commands without any argument show a demo 
-(e.g {\tt plot2d3()} ).
-
-\subsection{Captions and Presentation}
-%
-\begin{itemize}
-\item \verb+xgrid+     : adds a grid on a 2D graphic; the
-calling parameter is the number of the color.
-\item \verb+xtitle+    : adds  title above the plot and axis 
-names on a 2D graphic
-\item \verb+titlepage+ : graphic title page in the middle of
-the plot
-
-\begin{verbatim}
-
-//Presentation
-x=-%pi:0.1:%pi;
-y1=sin(x);y2=cos(x);y3=x;
-X=[x;x;x]; Y=[y1;y2;y3];
-plot2d(X',Y',style=[-1 -2 -3],leg="caption1@caption2@caption3",...
-rect=[-3,-3,3,2],nax=[2,10,2,5]);
-xtitle(["General Title";"(with xtitle command)"],...
-"x-axis title","y-axis title (with xtitle command)");
-xgrid();
-xclea(-2.7,1.5,1.5,1.5);
-titlepage("Titlepage");
-xstring(0.6,.45,"(with titlepage command)");
-xstring(0.05,.7,["xstring command after";"xclea command"],0,1);
-plot2d(X',Y',style=[-1 -2 -3],leg="caption1@caption2@caption3",...
-rect=[-3,-3,3,2],nax=[2,10,2,5]);
-
-\end{verbatim}
-
-\input{figures/nouv4.tex}
-
-
-       \item \verb+plotframe+  : graphic frame with scaling and grid
-\end{itemize}
-%
-
-We have seen that it is possible to control the tics on the axes,
-choose the size of the rectangle for the plotand add a grid.
-This operation can be prepared once and then used for a sequence of
-different plots. One of the most useful aspect is to get  graduations 
-by choosing the number of graduations and getting rounded numbers.
-
+Let us start with a simple example. Entering the commands 
 \begin{verbatim}
-
-rect=[-%pi,-1,%pi,1];
-tics=[2,10,4,10];
-plotframe(rect,tics,[%t,%t],...
-['Plot with grids and automatic bounds','angle','velocity']);
-
+-->x=linspace(0,2*%pi,100);plot2d(x,sin(x))
 \end{verbatim}
-
-\begin{itemize}
-       \item \verb+graduate+   : a simple tool for computing pretty
-axis graduations before a plot.
-\end{itemize}
-%
-
-\subsection{Specialized 2D Plottings}
-%
-\begin{itemize}
-        \item \verb+champ+     : vector field in $R^{2}$
-
+opens a graphic window and produces a graph of the sine function
+for 100 values of x equally spaced between 0 and $2 \pi$.
+ The  \scilab{plot2d} command opens a graphic window
+(see figure \ref{f0}) in which the plot appears. 
+The graph is plotted in a rectangular frame and the bottom and left
+sides are used for axes with ticks.
+
+By default, \scifun{plot2d} does not erase the graphic window, but
+the plot is made in the current windows, which possibly contains older
+plots. Thus, if after the preceding command the following is entered~:
 \begin{verbatim}
-//try champ
-x=[-1:0.1:1];y=x;u=ones(x);
-fx=x.*.u';fy=u.*.y';
-champ(x,y,fx,fy);
-xset("font",2,3);
-xtitle(['Vector field plot';'(with champ command)']);
-//with the color (and a large stacksize)
-x=[-1:0.004:1];y=x;u=ones(x);
-fx=x.*.u';fy=u.*.y';
-champ1(x,y,fx,fy);
+t=linspace(0,4*%pi,100);plot2d(t,0.5*cos(t))
 \end{verbatim}
+\noindent we get figure \ref{g0}) in which the graph of th
+two functions, sine and cosine, appear with a common x axis.
+(note that the x-axis goes from  $0$ to $4\pi$ after the second
+plot command).
+\begin{figure}
+\begin{center}
+%\includegraphics[width=10cm]{figures/graphique0.eps}
+%\includegraphics[width=10cm]{figures/gg.eps}
+\includegraphics[width=10cm]{figures/f1.eps}
+\end{center}
+\caption{Two plots: superposing curves}\label{g0}
+\end{figure}
 
-\input{figures/nouv5.tex}
-
-
-
-       \item \verb+fchamp+     : for a vector field in $R^{2}$ defined by a 
-function. The same plot than {\tt champ} for a vector field defined
-for example by a scilab program.
-
-       \item \verb+fplot2d+    : 2D plotting of a curve described by a 
-function. This function plays the same role for {\tt plot2d} than the 
-previous for {\tt champ}.
-
-       \item \verb+grayplot+   : 2D plot of a surface using gray
-levels; the surface being defined by the matrix of the values
-for a grid.
-
-       \item \verb+fgrayplot+  : the same than the previous for a
-surface defined by a function (scilab program).
+To clear the graphic window, the command \scifun{xbasc()} should be
+used or just click the \scifun{Clear} button of the  \scifun{File} menu.
 
-In fact these 2 functions can be replaced by a usual color plot with
-an appropriate colormap where the 3 RGB components are the same.
+Using the standard menus, it is possible to zoom a part of the graph or
+to export the graphic window into a file or to see the 2D plot in a
+3D figure. Menus can be interactively 
+added or removed, using \scifun{delmenu}  \scifun{addmenu} functions.
 
+Parameters such as the color or the thickness of the frame can be
+given to the {\tt plot2d} function. Note that the graphic parameters are 
+given to {\tt plot2d} with a particular syntax. For instance to select a 
+color or a line style we can use the ``style'' keyword inside the plot2d
+command as follows:
 \begin{verbatim}
-R=[1:256]/256;RGB=[R' R' R'];
-xset('colormap',RGB);
-deff('[z]=surf(x,y)','z=-((abs(x)-1)**2+(abs(y)-1)**2)');
-fgrayplot(-1.8:0.02:1.8,-1.8:0.02:1.8,surf,rect=[-2,-2,2,2]);
-xset('font',2,3);
-xtitle(["Grayplot";"(with fgrayplot command)"]);
-//the same plot can be done with a ``unique'' given color
-R=[1:256]/256;
-G=0.1*ones(R);
-RGB=[R' G' G'];
-xset('colormap',RGB);
-fgrayplot(-1.8:0.02:1.8,-1.8:0.02:1.8,surf,rect=[-2,-2,2,2]);
+-->plot2d(x,y,style=5) //5 means ``red''
 \end{verbatim}
 
-%\input{figures/nouv6.tex}
-%\dessin{Gray plot with a gray colormap}{nouv6}
-
-       \item \verb+errbar+     : creates a plot with error bars
-\end{itemize}
-%
-
-
-\subsection{Plotting Some Geometric Figures}
-\subsubsection{Polylines Plotting}
-\begin{itemize}
-       \item \verb+xsegs+      : draws a set of unconnected segments 
-       \item \verb+xrect+      : draws a single rectangle
-       \item \verb+xfrect+     : fills a single rectangle
-       \item \verb+xrects+     : fills or draws a set  of rectangles
-       \item \verb+xpoly+      : draws a polyline
-       \item \verb+xpolys+     : draws a set of polylines
-       \item \verb+xfpoly+     : fills a polygon
-       \item \verb+xfpolys+    : fills a set of polygons
-       \item \verb+xarrows+    : draws a set of unconnected arrows
-       \item \verb+xfrect+     : fills a single rectangle
-       \item \verb+xclea+      : erases a rectangle on a graphic window
-\end{itemize}
-%
-
-\subsubsection{Curves Plotting}
-\begin{itemize}
-       \item \verb+xarc+       : draws an ellipsis
-       \item \verb+xfarc+      : fills an ellipsis
-       \item \verb+xarcs+      : fills or draws a set of ellipsis
-\end{itemize}
-%
-
-\subsection{ Writting by Plotting}
-%
-\begin{itemize}
-       \item  \verb+xstring+   : draws a string or a matrix of strings
-        \item  \verb+xstringl+ : computes a rectangle which surrounds
-        a string
-       \item  \verb+xstringb+  : draws a string in a specified box
-       \item  \verb+xnumb+     : draws a set of numbers
-\end{itemize}
-%
-
-We give now the sequence of the commands for obtaining the 
-figure~ \ref{fgeom}.
-
+The basic properties of a figure can be accessed by clicking on the {\tt Edit}
+button of the graphic window. For instance to select a particular color
+(as done with style=5 before) we can use the command
 \begin{verbatim}
-//     initialize default environment variables
-xset('default');
-xset("use color",0);
-xset("font",4,3)
-xsetech(frect=[1,1,10,10]);
-xrect(0,1,3,1)
-xfrect(3.1,1,3,1)
-xstring(0.5,0.5,"xrect(0,1,3,1)")
-xstring(4.,0.5,"xfrect(3.1,1,3,1)")
-xset("alufunction",6)
-xstring(4.,0.5,"xfrect(3.1,1,3,1)")
-xset("alufunction",3)
-xv=[0 1 2 3 4]
-yv=[2.5 1.5 1.8 1.3 2.5]
-xpoly(xv,yv,"lines",1)
-xstring(0.5,2.,"xpoly(xv,yv,""lines"",1)")
-xa=[5 6 6 7 7 8 8 9 9 5]
-ya=[2.5 1.5 1.5 1.8 1.8 1.3 1.3 2.5 2.5 2.5]
-xarrows(xa,ya)
-xstring(5.5,2.,"xarrows(xa,ya)")
-xarc(0.,5.,4.,2.,0.,64*300.)
-xstring(0.5,4,"xarc(0.,5.,4.,2.,0.,64*300.)")
-xfarc(5.,5.,4.,2.,0.,64*360.)
-//xset("alufunction",6)
-xclea(5.6,4.4,2.8,0.8);
-xstring(5.8,4.,"xfarc  and then  xclea")
-//xset("alufunction",3)
-xstring(0.,4.5,"WRITING-BY-XSTRING()",-22.5) 
-xnumb([5.5 6.2 6.9],[5.5 5.5 5.5],[3 14 15],1)
-isoview(0,12,0,12)
-xarc(-5.,12.,5.,5.,0.,64*360.)
-xstring(-4.5,9.25,"isoview + xarc",0.)
-A=["  1" "       2" "  3";"  4" "       5" "  6";"68" "  17.2" "  9"];
-xstring(7.,10.,A);
-rect=xstringl(7,10,A);
-xrect(rect(1),rect(2),rect(3),rect(4));
+-->plot2d(x,y)
 \end{verbatim}
+and select the {\tt Start entity picker} item of the {\tt Edit} button, then
+click on the curve, select a particular color and finally select the 
+{\tt Stop entity picker} item. 
 
-\input{figures/nouv7.tex}
-
-
-e have seen that some parameters of the graphics are controlled by a 
-graphic context 
-( for example the line thickness) and others are controlled through
-graphics arguments . 
-%
-\begin{itemize}
-       \item  {\tt xset}       : to set graphic context values.
-Some examples of the use of {\tt xset} : 
-
-(i)-{\tt xset("use color",flag)} changes to color or black and white plot according to 
-the values (1 or 0) of {\tt flag}.
-
-(ii)-{\tt xset("window",window-number)} sets the current window to the window \\
-{\tt window-number} and creates the window if it doesn't exist.
-
-(iii)-{\tt xset("wpos",x,y)} fixes the position of the upper left point of 
-the graphic window.
-
-The choice of the font, the width and height of the window, the driver...
-can be done by {\tt xset}.
-
-       \item  {\tt xget}       : to get informations about the current graphic context.
-All the values of the parameters fixed by {\tt xset} can be obtained by 
-{\tt xget}.
-
-        \item  {\tt xlfont}    : to load a new family of fonts
-\end{itemize}
-%
-\subsection{Some Classical Graphics for Automatic Control}
-
-\begin{itemize}
-
-       \item  \verb+bode+      : plot magnitude and phase of the 
-frequency response of a linear system.
-
-       \item  \verb+gainplot+  : same as bode but plots only the 
-magnitude of the frequency response.
-
-       \item  \verb+nyquist+   : plot of imaginary part versus real 
-part of the frequency response of a linear system.
-
-       \item  \verb+m_circle+  : M-circle plot used with nyquist plot.
-
-       \item  \verb+chart+     : plot the Nichols'chart 
-
-       \item  \verb+black+     : plot the Black's diagram (Nichols'chart)
-for a linear system.  
-
-       \item  \verb+evans+     : plot the Evans root locus for a
-linear system.
-
-       \item  \verb+plzr+      : pole-zero plot of the linear system
-
-\end{itemize}
-
+\section{Figure, axes, etc}
+Once a graphic command has been issued, the properties of the figure
+obtained are retrieved by the command 
 \begin{verbatim}
-s=poly(0,'s');
-h=syslin('c',(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01));
-h1=h*syslin('c',(s^2+2*0.1*15.1*s+228.01)/(s^2+2*0.9*15*s+225));
-//bode
-subplot(2,2,1)
-gainplot([h1;h],0.01,100);
-//nyquist
-subplot(2,2,2)
-nyquist([h1;h])
-
-//chart and black 
-subplot(2,2,3)
-black([h1;h],0.01,100,['h1';'h'])
-chart([-8 -6 -4],[80 120],list(1,0));
-//evans
-subplot(2,2,4)
-H=syslin('c',352*poly(-5,'s')/poly([0,0,2000,200,25,1],'s','c'));
-evans(H,100)
+-->f=gcf()
 \end{verbatim}
-
-\input{figures/nouv8.tex}
-
-
-%
-\subsection{Miscellaneous}
-%
-\begin{itemize}
-       \item  \verb+edit_curv+ : interactive graphic curve editor.
-
-       \item  \verb+gr_menu+   : simple interactive graphic editor. It
-is a Xfig-like simple editor with a flexible use for a nice
-presentation of graphics : the user can superpose the elements of
-\verb+gr_menu+ and use it with the usual possibilities of {\tt xset}.
-
-       \item  \verb+locate+    : to get the coordinates of one or more 
-points selected with the mouse on a graphic window.
-
-\end{itemize}
-% 
-
+Here {\tt f} is a handle which describes the figure properties.
+It has many fields which can be modified to change the properties
+of the figure.
+For instance, issuing
 \begin{verbatim}
-
+-->f.figure_name='My figure'
 \end{verbatim}
-\input{figures/scifi2.tex}
-
-
-
-\section{3D Plotting}
-\subsection{Generic 3D Plotting}
-%
-\begin{itemize}
-       \item  \verb+plot3d+ : 3D plotting of a matrix of points : plot3d(x,y,z) with x,y,z 3 matrices, z being the values for the points with coordinates x,y. Other
-arguments are optional
-       \item   \verb+plot3d1+ : 3d plotting    of a matrix of points with gray levels
-       \item   \verb+fplot3d+ : 3d plotting    of a surface described by a function; z is given by an external z=f(x,y)
-       \item   \verb+fplot3d1+ : 3d    plotting of a surface described by a function with gray levels
-\end{itemize}
-%
-\subsection{Specialized 3D Plotting}
-\begin{itemize}
-       \item \verb+param3d+    : plots parametric curves in 3d space
-       \item \verb+contour+    : level curves for a 3d function given by a 
-matrix
-       \item \verb+grayplot10+ : gray level on a 2d plot
-       \item \verb+fcontour10+ : level curves for a 3d function given by a 
-function
-       \item \verb+hist3d+     : 3d histogram
-       \item \verb+secto3d+    : conversion of a surface description from 
-sector to plot3d compatible data
-       \item \verb+eval3d+     : evaluates a function on a regular grid. 
-(see also feval)
-\end{itemize}
-%
-
-\subsection{Mixing 2D and 3D graphics}
-
-When one uses 3D plotting function, default graphic boundaries are
-fixed, but in $R^3$. If one wants to use graphic primitives 
-to add informations on 3D graphics, the \verb+geom3d+ function can be
-used to convert 3D coordinates to 2D-graphics coordinates. The
-figure~ \ref{d710} illustrates this feature.
-
-%\def\exemple{d710}
-\input{figures/d7-10.vtex}
-
-\input{figures/d710.tex}
-
-
-\subsection{Sub-windows}
-%\def\exemple{d7-8}
+will modify the \verb!figure_name! field and change the name of the 
+figure which appears in the current graphic window.
 
-It is also possible to make multiple plotting in the same 
-graphic window (Figure~\ref{d7-8}).
-
-\input{figures/d7-8.vtex}
-
-\input{figures/d7-8.tex}
-\caption{\label{d7-8}Use of subplot}
-\end{figure}
-
-
-\subsection{A Set of Figures}
-%\def\exemple{d7a11}
-
-In this next example we give a brief summary of different plotting
-functions for 2D or 3D graphics. The figure~ \ref{d7a11} is 
-obtained and inserted in this document with the help of the command 
-\verb+Blatexprs+.
-\input{figures/d7a11.vtex}
-
-\input{figures/d7a11.tex}
-\caption{\label{d7a11}Group of figures}
-\end{figure}
-
-\section{Printing and Inserting Scilab Graphics in \LaTeX}
-
-We describe here the use of programs (Unix shells) for handling Scilab 
-graphics and printing the results. These programs are located in the
-sub-directory {\tt bin} of Scilab.
-
-\subsection{Window to Paper}
-The simplest command to get a paper copy of a plot is to click on the
-{\tt print} button of the ScilabGraphic window.
-
-\subsection{Creating a Postscript File}
-We have seen at the beginning of this chapter that the simplest way to get 
-a Postscript file containing a Scilab plot is :
-
-\begin{verbatim}
--->driver('Pos')
--->xinit('foo.ps')
--->plot3d1();
--->xend()
--->driver('Rec')
--->plot3d1()
--->xbasimp(0,'foo1.ps')
-
-\end{verbatim}
-
-
-The Postscript files ({\tt foo.ps } or {\tt foo1.ps }) generated by Scilab 
-cannot be directly sent to a
-Postscript printer, they need a preamble. Therefore, printing is done
-through the use of Unix scripts or programs which are provided with
-Scilab. The program \verb+Blpr+ is used to print a set of Scilab Graphics 
-on a single sheet of paper and is used as follows~:
-
-\begin{verbatim}
- Blpr string-title file1.ps file2.ps > result
-\end{verbatim}
-
-You can then print the file  {\tt result} with the classical Unix command :
+The handle {\tt f} has a field called ``children'' which is an handle
+descrining the properties of the axes of the figure.
 
+Assume now that we have plotted a graph by the 
+{\tt plot2d(x,y)} command want add a title to the graph obtained.
+The handle associated with the figure is \verb!f=gcf()!.
+To access to the properties of the axes of the figure one can enter
 \begin{verbatim}
-lpr -Pprinter-name result
+-->a=f.children
 \end{verbatim}
-
-\noindent or use the \verb+ghostview+ Postscript interpreter on your Unix
-workstation to see the result.
-
-You can avoid the file {\tt result} with a pipe, replacing {\tt  > result}
-by the printing command {\tt | lpr} or the previewing command 
-{\tt | ghostview -}.
-
-The best result (best sized figures) is obtained when printing two 
-pictures on a single page. 
-
-
-\subsection{Including a Postscript File in \LaTeX}
-
-The \verb|Blatexpr| Unix shell and the programs \verb+Batexpr2+ and 
-\verb+Blatexprs+ are provided in order to help inserting Scilab graphics 
-in \LaTeX .
-
-Taking the previous file {\tt foo.ps} and  typing the following statement 
-under a Unix shell~:
+and we see that the handle {\tt a} has a field named ``title''.
+Now if we enter 
 \begin{verbatim}
-Blatexpr 1.0 1.0 foo.ps
+-->l=a.title
 \end{verbatim}
-creates two files \verb+foo.epsf+ and \verb+foo.tex+. The original
-Postscript file is left unchanged. 
-To include the figure in a \LaTeX~ document you should insert the following 
-\LaTeX~ code in your \LaTeX~ document~:
-
+we see that {\tt l} is itself a handle with a field named ``text''.
+We can give a title to the plot by the command \verb!l.text=My plot'!
+Of course it is possible to obtain the same result by
+the command
 \begin{verbatim}
-\input foo.tex
-\dessin{The caption of your picture}{The-label}
+f.children.title.text='My plot'
 \end{verbatim}
+This simple example illustrates how to manipulate graphics within Scilab.
 
-You can also see your figure by using  the  Postscript
-previewer \verb+ghostview+.
-
-The program \verb+Blatexprs+ does the same thing: it is used to insert
-a set of Postscript figures in one \LaTeX picture.
-
-In the following example, we begin by using the Postscript driver {\tt Pos}
-and then initialize successively 4 Postscript files 
-{\tt fig1.ps, ..., fig4.ps} for
-4 different plots and at the end return to the driver {\tt Rec} (X11 driver
-with record).
-
-\input{diary/mulplot.dia}
-
-Then we execute the command :
-
+\section{Graphic objects properties}
+Help on the graphics objects can obtained by the command
 \begin{verbatim}
-  Blatexprs multi fig1.ps fig2.ps fig3.ps fig4.ps
+-->help graphics_entities
 \end{verbatim}
-
-\noindent and we get 2 files {\tt multi.tex} and  {\tt multi.ps} and you can 
-include the result in a \LaTeX~ source file by :
-
+The properties of the various graphic objects are obtained by the command 
 \begin{verbatim}
-\input multi.tex
-\dessin{The caption of your picture}{The-label}
+-->help object_properties
 \end{verbatim}
+where {\verb!object_properties!} is in the following table.
+\begin{center}
+\begin{tabular}{|c|}
+\hline
+{\verb!agregation_properties!} \\ \hline
+{\verb!arc_properties!} \\ \hline
+{\verb!axes_properties!} \\ \hline
+{\verb!axis_properties! }  \\ \hline
+{\verb!champ_properties! } \\ \hline
+{\verb!fec_properties!} \\
+{\verb!figure_properties!} \\ \hline
+{\verb!grayplot_properties!} \\ \hline
+{\verb!label_properties! } \\ \hline
+{\verb!legend_properties! } \\ \hline
+{\verb!param3d_properties !} \\ \hline
+{\verb!polyline_properties! } \\ \hline
+{\verb!rectangle_properties !} \\ \hline
+{\verb!segs_properties! } \\ \hline
+{\verb!text_properties! } \\ \hline
+{\verb!title_properties! } \\ \hline
+\end{tabular}
+\end{center}
+
+To get a handle associated with a graphic object, one can use the 
+functions {\tt gcf()} (current Figure), {\tt gca()} (current Axes),
+or {\tt gce()} (current Entity). From the top figure handle, one 
+can access the complete tree of (sub)handles by selecting the various
+children and parents of a given handle.
+
+\section{Some useful plotting functions}
+\subsection{2D plots}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt plot2d }  & basic plot function \\ \hline
+{\tt plot3d } & plot surface \\ \hline
+{\tt param3d } &  parametric plot \\ \hline
+{\tt (f)champ} & vector field plot \\ \hline
+{\tt contour}, {\tt fcontour}, {\tt (f)contour2d}, \\
+{\tt contourf}, {\tt fcontour2d} & level curve plot \\ \hline
+{\tt errbar  }  & add error bar \\ \hline
+{\tt Matplot }  & 2D plot of a matrix using colors \\ \hline
+{\tt histplot}  & histogram \\ \hline
+{\tt errbar}  & vertical bars \\ \hline
+{\tt S(f)grayplot}  & smooth 2D plot of surface \\ \hline
+{\tt (f)grayplot}  & 2D plot of surface \\ \hline
+\end{tabular}
+\end{center}
+
+\subsection{3D plots}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt (f)plot3d } & plot surface \\ \hline
+{\tt param3d(1) } &  parametric plot \\ \hline
+{\tt contour} & level curve plot \\ \hline
+{\tt hist3d}  & 3D histogram\\ \hline
+{\tt genfac3d, eval3dp }  & compute factes \\ \hline
+{\tt hist3d}  & histogram \\ \hline
+{\tt geom3d}  & 3D projection \\ \hline
+{\tt S(f)grayplot}  & smooth 2D plot of surface \\ \hline
+{\tt (f)grayplot}  & 2D plot of surface \\ \hline
+\end{tabular}
+\end{center}
+
+\subsection{Low level 2D plots}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt xpoly} & polyline plot \\ \hline
+{\tt xpolys } &  multi-polyline plot \\ \hline
+{\tt xrpoly} & regular polygon plot \\ \hline
+{\tt xsegs}  & draw unconnected segments\\ \hline
+{\tt xfpoly(s) }  & filled polygon(s) \\ \hline
+{\tt xrect }  & rectangle plot \\ \hline
+{\tt xfrect }  & filled rectangle plot \\ \hline
+{\tt xrects }  & draw or fill rectangles \\ \hline
+\end{tabular}
+\end{center}
+
+\subsection{Strings, ...}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt xstring, xstringl, xstringb} & string plots \\ \hline
+{\tt xarrows} & arrows plot \\ \hline
+{\tt xarc(s), xfarc, xfarcs} & arcs plot \\ \hline
+\end{tabular}
+\end{center}
+
+\subsection{Colors}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt colormap} & set colormap \\ \hline
+{\tt getcolor} & select color \\ \hline
+{\tt addcolor} & add color to colormap \\ \hline
+{\tt graycolormap} & gray colormap \\ \hline
+{\tt hotcolormap} & red to yellow colormap \\ \hline
+\end{tabular}
+\end{center}
+
+\subsection{Mouse position}
+\begin{center}
+\begin{tabular}{|c|c|}
+\hline
+{\tt xclick} & wait for a mouse click \\ \hline
+{\tt locate } & mouse selection of a set of points \\ \hline
+{\tt xgetmouse} & add color to colormap \\ \hline
+{\tt graycolormap} & get the current position of the mouse\\ \hline
+\end{tabular}
+\end{center}
 
-Note that the second line {\tt dessin...} is absolutely necessary and you
-have of course to give the absolute path for the input file if you are 
-working in another directory (see below). The file {\tt  multi.tex} is only 
-the definition of the command {\tt dessin} with 2 parameters : the caption 
-and the label; the command {\tt dessin} can be used with one or two
-empty arguments {\tt `` ``} if you want to avoid the caption or the label.   
+\section{Animated plot}\label{Animation}
+\index{animated plot}
+\subsection{pixmap mode}
+To run the pixmap mode, get the handle of the current figure
+\verb!f=gcf();! and activate the pixmap mode \verb!f.pixmap='on'!.
 
-The Postscipt files are inserted in \LaTeX~ with the help of the
-\verb+\special+ command and with a syntax that works with the
-\verb+dvips+ program.
+When the pixmap mode is on, the pixels of the graphic window
+are stored into a temporary buffer which is displayed upon request.
+The various steps corresponding to the creation of the image are not
+displayed. 
 
-The program \verb+Blatexpr2+ is used when you want two pictures side
-by side.
-\begin{verbatim}
-  Blatexpr2 Fileres file1.ps file2.ps 
-\end{verbatim}
+An animated plot using this mode is generally obtained by a 
+a for or while loop which produces a new image at each iteration.
 
-%\def\exemple{d7-12}
-\input{figures/d7-12.tex}
-\caption{\label{d7-12}Blatexp2 Example}
-%\dessin{Blatexpr2 Example}{d7-12}
-\end{figure}
+When the image is ready, the screen display is realized by
+the \scifun{show\_pixmap()} command.
 
-It is sometimes convenient to have a main \LaTeX~ document in a directory
-and to store all the figures in a subdirectory. The proper way to
-insert a  picture file in the main document, when the picture 
-is stored in the subdirectory \verb+figures+, is the following~:
+In the animation mode, it is often necessary to set a frame 
+with given dimensions in which the animated plotting command will take place.
 
+To fix an appropriate frame with extremal values 
+\scilab{rect=[xmin,ymin,xmax,ymax]} one can set properties of the axes
+(\verb!data_bounds! field obtained by \verb!gca()!) or alternaltively 
+enter the command 
+\noindent
 \begin{verbatim}
-\def\Figdir{figures/} % My figures are in the {\tt figures/ } subdirectory.
-\input{figures/fig.tex}
-\dessin{The caption of you picture}{The-label}
+plot2d([],[],rect=[xmin,ymin,xmax,ymax]). 
 \end{verbatim}
 
-The declaration \verb+\def\Figdir{figures/}+ is used twice, first to
-find the file {\tt fig.tex} (when you use \verb+latex+), and
- second to produce a correct pathname for the
-\verb+special+ \LaTeX~ command  found in \verb+fig.tex+. (used at
-dvips level).
-
--WARNING : the default driver is {\tt Rec}, i.e. all the graphic commands are
-recorded, one record corresponding to one window. The {\tt xbasc()} command
-erases the plot on the active window and all the records corresponding to
-this window. The {\tt  clear} button has the same effect; the {\tt xclear}
-command erases the plot but the record is preserved. So you almost never need
-to use the {\tt xbasc()} or {\tt  clear} commands. If you use such a command 
-and if you re-do a plot you may have a surprising result (if you forget
-that the environment is wiped out); the scale only is preserved and so you 
-may have the ``window-plot'' and the ``paper-plot'' completely different.
-
-
-\subsection{Postscript by Using Xfig}
-
-Another useful way to get a Postscript file for a plot is to use Xfig.
-By the simple command {\tt xs2fig(active-window-number,file-name)} you get
-a file in Xfig syntax. 
-
-This command needs the use of the driver {\tt Rec}.
-
-The window ScilabGraphic0 being  active, if you enter :
-
+Assume that \scilab{y=phi(x,t)} is a vector with the same 
+dimension as \scilab{x}
+and depending on the parameter \scilab{t}. The animated graph of \scilab{y} 
+as a function of \scilab{t} (for a fixed \scilab{x} vector), is seen by
+the following code~:
 \begin{verbatim}
-
--->t=-%pi:0.3:%pi;
--->plot3d1(t,t,sin(t)'*cos(t),theta=35,alpha=45,flag=[2,2,4]);
--->xs2fig(0,'demo.fig');   
-
+f.pixmap='on';     //The data is sent into a pixmap
+plot2d(x,phi(x,theta(1)));   //First y for t=theta(1)
+w=gce();     //The current entity
+for t=theta
+ w.children.data(:,2)=phi(x,t)';  //update y
+ show_pixmap(); //display the pixmap content
+end
 \end{verbatim}
+The role of pixmap mode is to avoid image blinking. Any modification
+of a graphic property implies a complete display of the new graph
+(including axes, titles etc). In the pixmap mode the new image is
+built and displayed afterwards by the  \scifun{show\_pixmap()} command.
 
-you get the file {\tt demo.fig} which contains the plot 
-of window 0. 
-
-Then you can use Xfig and after the modifications you want, get a Postscript 
-file that you can insert in a \LaTeX~ file. The following figure is the result
-of Xfig after adding some comments.
-
-\begin{figure}
-%BEGIN IMAGE
-\fbox{\hspace*{0.cm} \begin{picture}(400.0,350.0)(100.0,200.0)
-\hspace{-0.8cm}
-\special{psfile=figures/demo.ps}
-\end{picture}}
-%END IMAGE
-%HEVEA\imageflush
-
-\caption{Encapsulated Postscript by Using Xfig}
-\label{xfig2ps}
-\end{figure}
-
-
-\subsection{Encapsulated Postscript Files}
-As it was said before, the use of {\tt Blatexpr} creates 2 files : a 
-{\tt .tex} file to be inserted in the \LaTeX~ file and a {\tt .epsf} file.
-
-It is possible to get the encapsulated Postscript file corresponding to a 
-{\tt .ps} file by using the command {\tt BEpsf}.
+Function \scifun{xpause} can be used to slow down the graphic display.
 
-Notice that the {\tt .epsf} file generated by {\tt Blatexpr} is not an 
-encapsulated Postscript file : it has no bounding box and {\tt BEpsf}
-generates a {\tt .eps} file which is an encapsulated Postscript file with 
-a bounding box.
+%\end{center}
index fb6ae9d..0fd05c7 100755 (executable)
@@ -1,25 +1,28 @@
-% Copyright INRIA
-
 \documentclass[11pt]{report}
 
-\usepackage{makeidx}
-             \textheight=660pt 
-             \textwidth=15cm
-             \topmargin=-27pt 
-             \oddsidemargin=0.7cm
-             \evensidemargin=0.7cm
-             \marginparwidth=60pt
+\usepackage{scilab}
 
+\usepackage{amsmath,amssymb,times,subfigure,epsfig,fancyheadings,verbatim,moreverb,makeidx}
+\usepackage{hyperref}
+\usepackage[T1]{fontenc}
 \def\Figdir{figures/}
 
 \makeindex
+            \textheight=21cm
+      %       \textwidth=15cm
+             \textwidth=15cm
+      %       \topmargin=-27pt 
+             \oddsidemargin=0.7cm
+             \evensidemargin=0.7cm
+       %      \marginparwidth=60pt
+
 
 \begin{document}
 
 \include{chap0}
 
 \pagenumbering{roman}
-\tableofcontents
+%\tableofcontents
 \pagestyle{headings}
 \pagenumbering{arabic}
 
@@ -35,8 +38,6 @@
 
 \include{chap6} %interfacing
 
-%\include{appendices}
-
 \listoffigures
 
 \printindex