15 void quadcalc(QB, Body*, double){}
16 Image *randcol(void){ return nil; }
21 fprint(2, "Usage: %s [-d dist[±r]]\n\t[-s size[±r]] [-v vel[±r]]\n\t[-av angvel[±r]] [-gv xdir,ydir]\n\t[-o xoff,yoff] [-f file]\n\t[-sq] [-i] size\n", argv0);
26 polar(double ang, double mag)
40 v.x = strtod(str, &str);
43 v.y = strtod(str+1, nil);
48 getvals(char *str, double *rand)
54 val = strtod(str, &str);
55 i = chartorune(&r, str);
57 *rand = strtod(str+i, nil);
63 #define RAND(r) ((r)*(frand()*2 - 1))
72 for(x = -lim/2; x < lim/2; x += d)
73 for(y = -lim/2; y < lim/2; y += d) {
74 p.x = x + RAND(drand);
75 p.y = y + RAND(drand);
77 if(hypot(p.x, p.y) > lim/2)
81 b->v = polar(frand()*π2, v+RAND(vrand));
82 b->v.x += gv.x - p.y*(av + RAND(avrand))/1000;
83 b->v.y += gv.y + p.x*(av + RAND(avrand))/1000;
84 b->size = sz + RAND(szrand);
89 main(int argc, char **argv)
98 fmtinstall('B', Bfmt);
103 fd = open(EARGF(usage()), OREAD);
105 sysfatal("Could not open file %s: %r", *argv);
121 sz = getvals(a, &szrand);
127 if(a[0] != 'v' || a[1] != '\0')
131 av = getvals(*argv, &avrand);
135 if(a[0] != 'v' || a[1] != '\0')
142 v = getvals(EARGF(usage()), &vrand);
145 o = getvec(EARGF(usage()));
148 d = getvals(EARGF(usage()), &drand);
156 lim = strtod(*argv, nil);
159 Binit(&bout, 1, OWRITE);
160 for(b = glxy.a; b < glxy.a + new; b++)
161 Bprint(&bout, "%B\n", b);
163 for(b = glxy.a+new; b < glxy.a+glxy.l; b++) {
166 Bprint(&bout, "%B\n", b);