~ubuntu-branches/ubuntu/hoary/scilab/hoary

« back to all changes in this revision

Viewing changes to routines/scicos/bouncexy.c

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2005-01-09 22:58:21 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050109225821-473xr8vhgugxxx5j
Tags: 3.0-12
changed configure.in to build scilab's own malloc.o, closes: #255869

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "scicos_block.h"
 
2
#include <math.h>
 
3
#include "../machine.h"
 
4
static int c__1 = 1;
 
5
static int c__0 = 0;
 
6
static int c_n1 = -1;
 
7
static int c__3 = 3;
 
8
static integer c__5 = 5;
 
9
static integer c__6 = 6;
 
10
 
 
11
void bouncexy(scicos_block *block,int flag)
 
12
{
 
13
  int nevprt=block->nevprt;
 
14
  double t;
 
15
  double *z__;
 
16
  int nz;
 
17
  double *rpar;
 
18
  int nrpar, *ipar, nipar;
 
19
  double *u,*y;
 
20
  int nu,kfun;
 
21
 
 
22
 
 
23
  static int cur = 0;
 
24
  static int verb = 0;
 
25
  static int c400=400;
 
26
  int i__1;
 
27
  
 
28
  static double rect[4];
 
29
  extern /* Subroutine */ int C2F(getlabel)();
 
30
  static double xmin, ymin, xmax, ymax;
 
31
  extern /* Subroutine */ int C2F(sxevents)();
 
32
  static int i__, n, v;
 
33
  extern /* Subroutine */ int C2F(plot2d)();
 
34
  static int na;
 
35
  extern /* Subroutine */ int C2F(dr)();
 
36
  static double dv;
 
37
  static int on;
 
38
  static double zz[10];
 
39
  static int nxname;
 
40
  extern /* Subroutine */ int C2F(sciwin)(), C2F(dr1)();
 
41
  static char buf[40];
 
42
  static int wid, nax[4];
 
43
  
 
44
  /*     Copyright INRIA */
 
45
  /*     Scicos block simulator */
 
46
  /*     ipar(1) = win_num */
 
47
  /*     ipar(2) = mode : animated =0 fixed=1 */
 
48
  /*     ipar(3:3+nu-1) = colors of balls */
 
49
  
 
50
  /*     rpar(1)=xmin */
 
51
  /*     rpar(2)=xmax */
 
52
  /*     rpar(3)=ymin */
 
53
  /*     rpar(4)=ymax */
 
54
  nevprt=block->nevprt;
 
55
  nz=block->nz;
 
56
  nrpar=block->nrpar; 
 
57
  nipar=block->nipar;
 
58
  nu=block->insz[0];
 
59
  z__=block->z;
 
60
  rpar=block->rpar;
 
61
  ipar=block->ipar;
 
62
  u=block->inptr[0];
 
63
  y=block->inptr[1];
 
64
  t=get_scicos_time();
 
65
 
 
66
  
 
67
  /* Parameter adjustments */
 
68
  --u;
 
69
  --y;
 
70
  --ipar;
 
71
  --rpar;
 
72
  --z__;
 
73
  
 
74
  /* Function Body */
 
75
  
 
76
  if (flag == 2) {
 
77
    wid = ipar[1];
 
78
    n = nu;
 
79
    
 
80
    C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv,
 
81
             &dv, &dv);
 
82
    if (cur != wid) {
 
83
      C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
 
84
               &dv, &dv);
 
85
    }
 
86
    C2F(dr1)("xsetdr\000", "X11\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
87
             dv);
 
88
    rect[0] = xmin;
 
89
    rect[1] = ymin;
 
90
    rect[2] = xmax;
 
91
    rect[3] = ymax;
 
92
    C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "030", buf, rect, nax);
 
93
    /*     draw new point */
 
94
    i__1 = nu;
 
95
    for (i__ = 1; i__ <= i__1; ++i__) {
 
96
      z__[(i__ - 1) * 6 + 1] = u[i__] - z__[(i__ - 1) * 6 + 3] / 2;
 
97
      z__[(i__ - 1) * 6 + 2] = y[i__] + z__[(i__ - 1) * 6 + 4] / 2;
 
98
    }
 
99
    C2F(dr1)("xset\000", "wwpc\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
100
             dv);
 
101
    C2F(dr1)("xfarcs\000", "v\000", &v, &ipar[3], &n, &v, &v, &v, &z__[1], &
 
102
             dv, &dv, &dv);
 
103
    xmin = rpar[1];
 
104
    xmax = rpar[2];
 
105
    ymin = rpar[3];
 
106
    ymax = rpar[4];
 
107
    zz[0] = xmin;
 
108
    zz[1] = xmin;
 
109
    zz[2] = xmax;
 
110
    zz[3] = xmax;
 
111
    zz[4] = xmin;
 
112
    zz[5] = ymax;
 
113
    zz[6] = ymin;
 
114
    zz[7] = ymin;
 
115
    zz[8] = ymax;
 
116
    zz[9] = ymax;
 
117
    C2F(dr1)("xpolys\000", "v\000", &v, &v, &c__1, &c__1, &c__5, &v, zz, &zz[5], &dv, &dv);
 
118
    C2F(dr1)("xset\000", "wshow\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
119
             dv);
 
120
  } else if (flag == 4) {
 
121
    wid = ipar[1];
 
122
    n = nu;
 
123
    xmin = rpar[1];
 
124
    xmax = rpar[2];
 
125
    ymin = rpar[3];
 
126
    ymax = rpar[4];
 
127
    nax[0] = 2;
 
128
    nax[1] = 10;
 
129
    nax[2] = 2;
 
130
    nax[3] = 10;
 
131
    C2F(sciwin)();
 
132
 
 
133
    C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
 
134
               &dv, &dv);
 
135
    
 
136
    C2F(dr1)("xset\000", "wdim\000", &c400, &c400, &v, &v, &
 
137
               v, &v, &dv, &dv, &dv, &dv);
 
138
  C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
 
139
               &dv, &dv);
 
140
 
 
141
    C2F(dr1)("xsetdr\000", "X11\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
142
             dv);
 
143
    on = 1;
 
144
    C2F(dr1)("xset\000", "pixmap\000", &on, &v, &v, &v, &v, &v, &dv, &dv, &dv,
 
145
             &dv);
 
146
    rect[0] = xmin;
 
147
    rect[1] = ymin;
 
148
    rect[2] = xmax;
 
149
    rect[3] = ymax;
 
150
    C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &c__0, &
 
151
             v, &dv, &dv, &dv, &dv);
 
152
    C2F(dr1)("xset\000", "alufunction\000", &c__3, &c__0, &c__0, &c__0, &c__0,
 
153
             &v, &dv, &dv, &dv, &dv);
 
154
    C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
155
             dv);
 
156
    C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
157
            dv);
 
158
    C2F(dr1)("xset\000", "thickness\000", &c__1, &v, &v, &v, &v, &v, &dv, &dv,
 
159
             &dv, &dv);
 
160
    C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, &v, 
 
161
             &dv, &dv, &dv, &dv);
 
162
    C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "030", buf, rect, nax);
 
163
 
 
164
    zz[0] = xmin;
 
165
    zz[1] = xmin;
 
166
    zz[2] = xmax;
 
167
    zz[3] = xmax;
 
168
    zz[4] = xmin;
 
169
    zz[5] = ymax;
 
170
    zz[6] = ymin;
 
171
    zz[7] = ymin;
 
172
    zz[8] = ymax;
 
173
    zz[9] = ymax;
 
174
    C2F(dr1)("xpolys\000", "v\000", &v, &v, &c__1, &c__1, &c__5, &v, zz, &zz[5], &dv, &dv);
 
175
    C2F(dr1)("xset\000", "wshow\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
176
             dv);
 
177
    nxname = 40;
 
178
    kfun=get_block_number();
 
179
    C2F(getlabel)(&kfun, buf, &nxname);
 
180
    if (nxname > 39) {
 
181
      nxname = 39;
 
182
    }
 
183
    i__1 = nxname;
 
184
    *(buf+i__1)=*"\000";
 
185
    if (nxname == 1 && *(unsigned char *)buf == ' ' || nxname == 0) {
 
186
    } else {
 
187
      C2F(dr)("xname\000", buf, &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &dv);
 
188
    }
 
189
    C2F(sxevents)();
 
190
  }
 
191
  C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
 
192
             dv);
 
193