#include #include #include #include "ppm.h" // from w05/tan.c double v(double a) { double t = fabs(tan(a)); return pow(t,1/t); } int main( int argc, char *argv[]) { int n; if( argc > 1) n = atoi(argv[1]); if( n <= 0) n = 250; ppm a = ppm_new(n,n); double xc = n/2.0, yc = n-1, scale = n/1.6; for( int y = 0; y < n; ++y) for( int x = 0; x < n; ++x) { double dy = y-yc, dx = x-xc, ang = atan2(dy,dx), r = scale*v(ang), d = hypot(dy,dx); { if( d <= r) { a.r[y][x] = 255; a.g[y][x] = a.b[y][x] = 0; } else { a.b[y][x] = a.g[y][x] = a.r[y][x] = 255; } } } ppm_write( a); return 0; }