git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@219 626c5289-ae23-0410-ae9c-e8d60b6d4f22
47 lines
920 B
OpenEdge ABL
47 lines
920 B
OpenEdge ABL
// Special module to run the mandlebrot set
|
|
%module gifplot
|
|
%include gifplot.i
|
|
|
|
%inline %{
|
|
|
|
void mandel(Plot2D *p2, int tol) {
|
|
double scalingx;
|
|
double scalingy;
|
|
double zr,zi,ztr,zti,cr,ci;
|
|
double cscale;
|
|
int i,j,n;
|
|
FrameBuffer *f;
|
|
|
|
f = p2->frame;
|
|
scalingx = (p2->xmax-p2->xmin)/f->width;
|
|
scalingy = (p2->ymax-p2->ymin)/f->height;
|
|
|
|
cscale = 239.0/tol;
|
|
printf("working...\n");
|
|
for (i = 0; i < f->width; i++) {
|
|
for (j = 0; j < f->height; j++) {
|
|
zr = scalingx*i + p2->xmin;
|
|
zi = scalingy*j + p2->ymin;
|
|
cr = zr;
|
|
ci = zi;
|
|
n = 0;
|
|
while (n < tol) {
|
|
ztr = zr*zr-zi*zi + cr;
|
|
zti = 2*zr*zi + ci;
|
|
zr = ztr;
|
|
zi = zti;
|
|
if (ztr*ztr + zti*zti > 20) break;
|
|
n = n + 1;
|
|
}
|
|
|
|
if (n >= tol) FrameBuffer_plot(f,i,j,BLACK);
|
|
else FrameBuffer_plot(f,i,j,16+(int) (n*cscale));
|
|
}
|
|
if ((i % 10) == 0) printf("%d\n",i);
|
|
}
|
|
|
|
}
|
|
|
|
%}
|
|
|
|
|