Fix test win64b: test_run('graphics', 'contour2d')
[scilab.git] / scilab / modules / graphics / tests / nonreg_tests / bug_2935.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2008-2008 - INRIA - Jean-Baptiste Silvy
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- TEST WITH GRAPHIC -->
8 // <-- Non-regression test for bug 2935 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/show_bug.cgi?id=2935
12 //
13 // <-- Short Description -->
14 // In the "Bezier surface test 2" demo, an axis is displayed, it should not.
15 function [z]=dup(x,n)
16     // utility 
17     // x is a vector this function returns [x,x,x,x...] or [x;x;x;x;..]
18     // depending on x
19     [nr,nc]=size(x)
20     if nr==1 then
21         y=ones(n,1);
22         z= x.*.y ; 
23     else
24         if nc<>1 then
25             error("dup : x must be a vector");
26         else
27             y=ones(1,n);
28             z= x.*.y ;
29         end
30     end
31 endfunction
32 function [X,Y,Z]=beziersurface (x,y,z,n)
33     // Compute a Bezier surface. Return {bx,by,bz}.
34     [lhs,rhs]=argn(0);
35     if rhs <= 3 ; n=20;end
36     t=linspace(0,1,n);
37     n=size(x,'r')-1; // i=nonzeros(t~=1);
38     t1=(1-t); t1z= find(t1==0.0); t1(t1z)= ones(t1z);
39     T=dup(t./t1,n)';
40     b1=[((1-t').^n),(T.*dup((n-(1:n)+1)./(1:n),size(t,'c')))];
41     b1=cumprod(b1,'c');
42     if (size(t1z,'c')>0); 
43         b1(t1z,:)= dup([ 0*ones(1,n),1],size(t1z,'c'));
44     end
45     n=size(x,'c')-1; // i=nonzeros(t~=1);
46     t1=(1-t); t1z= find(t1==0.0); t1(t1z)= ones(t1z);
47     T=dup(t./t1,n)';
48     b2=[((1-t').^n),(T.*dup((n-(1:n)+1)./(1:n),size(t,'c')))];
49     b2=cumprod(b2,'c');
50     if (size(t1z,'c')>0); 
51         b2(t1z,:)= dup([ 0*ones(1,n),1],size(t1z,'c'));
52     end
53     X=b1*x*b2';Y=b1*y*b2';Z=b1*z*b2';
54 endfunction
55 function c1test
56     // first surface'
57     x1=dup(-0.5:0.25:0.5,5);
58     y1=dup([0,0,0,0,1],5);
59     z1=dup(2:0.25:3,5)';
60     [xb1,yb1,zb1]=beziersurface(x1,y1,z1,10);
61     // second surface
62     x2=dup(-0.5:0.25:0.5,5);
63     y2=[(ones(4,5));[0,0,0,0,0]];
64     z2=-dup(-1:0.25:0,5)';
65     [xb2,yb2,zb2]=beziersurface(x2,y2,z2,10);
66     // a surface to link the two previous ones'
67     x=zeros(5,5); y=x; z=x;
68     x(1,:)=x1(1,:); x(2,:)=x(1,:)-(x1(2,:)-x1(1,:));
69     x(5,:)=x2(1,:); x(4,:)=x(5,:)-(x2(2,:)-x2(1,:));
70     x(3,:)=(x(4,:)+x(2,:))/2;
71     y(1,:)=y1(1,:); y(2,:)=y(1,:)-(y1(2,:)-y1(1,:));
72     y(5,:)=y2(1,:); y(4,:)=y(5,:)-(y2(2,:)-y2(1,:));
73     y(3,:)=(y(4,:)+y(2,:))/2;
74     z(1,:)=z1(1,:); z(2,:)=z(1,:)-(z1(2,:)-z1(1,:));
75     z(5,:)=z2(1,:); z(4,:)=z(5,:)-(z2(2,:)-z2(1,:));
76     z(3,:)=(z(4,:)+z(2,:))/2;
77     A=35,T=50,L=" ",EB=[4,2,0];
78     [xb,yb,zb]=beziersurface(x,y,z,10);
79     //drawing
80     my_handle = scf(100001);
81     clf(my_handle,"reset");
82     my_current_axis = gca();
83     drawlater();
84     subplot(2,1,1);
85     title("how two bezier surfaces can be joined","fontsize",3);
86     subplot(2,2,1);
87     plot3d2(xb1,yb1,zb1,-1,A,T,L,EB);
88     subplot(2,2,3);
89     plot3d2(xb2,yb2,zb2,-1,A,T,L,EB);
90     subplot(1,2,2);
91     [n1,p1]=size(xb1);
92     [n2,p2]=size(xb);
93     plot3d2([xb1;xb;xb2],[yb1;yb;yb2],[zb1;zb;zb2],-1,A,T,L,EB);
94     delete(my_current_axis);
95     drawnow();
96 endfunction
97 c1test();
98 // there should be 3 subplots and not 4
99 fig = gcf();
100 if (size(fig.children) <> [3,1]) then bugmes();quit;end
101 clear c1test;
102 clear beziersurface;
103 clear dup;