bouncexy.c

Go to the documentation of this file.
00001 #include "scicos_block.h"
00002 #include <math.h>
00003 #include "machine.h"
00004 static int c__1 = 1;
00005 static int c__0 = 0;
00006 static int c_n1 = -1;
00007 static int c__3 = 3;
00008 static integer c__5 = 5;
00009 static integer c__6 = 6;
00010 
00011 void bouncexy(scicos_block *block,int flag)
00012 {
00013   int nevprt=block->nevprt;
00014   double t;
00015   double *z__;
00016   int nz;
00017   double *rpar;
00018   int nrpar, *ipar, nipar;
00019   double *u,*y;
00020   int nu,kfun;
00021 
00022  
00023   static int cur = 0;
00024   static int verb = 0;
00025   static int c400=400;
00026   int i__1;
00027   
00028   static double rect[4];
00029   extern /* Subroutine */ int C2F(getlabel)();
00030   static double xmin, ymin, xmax, ymax;
00031   extern /* Subroutine */ int C2F(sxevents)();
00032   static int i__, n, v;
00033   extern /* Subroutine */ int C2F(plot2d)();
00034   static int na;
00035   extern /* Subroutine */ int C2F(dr)();
00036   static double dv;
00037   static int on;
00038   static double zz[10];
00039   static int nxname;
00040   extern /* Subroutine */ int C2F(sciwin)(), C2F(dr1)();
00041   static char buf[40];
00042   static int wid, nax[4];
00043   
00044   /*     Copyright INRIA */
00045   /*     Scicos block simulator */
00046   /*     ipar(1) = win_num */
00047   /*     ipar(2) = mode : animated =0 fixed=1 */
00048   /*     ipar(3:3+nu-1) = colors of balls */
00049   
00050   /*     rpar(1)=xmin */
00051   /*     rpar(2)=xmax */
00052   /*     rpar(3)=ymin */
00053   /*     rpar(4)=ymax */
00054   nevprt=block->nevprt;
00055   nz=block->nz;
00056   nrpar=block->nrpar; 
00057   nipar=block->nipar;
00058   nu=block->insz[0];
00059   z__=block->z;
00060   rpar=block->rpar;
00061   ipar=block->ipar;
00062   u=block->inptr[0];
00063   y=block->inptr[1];
00064   t=get_scicos_time();
00065 
00066   
00067   /* Parameter adjustments */
00068   --u;
00069   --y;
00070   --ipar;
00071   --rpar;
00072   --z__;
00073   
00074   /* Function Body */
00075   
00076   if (flag == 2) {
00077     wid = ipar[1];
00078     n = nu;
00079     
00080     C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv,
00081              &dv, &dv);
00082     if (cur != wid) {
00083       C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
00084                &dv, &dv);
00085     }
00086     C2F(dr1)("xsetdr\000", "X11\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00087              dv);
00088     rect[0] = xmin;
00089     rect[1] = ymin;
00090     rect[2] = xmax;
00091     rect[3] = ymax;
00092     C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "030", buf, rect, nax);
00093     /*     draw new point */
00094     i__1 = nu;
00095     for (i__ = 1; i__ <= i__1; ++i__) {
00096       z__[(i__ - 1) * 6 + 1] = u[i__] - z__[(i__ - 1) * 6 + 3] / 2;
00097       z__[(i__ - 1) * 6 + 2] = y[i__] + z__[(i__ - 1) * 6 + 4] / 2;
00098     }
00099     C2F(dr1)("xset\000", "wwpc\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00100              dv);
00101     C2F(dr1)("xfarcs\000", "v\000", &v, &ipar[3], &n, &v, &v, &v, &z__[1], &
00102              dv, &dv, &dv);
00103     xmin = rpar[1];
00104     xmax = rpar[2];
00105     ymin = rpar[3];
00106     ymax = rpar[4];
00107     zz[0] = xmin;
00108     zz[1] = xmin;
00109     zz[2] = xmax;
00110     zz[3] = xmax;
00111     zz[4] = xmin;
00112     zz[5] = ymax;
00113     zz[6] = ymin;
00114     zz[7] = ymin;
00115     zz[8] = ymax;
00116     zz[9] = ymax;
00117     C2F(dr1)("xpolys\000", "v\000", &v, &v, &c__1, &c__1, &c__5, &v, zz, &zz[5], &dv, &dv);
00118     C2F(dr1)("xset\000", "wshow\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00119              dv);
00120   } else if (flag == 4) {
00121     wid = ipar[1];
00122     n = nu;
00123     xmin = rpar[1];
00124     xmax = rpar[2];
00125     ymin = rpar[3];
00126     ymax = rpar[4];
00127     nax[0] = 2;
00128     nax[1] = 10;
00129     nax[2] = 2;
00130     nax[3] = 10;
00131     C2F(sciwin)();
00132 
00133     C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
00134                &dv, &dv);
00135     
00136     C2F(dr1)("xset\000", "wdim\000", &c400, &c400, &v, &v, &
00137                v, &v, &dv, &dv, &dv, &dv);
00138   C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
00139                &dv, &dv);
00140 
00141     C2F(dr1)("xsetdr\000", "X11\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00142              dv);
00143     on = 1;
00144     C2F(dr1)("xset\000", "pixmap\000", &on, &v, &v, &v, &v, &v, &dv, &dv, &dv,
00145              &dv);
00146     rect[0] = xmin;
00147     rect[1] = ymin;
00148     rect[2] = xmax;
00149     rect[3] = ymax;
00150     C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &c__0, &
00151              v, &dv, &dv, &dv, &dv);
00152     C2F(dr1)("xset\000", "alufunction\000", &c__3, &c__0, &c__0, &c__0, &c__0,
00153              &v, &dv, &dv, &dv, &dv);
00154     C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00155              dv);
00156     C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00157             dv);
00158     C2F(dr1)("xset\000", "thickness\000", &c__1, &v, &v, &v, &v, &v, &dv, &dv,
00159              &dv, &dv);
00160     C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, &v, 
00161              &dv, &dv, &dv, &dv);
00162     C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "030", buf, rect, nax);
00163 
00164     zz[0] = xmin;
00165     zz[1] = xmin;
00166     zz[2] = xmax;
00167     zz[3] = xmax;
00168     zz[4] = xmin;
00169     zz[5] = ymax;
00170     zz[6] = ymin;
00171     zz[7] = ymin;
00172     zz[8] = ymax;
00173     zz[9] = ymax;
00174     C2F(dr1)("xpolys\000", "v\000", &v, &v, &c__1, &c__1, &c__5, &v, zz, &zz[5], &dv, &dv);
00175     C2F(dr1)("xset\000", "wshow\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00176              dv);
00177     nxname = 40;
00178     kfun=get_block_number();
00179     C2F(getlabel)(&kfun, buf, &nxname);
00180     if (nxname > 39) {
00181       nxname = 39;
00182     }
00183     i__1 = nxname;
00184     *(buf+i__1)=*"\000";
00185     if (nxname == 1 && *(unsigned char *)buf == ' ' || nxname == 0) {
00186     } else {
00187       C2F(dr)("xname\000", buf, &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &dv);
00188     }
00189     C2F(sxevents)();
00190   }
00191   C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
00192              dv);
00193 } 

Generated on Sun Mar 4 15:03:59 2007 for Scilab [trunk] by  doxygen 1.5.1