// intersecting color circles // #include #include "ppm.h" #define N 256 // N-by-N pixels #define R (N/3) // circle radius #define R2 (R*R) // and radius squared #define XR (R) // coordinates of circle centers #define YR (R) #define XG (R) #define YG (2*R) #define XB (2*R) #define YB (N/2) // sum of squares // int sqr( int a, int b) { return a*a + b*b; } int main( void) { ppm a = ppm_new( N, N); for( int x = 0; x < N; ++x) for( int y = 0; y < N; ++y) { int c = 0; if( sqr(x-XR,y-YR) <= R2) { a.r[x][y] = 255; ++c; } if( sqr(x-XG,y-YG) <= R2) { a.g[x][y] = 255; ++c; } if( sqr(x-XB,y-YB) <= R2) { a.b[x][y] = 255; ++c; } if( c == 0) // make it white a.r[x][y] = a.g[x][y] = a.b[x][y] = 255; } ppm_write( a); return 0; }