bug 7566 fix: The cacsd module graphic functions (bode, black, nyquist,...)
[scilab.git] / scilab / modules / cacsd / macros / m_circle.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 function []=m_circle(gain)
10 //this function is obsolete, superseeded by hallchart.
11   [lhr,rhs]=argn(0)
12   //
13   d36=11;
14   if rhs<1 then
15     gain=[-12 -8 -6 -5 -4 -3 -2 -1.4 -1 -.5 0.25 0.5 0.7 1 1.4 ..
16           2 2.3 3 4 5 6 8 12]
17   else
18     gain=matrix(gain,1,prod(size(gain)))
19   end
20   //
21   titre='isogain contours for y/(1+y)'
22   l10=log(10);
23   //
24   lambda=exp(l10*gain/20)
25   rayon=lambda./(lambda.*lambda-ones(lambda))
26   centre=-lambda.*rayon
27   rayon=abs(rayon)
28   rect=[min(centre-rayon),min(-rayon),max(centre+rayon),max(rayon)];
29   //
30   fig=gcf();
31   immediate_drawing=fig.immediate_drawing;
32   fig.immediate_drawing="off";
33
34   ax=gca();
35   llrect=xstringl(0,0,'1')
36   hx=llrect(3);
37   //
38   for i=1:prod(size(gain))
39     sgn=1;if 2*int(i/2)==i then sgn=-1,end
40     g=string(gain(i)),ng=length(g)
41     if gain(i)<0 then
42       w=0:0.03:%pi;
43       xx=centre(i)+rayon(i)*sin(%pi/3)+hx
44       xy=sgn*cos(%pi/3)*rayon(i)
45     else
46       xx=centre(i)-sin(%pi/3)*rayon(i)-hx*ng
47       xy=sgn*cos(-%pi/3)*rayon(i)
48       w=-%pi:0.03:0;
49     end;
50     n=prod(size(w))
51     rf=centre(i)*ones(w)+rayon(i)*exp(%i*w);
52     xpoly([real(rf) real(rf($:-1:1))],[imag(rf)  -imag(rf($:-1:1))])
53     e=gce();e.foreground=3;e.clip_state='clipgrf'
54   end;
55   fig.immediate_drawing=immediate_drawing;
56
57 endfunction