Lines Matching defs:sp

58 #define X(t,b)	(sp->x[(t)*sp->beecount+(b)])
59 #define Y(t,b) (sp->y[(t)*sp->beecount+(b)])
90 swarmstruct *sp = &swarms[screen];
93 sp->startTime = seconds();
94 sp->beecount = batchcount;
97 sp->width = xgwa.width;
98 sp->height = xgwa.height;
102 XFillRectangle(dsp, win, Scr[screen].gc, 0, 0, sp->width, sp->height);
106 if (!sp->segs) {
107 sp->segs = (XSegment *) malloc(sizeof(XSegment) * sp->beecount);
108 sp->old_segs = (XSegment *) malloc(sizeof(XSegment) * sp->beecount);
109 sp->x = (short *) malloc(sizeof(short) * sp->beecount * TIMES);
110 sp->y = (short *) malloc(sizeof(short) * sp->beecount * TIMES);
111 sp->xv = (short *) malloc(sizeof(short) * sp->beecount);
112 sp->yv = (short *) malloc(sizeof(short) * sp->beecount);
117 sp->wx[0] = BORDER + random() % (sp->width - 2 * BORDER);
118 sp->wy[0] = BORDER + random() % (sp->height - 2 * BORDER);
119 sp->wx[1] = sp->wx[0];
120 sp->wy[1] = sp->wy[0];
121 sp->wxv = 0;
122 sp->wyv = 0;
125 for (b = 0; b < sp->beecount; b++) {
126 X(0, b) = random() % sp->width;
128 Y(0, b) = random() % sp->height;
130 sp->xv[b] = RAND(7);
131 sp->yv[b] = RAND(7);
141 swarmstruct *sp = &swarms[screen];
146 sp->wx[2] = sp->wx[1];
147 sp->wx[1] = sp->wx[0];
148 sp->wy[2] = sp->wy[1];
149 sp->wy[1] = sp->wy[0];
151 sp->wxv += RAND(WASPACC);
152 sp->wyv += RAND(WASPACC);
155 if (sp->wxv > WASPVEL)
156 sp->wxv = WASPVEL;
157 if (sp->wxv < -WASPVEL)
158 sp->wxv = -WASPVEL;
159 if (sp->wyv > WASPVEL)
160 sp->wyv = WASPVEL;
161 if (sp->wyv < -WASPVEL)
162 sp->wyv = -WASPVEL;
165 sp->wx[0] = sp->wx[1] + sp->wxv;
166 sp->wy[0] = sp->wy[1] + sp->wyv;
169 if ((sp->wx[0] < BORDER) || (sp->wx[0] > sp->width - BORDER - 1)) {
170 sp->wxv = -sp->wxv;
171 sp->wx[0] += sp->wxv;
173 if ((sp->wy[0] < BORDER) || (sp->wy[0] > sp->height - BORDER - 1)) {
174 sp->wyv = -sp->wyv;
175 sp->wy[0] += sp->wyv;
178 sp->xv[random() % sp->beecount] += RAND(3);
179 sp->yv[random() % sp->beecount] += RAND(3);
182 for (b = 0; b < sp->beecount; b++) {
193 dx = sp->wx[1] - X(1, b);
194 dy = sp->wy[1] - Y(1, b);
198 sp->xv[b] += (dx * BEEACC) / distance;
199 sp->yv[b] += (dy * BEEACC) / distance;
202 if (sp->xv[b] > BEEVEL)
203 sp->xv[b] = BEEVEL;
204 if (sp->xv[b] < -BEEVEL)
205 sp->xv[b] = -BEEVEL;
206 if (sp->yv[b] > BEEVEL)
207 sp->yv[b] = BEEVEL;
208 if (sp->yv[b] < -BEEVEL)
209 sp->yv[b] = -BEEVEL;
212 X(0, b) = X(1, b) + sp->xv[b];
213 Y(0, b) = Y(1, b) + sp->yv[b];
216 sp->segs[b].x1 = X(0, b);
217 sp->segs[b].y1 = Y(0, b);
218 sp->segs[b].x2 = X(1, b);
219 sp->segs[b].y2 = Y(1, b);
220 sp->old_segs[b].x1 = X(1, b);
221 sp->old_segs[b].y1 = Y(1, b);
222 sp->old_segs[b].x2 = X(2, b);
223 sp->old_segs[b].y2 = Y(2, b);
228 sp->wx[1], sp->wy[1], sp->wx[2], sp->wy[2]);
229 XDrawSegments(dsp, win, Scr[screen].gc, sp->old_segs, sp->beecount);
233 sp->wx[0], sp->wy[0], sp->wx[1], sp->wy[1]);
235 XSetForeground(dsp, Scr[screen].gc, Scr[screen].pixels[sp->pix]);
236 if (++sp->pix >= Scr[screen].npixels)
237 sp->pix = 0;
239 XDrawSegments(dsp, win, Scr[screen].gc, sp->segs, sp->beecount);