Upstream version 1.3.40
[profile/ivi/swig.git] / Examples / GIFPlot / Tcl / mandel / mandel.i
1 // Special module to run the mandlebrot set
2 %module gifplot
3 %include gifplot.i
4
5 %inline %{
6
7 void mandel(Plot2D *p2, int tol) {
8         double scalingx;
9         double scalingy;
10         double zr,zi,ztr,zti,cr,ci;
11         double cscale;
12         int    i,j,n;
13         FrameBuffer *f;
14
15         f = p2->frame;
16         scalingx = (p2->xmax-p2->xmin)/f->width;
17         scalingy = (p2->ymax-p2->ymin)/f->height;
18         
19         cscale = 239.0/tol;
20         printf("working...\n");
21         for (i = 0; i < f->width; i++) {
22           for (j = 0; j < f->height; j++) {
23             zr = scalingx*i + p2->xmin;
24             zi = scalingy*j + p2->ymin;
25             cr = zr;
26             ci = zi;
27             n = 0;
28             while (n < tol) {
29               ztr = zr*zr-zi*zi + cr;
30               zti = 2*zr*zi + ci;
31               zr = ztr;
32               zi = zti;
33               if (ztr*ztr + zti*zti > 20) break;
34               n = n + 1;
35             }
36             
37             if (n >= tol) FrameBuffer_plot(f,i,j,BLACK);
38             else FrameBuffer_plot(f,i,j,16+(int) (n*cscale));
39           }
40           if ((i % 10) == 0) printf("%d\n",i);
41         }
42
43 }
44                 
45 %}
46         
47