Advertisement
Thiff

Vlajky

Nov 20th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.22 KB | None | 0 0
  1.  Kernel pro vlajky - mimo
  2. __global__ void kernel_flag( uchar4 *obr, uchar4 *vystup, int sizex, int sizey )
  3. {
  4.     int y = blockDim.y * blockIdx.y + threadIdx.y;
  5.     int x = blockDim.x * blockIdx.x + threadIdx.x; 
  6.     float uhel = 0.2;  
  7.    
  8.     uchar4 bgr2 = { 255, 255, 255 }; // bila   
  9.  
  10.     int sx = sizex / 2;
  11.     int sy = sizey / 2;
  12.    
  13.     int dx = (double)(x - sx) * cos(uhel) - (double)(y - sy) * sin(uhel);
  14.     int dy = (double)(x - sx) * sin(uhel) + (double)(y - sy) * cos(uhel);
  15.    
  16.     int nx = sx + dx;
  17.     int ny = sy + dy;
  18.    
  19.     if(nx >= sizex || nx < 0){
  20.         vystup[ y * sizex + x ] = bgr2;
  21.     }else
  22.     if(ny >= sizey || ny < 0){
  23.         vystup[ y * sizex + x ] = bgr2;
  24.     }else{
  25.         vystup[ y * sizex + x] = obr[ (ny) * sizex + nx];
  26.     }
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33. /* Recka vlajka
  34.    if ( blockIdx.y%2 == 0 )
  35.    {
  36.       bgr.y = bgr.z = 0;
  37.    }
  38.    if( x <= sizex/2 && y<= sizey/2 )
  39.    {
  40.       bgr.y = bgr.z = 0;
  41.    }
  42.    if( (x <= sizex/2) && (y<= sizey/2)  )
  43.    {
  44.       if(sizey/4 >= y-10  && sizey/4 <= y+10)
  45.       {
  46.          bgr.z = 255;       // R
  47.          bgr.y = 255;    // G   Cervena
  48.          bgr.x = 255;      // B
  49.       }
  50.  
  51.       if ( x+10 >= sizex/4 && x-10 <= sizex/4 )
  52.       {
  53.          bgr.z = 255;       // R
  54.          bgr.y = 255;    // G   Cervena
  55.          bgr.x = 255;      // B
  56.       }
  57.    }
  58.  
  59.    */
  60.  
  61.                                              
  62.       //Otocena vlajka
  63.  
  64. /*
  65.       // Cervena barva
  66.       if ( x >= sizex / 2 )
  67.         {
  68.         bgr.y = bgr.x = 0; // zustane cervena
  69.         }
  70.    
  71.    
  72.       // Modra barva
  73.       if(y>=(sizey-sizex/2))
  74.       {  
  75.         if(x <= (sizex - sizey + y ) && x >= ( sizey - y))
  76.  
  77.           {
  78.       bgr.z = y;       // R
  79.       bgr.y = y;    // G   Cervena
  80.       bgr.x = 255;      // B
  81.           }      
  82.       }
  83.  
  84. */
  85.  
  86. /*
  87.  
  88.    // Kostecky v levo dole a v pravo nahore
  89.  
  90.    // Kostka v levo dole
  91.    if  ( x < sizex/2 && y > sizey/2 )
  92.    {
  93.       bgr.x = bgr.y = bgr.z = 0;
  94.    }
  95.  
  96.    // Kostka v pravo nahore
  97.    if ( x > sizex/2 && y < sizey/2 )
  98.    {
  99.       bgr.z = 204;   // R
  100.       bgr.y = 153;   // G   Cervena
  101.       bgr.x = 255;    // B  
  102.    }
  103.  
  104.    //Kostka v v pravo dole
  105.    if ( x > sizex/2 && y > sizey/2 )
  106.    {
  107.       bgr.z = 255;   // R
  108.       bgr.y = 0;       // G   Cervena
  109.       bgr.x = 0;      // B
  110.    }
  111.  
  112.    // Kontka v levo nahore
  113.    if  ( x < sizex/2 && y < sizey/2 )
  114.    {
  115.       bgr.z = 0;       // R
  116.       bgr.y = 102;    // G   Cervena
  117.       bgr.x = 0;      // B
  118.    }
  119.  
  120. */
  121.  
  122.  
  123. /*
  124.    // Kriz - zachrany
  125.  
  126.  
  127.    if ( (y > 2*(sizey/6)) && (y < 4*(sizey/6)) && (x > (sizex/6)) && (x < 5*(sizex/6))  )
  128.    {
  129.       bgr.x = bgr.y = bgr.z = 0;
  130.    }
  131.    if ( (y > sizey/6) && (y < 5*(sizey/6)) && (x > 2*(sizex/6)) && (x < 4*(sizex/6))  )
  132.    {
  133.       bgr.x = bgr.y = bgr.z = 0;
  134.    }
  135. */
  136.  
  137. /*
  138.    //Obdelnik |___|
  139.    
  140.  
  141.    int hrana = sizex/8;
  142.  
  143.    if ( (y > 2*(sizey/6)) && (y < 4*(sizey/6)) && (x > (sizex/6)) && (x < 5*(sizex/6))  )
  144.    {
  145.       bgr.x = bgr.y = bgr.z = 0;
  146.    }
  147. */
  148.  
  149. /*
  150.    //Obdelnik |_|
  151.    
  152.  
  153.    int hrana = sizex/8;
  154.  
  155.    if ( (y > sizey/6) && (y < 5*(sizey/6)) && (x > 2*(sizex/6)) && (x < 4*(sizex/6))  )
  156.    {
  157.       bgr.x = bgr.y = bgr.z = 0;
  158.    }
  159.  
  160. */
  161. /*
  162. // KRUH - dneska
  163. int y = blockDim.y * blockIdx.y + threadIdx.y;
  164. int x = blockDim.x * blockIdx.x + threadIdx.x;
  165. int stred_x = 150;
  166. int stred_y = 150;
  167. int r = 140;
  168. int dx = stred_x - x; // horizontal offset
  169. int dy = stred_y - y; // vertical offset
  170. if ( (dx*dx + dy*dy) <= (r*r) ){
  171. bgr.y = 0;
  172. bgr.z = 0;}
  173. */
  174. /*
  175.    //Ctverec
  176.  
  177.    int hrana = sizex/8;
  178.  
  179.    if ( (y > sizey/4) && (y< 3*(sizey/4)) && (x > sizex/4) && (x < 3*(sizex/4)) )
  180.    {
  181.       bgr.x = bgr.y = bgr.z = 0;
  182.    }
  183. */
  184.  
  185. /*
  186.    //Prouzky vertikálně
  187.  
  188.    if ( blockIdx.x%2 == 0 )
  189.    {
  190.       bgr.x = bgr.y = bgr.z = 0;
  191.    }
  192. */
  193.  
  194.  
  195. /*
  196.    //Prouzky horizontalně
  197.  
  198.    if ( blockIdx.y%2 == 0 )
  199.    {
  200.       bgr.x = bgr.y = bgr.z = 0;
  201.    }
  202. */
  203.  
  204. /*
  205.    //Kruh
  206.  
  207.     float a = (sizex/2-x)*(sizex/2-x)+(sizey/2-y)*(sizey/2-y);
  208.  
  209.     if ( a <= 60*60)
  210.     {
  211.        bgr.x = bgr.y = bgr.z = 0;
  212.     }
  213.  
  214.     if ( a <= 70*70)
  215.     {
  216.        bgr.x = bgr.y =0;
  217.     }
  218. */
  219.  
  220. /*
  221.    //Trojuhelnik dolu
  222.    
  223.    if ( (x+y) <= sizex+sizex/2 && (x+(sizex/2)>=y ) && y > sizey/2 )
  224.    {
  225.       bgr.y = bgr.z = 0;
  226.    }
  227. */
  228.  
  229.  
  230. /*
  231.    //Trojuhelnik nahoru
  232.    
  233.    if (  (x+y>=sizex/2) &&  (x-(sizex/2)<=y ) && y < sizey/2 )
  234.    {
  235.       bgr.y = bgr.z = 0;
  236.    }
  237. */
  238.  
  239. /*
  240.    //Trojuhelnik do prava
  241.    
  242.    if (  (x-(sizex/2)<=y ) &&  (x+y) <= sizex+sizex/2 && x> sizex/2 )
  243.    {
  244.       bgr.y = bgr.z = 0;
  245.    }
  246. */
  247.  
  248. /*
  249.    //Trojuhelnik do leva
  250.    
  251.    if (  (x+y>=sizex/2)  && (x+(sizex/2)>=y ) && x <= sizex/2)
  252.    {
  253.       bgr.y = bgr.z = 0;
  254.    }
  255. */
  256.  
  257. /*
  258.    //Kosoctverec - prazdny
  259.  
  260.    if (  (x+y<=sizex/2)  || (x+(sizex/2)<=y ) || (x-(sizex/2)>=y ) ||  (x+y) >= sizex+sizex/2  )
  261.    {
  262.       bgr.y = bgr.z = 0;
  263.    }
  264. */
  265.  
  266. /*
  267.    //Kosoctverec Modry
  268.    if (  (x+y>=sizex/2)  && (x+(sizex/2)>=y ) && (x-(sizex/2)<=y ) &&  (x+y) <= sizex+sizex/2  )
  269.    {
  270.       bgr.y = bgr.z = 0;
  271.    }
  272. */
  273.  
  274. /********Sachovnice 8X8
  275.  
  276.    // Nastavení velikosti 8x8 ci 4x4 provedu pomocí main3.cpp
  277.    if ( (blockIdx.y%2==1 && blockIdx.x%2==1) || (blockIdx.y%2==0 && blockIdx.x%2==0)   )
  278.    {
  279.       bgr.y = bgr.z = 0;
  280.    }
  281. */
  282.  
  283.  
  284. /**/
  285.  
  286. /*
  287. for (int i = 1; i < sizey/2; i++) {
  288.  
  289.       if ((y < i*(sizey / 10)))
  290.      {
  291.       }
  292.       else if ( y <= (i*(sizey / 10) + 5))
  293.      {
  294.          bgr.y = bgr.z = 0;
  295.       }
  296.    }
  297. ¨*/
  298.  
  299. /*
  300.    // Uhlopricka
  301.    if ( ((x+y) % 33 == 1)  )
  302.    {
  303.       bgr.y = bgr.z = 0;
  304.    }
  305. */
  306.  
  307. /*
  308.    // Uhlopricka
  309.    if ( (x-10 <= y) && (x+10 >=y) )
  310.    {
  311.       bgr.y = bgr.z = 0;
  312.    }
  313. */
  314.  
  315. /*
  316.  
  317.    //Obracena uhlopricka
  318.    if ( x+y <= sizex+10 && x+y >= sizex -10)
  319.    {
  320.       bgr.y = bgr.z = 0;
  321.    }
  322.  
  323.    //Prouzek pres pulku horizontalne
  324.    if ( sizey/2 >= y-10  && sizey/2 <= y+10 )
  325.    {
  326.       bgr.y = bgr.z = 0;
  327.    }
  328.  
  329.    //Prouzek pres pulku vertikalne
  330.    if ( x+10 >= sizex/2 && x-10 <= sizex/2 )
  331.    {
  332.       bgr.y = bgr.z = 0;
  333.    }
  334. */
  335.  
  336. /*
  337.        // horni polovina
  338.        if (y < sizey/2)
  339.        {      
  340.           if((x>(sizex/2-y))&&(x<(sizex/2+y)))
  341.           {
  342.              bgr.y = bgr.z = 0;
  343.           }
  344.        }
  345.  
  346.        // dolni polovina
  347.        if (y >= sizey/2)
  348.        {      
  349.           if((x>(y%(sizey/2)))&&(x<(sizey-(y%(sizey/2)))))
  350.           {
  351.              bgr.y = bgr.x = 0;
  352.           }
  353.        }
  354.  
  355.  
  356.  
  357.  
  358.  
  359. */
  360.  
  361.  
  362. Pridavam vymrdanu vlajku britskych ostrovov...
  363.  
  364. KÓD: VYBRAT VŠE
  365. uchar4 bgr = { 255, 0, 0 }; // modra
  366.  
  367.  
  368. if ( x>=y*3/2-30 && x<=y*3/2+30 )
  369.    {
  370.       bgr.y = bgr.z = 255;
  371.      if ( x>=y*3/2-10 && x<=y*3/2+10 )
  372.       {
  373.          bgr.x = bgr.y = 0;
  374.       }
  375.      
  376.        
  377.    }
  378.  
  379.  //--------
  380.   if ( sizex - x>=y*3/2-30 &&   sizex - x<=y*3/2+30)
  381.    {
  382.        bgr.y = bgr.z = 255;
  383.      if ( sizex - x>=y*3/2-10 &&   sizex - x<=y*3/2+10)
  384.        {
  385.       bgr.x = bgr.y = 0;
  386.        }
  387.        
  388.        
  389.    }
  390.  
  391.  
  392.    if (x > sizex/3)
  393. {
  394.     if (x < sizex*2/3 )
  395.       bgr.z= bgr.x = bgr.y = 255;
  396.  
  397. }
  398. if (y > sizey/3)
  399. {
  400.     if (y < sizey*2/3 )
  401.        bgr.z= bgr.x = bgr.y = 255;
  402. }
  403. //---------------
  404.    if (x > sizex/3+50)
  405. {
  406.     if (x < sizex*2/3-50 )
  407.      bgr.x = bgr.y = 0;
  408.  
  409. }
  410. if (y > sizey/3+30)
  411. {
  412.     if (y < sizey*2/3-30 )
  413.        bgr.x = bgr.y = 0;
  414. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement