Facebook
From Walloping Elephant, 3 Years ago, written in Plain Text.
This paste is a reply to Re: Untitled from Sludgy Marmoset - view diff
Embed
Download Paste or View Raw
Hits: 53
  1. #include <iostream>
  2. #include <omp.h>
  3. #include <cmath>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. const int N=1024;
  9. const int level=8;
  10.  
  11. unsigned char tab[1024][1024][3];
  12.  
  13. void triangle(int lvl, int x, int y) {
  14.     int size=N/pow(2,lvl);
  15.  
  16.     for(int i=0;i<size;i++)//pionowe //wysokosc = y
  17.         for (int j=0;j<size;j++)//poziome // szerokosc = x
  18.             if (i == j || i == 0 || j == size - 1)
  19.                 for (int k=0;k<3;k++)
  20.                 {
  21.                         tab[j + x][i + y][k] = 0;
  22.                         tab[i + y][j + x][k] = 0;
  23.                 }
  24.  
  25.     if(lvl<level)
  26.     {
  27.      #pragma omp parallel
  28.             #pragma omp single
  29.                 #pragma omp task
  30.                     triangle(lvl + 1, x + size / 2, y);
  31.                 #pragma omp task
  32.                     triangle(lvl + 1, x, y);
  33.                 #pragma omp task
  34.                     triangle(lvl + 1, x + size / 2, y + size / 2);
  35.                 #pragma omp taskwait
  36.         }
  37. }
  38.  
  39. int main() {
  40.          for(int i=0;i<N;i++)
  41.         for (int j=0;j<N;j++)
  42.                 for (int k=0;k<3;k++)
  43.                                 tab[j][i][k] = 255;
  44.     triangle(0, 0, 0);
  45.     FILE *fp = fopen("39247_lab7_sierpinski.ppm", "wb");
  46.     fprintf(fp, "P6\n %s\n %d\n %d\n %d\n", " #", N, N, 255);
  47.     for (int i = 0; i < N; i++)
  48.         for (int j = 0; j < N; j++)
  49.             fwrite(tab[i][j], 1, 3, fp);
  50.     fclose(fp);
  51.     return 0;
  52. }