size(400, 400); int gap = 5; int N = width; // for astetics, we break black into two, // starting with portion that is eventually covered by red stroke(0); for (int k=0; k < N; k += gap) { float partial = 1.0 * (N-k)/N; line(partial*k, k + partial*(N-k), k, N); } stroke(255, 0, 0); // red in bottom-right quadrant for (int k=0; k < N; k += gap) { line(k, N, N, N-k); } stroke(0, 0, 255); // blue in top-right quadrant for (int k=0; k < N; k += gap) { line(k, 0, N, k); } stroke(0, 255, 0); // green in top-left quadrant for (int k=0; k < N; k += gap) { line(N-k, 0, 0, k); } // for astetics, one more time with black, // but only with portion that (re)covers green stroke(0); for (int k=0; k < N; k += gap) { float partial = 1.0 * (N-k)/N; line(0, k, partial*k, k + partial*(N-k)); }