Difference between revisions of "The B-Team"

From CDOT Wiki
Jump to: navigation, search
(Code)
Line 1: Line 1:
 
{{GPU610/DPS915 Index | 20123}}
 
{{GPU610/DPS915 Index | 20123}}
 +
 
= The B-Team =
 
= The B-Team =
 +
 
== Team Members ==  
 
== Team Members ==  
 +
 
# [mailto:kmbarnhart@learn.senecac.on.ca?sujbect=DPS915 Kyle Barnhart]
 
# [mailto:kmbarnhart@learn.senecac.on.ca?sujbect=DPS915 Kyle Barnhart]
 +
 +
 +
  
 
== Mandelbrot Set ==
 
== Mandelbrot Set ==
 +
 
=== Repo ===
 
=== Repo ===
 +
 
https://github.com/KyleBarnhart/Fractal
 
https://github.com/KyleBarnhart/Fractal
 +
 +
 +
  
 
=== Description ===
 
=== Description ===
 +
 
I wrote this program because I could not find a suitable fractal program. This program generates fractal images of the Mandelbrot Set and saves them in the BMP image format. It can generate images of an almost arbitrary size. You also set the locations, number of iterations, and the zoom factor. It uses a smoothing algorithm and a histogram to create smoothly and evenly coloured images. It has selective super sampling for anti-aliasing. And it can generate a sequence of images that can be put together to make a video. In testing the program I made a video (http://www.youtube.com/watch?v=vQigSMuHxuU).  
 
I wrote this program because I could not find a suitable fractal program. This program generates fractal images of the Mandelbrot Set and saves them in the BMP image format. It can generate images of an almost arbitrary size. You also set the locations, number of iterations, and the zoom factor. It uses a smoothing algorithm and a histogram to create smoothly and evenly coloured images. It has selective super sampling for anti-aliasing. And it can generate a sequence of images that can be put together to make a video. In testing the program I made a video (http://www.youtube.com/watch?v=vQigSMuHxuU).  
 +
 +
 +
  
 
=== Code ===
 
=== Code ===
 +
 
<pre>
 
<pre>
 +
 
inline ElementType mandelbrot(ElementType c_r, ElementType c_i, IterationType iterations)
 
inline ElementType mandelbrot(ElementType c_r, ElementType c_i, IterationType iterations)
 +
 
{   
 
{   
 +
 
   ElementType z_r = c_r;
 
   ElementType z_r = c_r;
 +
 
   ElementType z_i = c_i;
 
   ElementType z_i = c_i;
 +
 
    
 
    
 +
 
   ElementType z2_r = z_r * z_r;
 
   ElementType z2_r = z_r * z_r;
 +
 
   ElementType z2_i = z_i * z_i;
 
   ElementType z2_i = z_i * z_i;
 +
 
    
 
    
 +
 
   IterationType n = 0;
 
   IterationType n = 0;
 +
 
    
 
    
 +
 
   while(n < iterations && z2_r + z2_i < 4.0)
 
   while(n < iterations && z2_r + z2_i < 4.0)
 +
 
   {           
 
   {           
 +
 
       z_i = 2.0 * z_r * z_i + c_i;
 
       z_i = 2.0 * z_r * z_i + c_i;
 +
 
       z_r = z2_r - z2_i + c_r;
 
       z_r = z2_r - z2_i + c_r;
 +
 
    
 
    
 +
 
       z2_r = z_r * z_r;
 
       z2_r = z_r * z_r;
 +
 
       z2_i = z_i * z_i;
 
       z2_i = z_i * z_i;
 +
 
        
 
        
 +
 
       n++;
 
       n++;
 +
 
   }
 
   }
 +
 
    
 
    
 +
 
   z_i = 2.0 * z_r * z_i + c_i;
 
   z_i = 2.0 * z_r * z_i + c_i;
 +
 
   z_r = z2_r - z2_i + c_r;
 
   z_r = z2_r - z2_i + c_r;
 +
 
    
 
    
 +
 
   z2_r = z_r * z_r;
 
   z2_r = z_r * z_r;
 +
 
   z2_i = z_i * z_i;
 
   z2_i = z_i * z_i;
 +
 
    
 
    
 +
 
   z_i = 2.0 * z_r * z_i + c_i;
 
   z_i = 2.0 * z_r * z_i + c_i;
 +
 
   z_r = z2_r - z2_i + c_r;
 
   z_r = z2_r - z2_i + c_r;
 +
 
    
 
    
 +
 
   z2_r = z_r * z_r;
 
   z2_r = z_r * z_r;
 +
 
   z2_i = z_i * z_i;
 
   z2_i = z_i * z_i;
 +
 
    
 
    
 +
 
   n += 2;
 
   n += 2;
 +
 
    
 
    
 +
 
   if(n > iterations)
 
   if(n > iterations)
 +
 
   {
 
   {
 +
 
       return (ElementType)iterations;
 
       return (ElementType)iterations;
 +
 
   }
 
   }
 +
 
   else
 
   else
 +
 
   {
 
   {
 +
 
       return (ElementType)n + 1.0 - log(log(sqrt(z2_r + z2_i)))/log(2.0);;
 
       return (ElementType)n + 1.0 - log(log(sqrt(z2_r + z2_i)))/log(2.0);;
 +
 
   }
 
   }
 +
 
}
 
}
 +
 
</pre>
 
</pre>
 +
 +
  
  
 
== Calculating Pi ==
 
== Calculating Pi ==
 +
 
=== Repo ===
 
=== Repo ===
 +
 
https://github.com/KyleBarnhart/Pi
 
https://github.com/KyleBarnhart/Pi
 +
 +
 +
  
 
=== Description ===
 
=== Description ===
 +
 
I wrote this program based on reading some articles I found. The program calculates the value of pi by randomly generating points in a one by one area and determining if they are no more than a distance of one from the bottom left corner (0, 0). By randomly generating many uniformly distributed numbers and dividing the number that fall within the circle by the number of iterations you can determine pi. The more iterations that you preform, the closer the value will be to pi.
 
I wrote this program based on reading some articles I found. The program calculates the value of pi by randomly generating points in a one by one area and determining if they are no more than a distance of one from the bottom left corner (0, 0). By randomly generating many uniformly distributed numbers and dividing the number that fall within the circle by the number of iterations you can determine pi. The more iterations that you preform, the closer the value will be to pi.
 +
 +
 +
  
 
=== Code ===
 
=== Code ===
 +
 
<pre>
 
<pre>
 +
 
inline double moreRandom(unsigned iterations)
 
inline double moreRandom(unsigned iterations)
  
Line 89: Line 163:
 
   return result;
 
   return result;
  
}</pre>
+
}
 +
 
 +
 
 +
 
 +
 
 +
</pre>

Revision as of 02:23, 21 November 2012


GPU610/DPS915 | Student List | Group and Project Index | Student Resources | Glossary

The B-Team

Team Members

  1. Kyle Barnhart



Mandelbrot Set

Repo

https://github.com/KyleBarnhart/Fractal



Description

I wrote this program because I could not find a suitable fractal program. This program generates fractal images of the Mandelbrot Set and saves them in the BMP image format. It can generate images of an almost arbitrary size. You also set the locations, number of iterations, and the zoom factor. It uses a smoothing algorithm and a histogram to create smoothly and evenly coloured images. It has selective super sampling for anti-aliasing. And it can generate a sequence of images that can be put together to make a video. In testing the program I made a video (http://www.youtube.com/watch?v=vQigSMuHxuU).



Code


inline ElementType mandelbrot(ElementType c_r, ElementType c_i, IterationType iterations)

{  

   ElementType z_r = c_r;

   ElementType z_i = c_i;

   

   ElementType z2_r = z_r * z_r;

   ElementType z2_i = z_i * z_i;

   

   IterationType n = 0;

   

   while(n < iterations && z2_r + z2_i < 4.0)

   {           

      z_i = 2.0 * z_r * z_i + c_i;

      z_r = z2_r - z2_i + c_r;

   

      z2_r = z_r * z_r;

      z2_i = z_i * z_i;

      

      n++;

   }

   

   z_i = 2.0 * z_r * z_i + c_i;

   z_r = z2_r - z2_i + c_r;

   

   z2_r = z_r * z_r;

   z2_i = z_i * z_i;

   

   z_i = 2.0 * z_r * z_i + c_i;

   z_r = z2_r - z2_i + c_r;

   

   z2_r = z_r * z_r;

   z2_i = z_i * z_i;

   

   n += 2;

   

   if(n > iterations)

   {

      return (ElementType)iterations;

   }

   else

   {

      return (ElementType)n + 1.0 - log(log(sqrt(z2_r + z2_i)))/log(2.0);;

   }

}



Calculating Pi

Repo

https://github.com/KyleBarnhart/Pi



Description

I wrote this program based on reading some articles I found. The program calculates the value of pi by randomly generating points in a one by one area and determining if they are no more than a distance of one from the bottom left corner (0, 0). By randomly generating many uniformly distributed numbers and dividing the number that fall within the circle by the number of iterations you can determine pi. The more iterations that you preform, the closer the value will be to pi.



Code


inline double moreRandom(unsigned iterations)

{

   double result = (double)rand() / (double)RAND_MAX;

   

   for(unsigned i = 1; i < iterations; i++)

   {

      result = (((double)rand()) + result) / (double)RAND_MAX;

   }

   

   return result;

}