#include "library.h" double f(const double x, const double y) { const double a = sqrt(x*x+y*y)-10.0; return 1.0/sqrt(sqrt(a*a+1.0)); } double maximum(const double a, const double b) { if (a>b) return a; else return b; } double maximum(const double minx, const double maxx, const double miny, const double maxy) { const double midx=(minx+maxx)/2.0, midy=(miny+maxy)/2.0; if (maxx-minx<0.1 && maxy-miny<0.1) return f(midx, midy); const double m1 = maximum(minx, midx, miny, midy); const double m2 = maximum(midx, maxx, miny, midy); const double m3 = maximum(minx, midx, midy, maxy); const double m4 = maximum(midx, maxx, midy, maxy); const double answer = maximum(maximum(m1, m2), maximum(m3, m4)); return answer; } void plot(const double minx, const double maxx, const double miny, const double maxy) { const double midx=(minx+maxx)/2.0, midy=(miny+maxy)/2.0; if (maxx-minx<0.1 && maxy-miny<0.1) { const double value = f(midx, midy); set_pen_color(value, 0.0, 1.0-value); draw_point(10*midx+305, 10*midy+305); } else { plot(minx, midx, miny, midy); plot(midx, maxx, miny, midy); plot(minx, midx, midy, maxy); plot(midx, maxx, midy, maxy); } } void main() { const double m = maximum(-30, 30, -30, 30); make_window(610, 610); plot(-30, 30, -30, 30); }