Shell demo: remove drawlater and drawnow
[scilab.git] / scilab / modules / graphics / demos / anim / anim7 / anim7.sce
1 //\r
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
3 // Copyright (C) INRIA\r
4 // Copyright (C) DIGITEO - 2010 - Allan CORNET\r
5 //\r
6 // This file is distributed under the same license as the Scilab package.\r
7 //\r
8 \r
9 // =============================================================================\r
10 // Demonstrate animation based on the dynamic of a chain\r
11 // =============================================================================\r
12 \r
13 function demo_anim7()\r
14 \r
15   // compute color of a set of facets, relative to the distance to the origin\r
16   function [colors] = computeFacetsColor(xx, yy, zz, colormapSize)\r
17     nbFacets = size(xx);\r
18     colors = zeros(nbFacets(1), nbFacets(2));\r
19     for i=1:nbFacets(1)\r
20       for j=1:nbFacets(2)\r
21         colors(i,j) = norm([xx(i,j), yy(i,j), zz(i,j)]) * colormapSize / 15;\r
22       end\r
23     end\r
24 \r
25   endfunction\r
26 \r
27   curFig             = scf(100001);\r
28   clf(curFig,"reset");\r
29   demo_viewCode("anim7.sce");\r
30 \r
31   show_window(); //raise the graphic window\r
32 \r
33 \r
34   //Create the data\r
35   //---------------\r
36   colormapSize = 128;\r
37   n=60;\r
38   U = linspace(0,3*%pi,n);\r
39   v = linspace(0,2*%pi,20);\r
40 \r
41   u = U(1:20);\r
42   X = (cos(u).*u)'*(1+cos(v)/2);\r
43   Y = (u/2)'*sin(v);\r
44   Z = (sin(u).*u)'*(1+cos(v)/2);\r
45 \r
46   curFig.color_map = coppercolormap(colormapSize);\r
47   \r
48   [xx,yy,zz]=nf3d(X,Y,Z);//build facets\r
49 \r
50 \r
51   // generate colors\r
52   // colors depending on z, between 1 and colormap size\r
53   facetsColors = computeFacetsColor(xx, yy, zz, colormapSize);\r
54 \r
55 \r
56   //Creates and set graphical entities which represent the surface\r
57   //--------------------------------------------------------------\r
58 \r
59   plot3d(xx,yy,list(zz,facetsColors)) //creates a Fac3d entity\r
60   e = gce();\r
61   data=e.data;\r
62   title("shell","fontsize",3)\r
63 \r
64   curAxe=gca();\r
65   // set 3D boundaries\r
66   curAxe.data_bounds=[-15 -5 -10; 10  5  12];\r
67   //set view angles\r
68   curAxe.rotation_angles=[103 138];\r
69   curAxe.isoView = "on";\r
70 \r
71 \r
72   //animation loop\r
73   //--------------\r
74   //use realtime to slow down the loop\r
75   K=20:4:n;\r
76   realtimeinit(0.1);//set time step (0.1 seconds)  and date reference\r
77   for k=2:size(K,'*')\r
78     \r
79     if ~is_handle_valid(curFig) then\r
80       break;\r
81     end\r
82 \r
83     realtime(k);\r
84 \r
85     //compute more facets\r
86     u=U(K(k-1):K(k));\r
87     X= (cos(u).*u)'*(1+cos(v)/2);\r
88     Y= (u/2)'*sin(v);\r
89     Z= (sin(u).*u)'*(1+cos(v)/2);\r
90     [xx,yy,zz] = nf3d(X,Y,Z);//build facets\r
91 \r
92     //append new facets to the data data structure\r
93     data.x=[data.x xx];\r
94     data.y=[data.y yy];\r
95     data.z=[data.z zz];\r
96     data.color = [data.color, computeFacetsColor(xx, yy, zz, colormapSize)];\r
97 \r
98     if is_handle_valid(e) then\r
99       e.data = data;// update the Fac3d entity\r
100     end\r
101 \r
102   end\r
103 \r
104   if is_handle_valid(curFig) then\r
105     delete(curFig);\r
106   end\r
107 \r
108 endfunction\r
109 \r
110 \r
111 demo_anim7();\r
112 clear demo_anim7;\r\r