Graphics macros & demos: replace gcf with scf
[scilab.git] / scilab / modules / graphics / macros / Sgrayplot.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // Copyright (C) Bruno Pincon
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10
11 function []=Sgrayplot(x,y,z, strf, rect, nax, zminmax, colminmax, mesh, colout)
12     //
13     // PURPOSE
14     //    Like grayplot but the function fec is used to smooth the
15     //    result assuming that the underlying function is linear on
16     //    a set of triangles built from the grid (here with n1=5, n2=3):
17     //             _____________
18     //             | /| /| /| /|
19     //             |/_|/_|/_|/_|
20     //             | /| /| /| /|
21     //             |/_|/_|/_|/_|
22     //
23     // Copyright INRIA
24     // Modified by Bruno Pincon (14 oct 04) to have named argument working
25     // Some new modifs (Bruno Pincon, Feb 2005, demo + some checking + cleaning + add
26     // mesh and colout optional args)
27
28     [lhs,rhs] = argn();
29
30     if rhs == 0 then   // demo
31
32         t=-%pi:0.1:%pi;
33         m=sin(t)'*cos(t)
34         f=scf();
35         f.color_map = jetcolormap(64);
36         f.immediate_drawing = "off";
37         colorbar(-1,1);
38         Sgrayplot(t,t,m,strf="041",zminmax=[-1,1]);
39         xtitle("Sgrayplot demo f(x,y)=sin(x)*cos(y) on [-pi,pi]x[-pi,pi]");
40         f.immediate_drawing = "on";
41         return
42
43     elseif rhs < 3 then
44         error(msprintf(gettext("%s: Wrong number of input arguments: At least %d expected.\n"),"Sgrayplot",3));
45     end
46
47     // some checks
48     if ~(type(x)==1 & isreal(x) & type(y)==1 & isreal(y) & type(z)==1 & isreal(z)) then
49         error(msprintf(gettext("%s: Wrong type for input argument(s): Arguments #%d, #%d and #%d must be real.\n"), "Sgrayplot",1,2,3));
50     end
51     nx = length(x); ny = length(y); [p,q] = size(z)
52     if p ~= nx then
53         error(msprintf(gettext("%s: Wrong size for input arguments #%d and #%d: The number of rows of argument #%d must be equal to the size of argument #%d.\n"),"Sgrayplot", 1, 3, 3, 1));
54     elseif q~=ny then
55         error(msprintf(gettext("%s: Wrong size for input arguments #%d and #%d: The number of columns of argument #%d must be equal to the size of argument #%d.\n"),"Sgrayplot", 2, 3, 3, 2));
56     end
57
58     // parsing the optional args
59     opt_arg_list = ["strf", "rect","nax","zminmax", "colminmax", "mesh", "colout"]
60     opt_arg_seq = []
61     for opt_arg = opt_arg_list
62         if exists(opt_arg,"local") then
63             opt_arg_seq = opt_arg_seq +","+ opt_arg + "=" + opt_arg
64         end
65     end
66
67     // build the data for fec
68     [noe_x,noe_y] = ndgrid(x,y)
69     nbtri = 2*(p-1)*(q-1)
70     num = (1:p*(q-1))'; num(p*(1:q-1)) = []; num1 = num+1
71     connect =[(1:nbtri)' , [num   num1   num+p;...
72     num1  num1+p num+p]  ,  zeros(nbtri,1)]
73
74     // then plot
75     if opt_arg_seq == [] then
76         fec(noe_x,noe_y,connect,z)
77     else
78         execstr("fec(noe_x,noe_y,connect,z"+opt_arg_seq+")")
79     end
80 endfunction