-
Notifications
You must be signed in to change notification settings - Fork 0
/
gap-tongue.C
99 lines (78 loc) · 2.22 KB
/
gap-tongue.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* NAME:
* gap-tongue.C
*
* FUNCTION:
* generate pixmaps showing continued fraction gaps
*
* HISTORY:
* created Linas Vepstas Jan 1991
* spruced up Linas Vepstas July 1993
* fixed major performance bug (AIX fmod() stinks!) -- January 1994
* added logistic map -- February 1994
* added classic mandelbrot -- June 1995
* Added continued fraction gaps -- October 2004
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "Farey.h"
#include "image.h"
#include "util.h"
/*-------------------------------------------------------------------*/
typedef struct gap_data_s {
ContinuedFraction f;
} GapData;
/*-------------------------------------------------------------------*/
/*
* Compute the wavy gaps for a given continued fraction.
*/
float cf_gap (GapData *dat,
double x,
double w)
{
dat->f.SetReal (x);
double g = dat->f.ToXPlus (w);
return g;
}
/*-------------------------------------------------------------------*/
void do_cf_gap (char * filename, int width, int height)
{
float *data ; /* my data array */
unsigned int data_width, data_height;/* data array dimensions */
float x_min, x_max, w_min, w_max;
FILE *fp;
GapData dat;
data = (float *) malloc (sizeof (float) * width * height);
if (data == NULL) {
fprintf (stderr, "Whoops, no memory \n");
exit (EXIT_FAILURE);
}
data_width = width;
data_height = height;
/* The BIG picture
*/
x_min = 0.0;
x_max = 1.0;
w_min = 0.0;
w_max = 1.0;
/* fill it in */
walk_rect (data, data_width, data_height,
x_min, x_max, w_min, w_max,
(DensityCB) cf_gap, &dat);
/* dump the floating point data */
if ( (fp = Fopen (filename, ".flo")) == NULL) {
fprintf (stderr, " File open failure \n");
exit (EXIT_FAILURE);
}
fprintf (fp, "%d %d\n", data_width, data_height);
fwrite (data, sizeof(float), data_width*data_height, fp);
fclose (fp);
if ( (fp = Fopen (filename, ".txt")) == NULL) {
fprintf (stderr, " File open failure \n");
exit (EXIT_FAILURE);
}
fprintf (fp, "gappy stuff\n");
fclose (fp);
}
/* ----------------------- end of file ---------------------- */