bug 7566 fix: The cacsd module graphic functions (bode, black, nyquist,...)
[scilab.git] / scilab / modules / cacsd / macros / sgrid.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // This file must be used under the terms of the CeCILL.
4 // This source file is licensed as described in the file COPYING, which
5 // you should have received as part of this distribution.  The terms
6 // are also available at    
7 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
8
9
10
11 function [] = sgrid(zeta,wn,col)
12
13 // sgrid()
14 // sgrid(Z,Wn)
15 // sgrid('new') 
16   [lhs,rhs]=argn(0)
17   fig=gcf();
18   immediate_drawing=fig.immediate_drawing;
19   fig.immediate_drawing="off";
20   
21   axes=gca();
22   select rhs
23   case 0 then 
24     wn= 0:1:10;
25     zeta = linspace(0,1,10);
26     col=3;
27   case 1 then
28     if type(zeta)<>10 then
29       error(msprintf(_("%s: Wrong type for input argument #%d: String array expected.\n"),"sgrid",1))
30     end
31     if size(zeta,'*')<>1 then
32       error(msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),"sgrid",1))
33     end
34     wn = 0:1:10;
35     zeta = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
36     col=3;
37     clf()
38     axes.data_bounds=[-20,-20;20,20];axes.axes_visible='on';
39   case 2 then
40     col=3;
41   end 
42   wmax = 10 .^(floor(log10(max(abs(axes.data_bounds)))));
43   // building a grid 
44   zx = 0:.01:1;
45   [rx,cx]=size(wn);[ry,cy]=size(zx);
46   w=wn.*.ones(cy,1);z=zx'.*.ones(1,cx);
47
48   // plot : part I 
49   re = - w .* z;
50   [zr,zc] = size(z);
51   im = w .* sqrt( 1 - z .* z );
52   plot2d(re,im,style=col*ones(1,zc));
53   plot2d(re,-im,style=col*ones(1,zc));
54   
55   // info on curves 
56
57   [rer,rec] = size(re)
58
59   axes.clip_state = "clipgrf";
60   xnumb(re(1,:),im(1,:),wn);
61   axes.clip_state = "off";
62
63   // building an other grid 
64
65   wn = [0,wn,2*wmax];
66   [rx,cx]=size(wn);[ry,cy]=size(zeta);
67   w=wn.*.ones(cy,1);z=zeta'.*.ones(1,cx);
68
69   // plot part II  
70
71   [zr,zc] = size(z);
72   re = -w .* z;
73   im = w .* sqrt( 1 - z .* z );
74   plot2d(re',im',style=col*ones(1,zr));
75   plot2d(re',-im',style=col*ones(1,zr));
76
77   // info on each curve ( straight lines )
78   [rer,rec] = size(re)
79   axes.clip_state = "clipgrf";
80   xnumb(re(:,$)',im(:,$)',zeta);
81   axes.clip_state = "off";
82    fig.immediate_drawing=immediate_drawing;
83 endfunction