From f556c24a133629a94c795dfdb404a569d6395af1 Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Sun, 22 Jan 2023 18:28:26 -0600 Subject: [PATCH] Added readme, made some small changes to writeup (grammar, changing order of demos) --- README.md | 15 +++++++++ docs/p4.pdf | Bin 5197562 -> 5197678 bytes main.cpp | 89 ++++++++++++++++++++++++++-------------------------- 3 files changed, 59 insertions(+), 45 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f654e3f --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Building +Just run make. Depends on libpng. + +# Info +This project was my final for CS200 at JCCC. It uses multiple threads to draw the mandelbrot. When one thread is finished, it will communicate with other threads to split the load; work delegation is the main showcase of this project. + +# Writeup +For the writeup portion of this project I did last year, please visit [here](https://git.bpcspace.com/brett/Mandelbrot-CS200/src/branch/master/docs/p4.pdf). +Here you will be able to see demos, as well as flowcharts and pseudo code for some of the functionallity. + +# Problems +Due to the fact I had to complete this project in just a few days, there are a few problems I'd fix if I were to do it again. + +The largest issue is that the thread worker class is not extensible. I have rendering in the same function as thread communication; you should not need to reimpliment the syncronization aspects of the thread just to change how it renders. +Additionally, I'm not sure if there was a simpler way to prevent race conditions then to manually create a mutex when modifying multiple variables. diff --git a/docs/p4.pdf b/docs/p4.pdf index 858774b050e8299e06d50e979efba8e716ea0367..86c225c76818017d53ce92103876c5b1d02f71a7 100644 GIT binary patch delta 41897 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 T*{6zNxhV{T5pZzGBNYB0h~d5A delta 41613 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

u|?XHZG`yi5xekk54%@OO}!S*Lvlzz=FK2rPi$= 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 YJG-%q3Zvu@2#%{DD42wcOCF){e;KDQs{jB1 diff --git a/main.cpp b/main.cpp index e801015..2eac799 100644 --- a/main.cpp +++ b/main.cpp @@ -12,22 +12,15 @@ using namespace std; -//defaults - -//TODO remove temp_settings +//Argument defaults. Really not used to using constants over preprocessor defines; this feels cursed const uint32_t DEFAULT_WIDTH = 1920; const uint32_t DEFAULT_HEIGHT = 1080; const int DEFAULT_JOBS = 1; const string DEFAULT_IMG_PATH = "out.png"; -//CONTENDOR_HI REPLACEMENT - 50000 iterations const complex DEFAULT_MIN_CORD (-0.74364386269 - 0.00000003000, 0.13182590271 - 0.00000003000); const complex DEFAULT_MAX_CORD (-0.74364386269 + 0.00000003000, 0.13182590271 + 0.00000003000); -//CONTENDOR_ZOOM- 50000 iterations -//const complex DEFAULT_MIN_CORD (-0.74364386269 - 0.00000001000, 0.13182590271 - 0.00000001000); -//const complex DEFAULT_MAX_CORD (-0.74364386269 + 0.00000001000, 0.13182590271 + 0.00000001000); - const unsigned int DEFAULT_ITERS = 50000; const unsigned int DEFAULT_BAILOUT = 256; @@ -66,10 +59,45 @@ bool getopt_int(t& number, char *optarg, char opt, char *arg) { return false; } +/** colors using linear histrogram method with generic hue shift **/ +//TODO figure out how to pass constant arrays without allowing pointed material to be modified +void calc_colors(const double *value_map, unsigned int *histogram, png &image, unsigned int max_iters) { + double below, above, hue; + int c; + uint32_t x, y; + int rgb[3]; + unsigned int histogram_sum = 0; + double current_hue = 0; + double *freq_hue = new double[max_iters](); + + //find the sum of all histogram values, we could ajust this to increase or decrease contrast + for(unsigned int p = 0; p < max_iters; p++) histogram_sum += histogram[p]; + + for(unsigned int i = 0; i < max_iters; i++) { + current_hue += histogram[i] / (double)histogram_sum; + freq_hue[i] = current_hue; + } + + for(y = 0; y < image.height(); y++) { + for(x = 0; x < image.width(); x++) { + below = freq_hue[(int)value_map[(y * image.width()) + x]]; + above = freq_hue[(int)ceil(value_map[((y * image.width()) + x) + 1])]; + hue = (((above - below) * fmod(value_map[(y * image.width()) + x], 1.0)) + below); + rgb[0] = 255 * cos((M_PI * hue) - M_PI); + rgb[1] = 255 * cos((M_PI * hue) - ((M_PI) / 2.0)); + rgb[2] = 255 * cos(M_PI * hue); + for(c = 0; c < 3; c++) if(rgb[c] < 0) rgb[c] = 0; + image.set_pixel(x, y, (png_byte)rgb[0], (png_byte)rgb[1], (png_byte)rgb[2]); + } + } +} + int main(int argc, char **argv) { + + //argument options uint32_t width = DEFAULT_WIDTH; uint32_t height = DEFAULT_HEIGHT; @@ -80,10 +108,9 @@ int main(int argc, char **argv) { unsigned int m_iters = DEFAULT_ITERS; unsigned int bailout = DEFAULT_BAILOUT; bool jobs_set = false; + int arg; //for getopt - //I could not find a better way to turn a string into a complex variable stringstream complex_str_buffer; - int arg; while((arg = getopt(argc, argv, "hw:H:o:j:c:C:i:I:")) != -1) { switch(arg) { case 'h': @@ -129,15 +156,11 @@ int main(int argc, char **argv) { "See " << argv[0] << " -h for help.\n" << endl; } - double *vmap = new double[width * height]; + //dependent on getopt settings + double *bail_map = new double[width * height]; unsigned int *histogram = new unsigned int[m_iters](); - unsigned int histogram_sum = 0; - double *freq_hue = new double[m_iters](); - double current_hue = 0; - unsigned int width_per_job = width / jobs; atomic progress(0); - png image(img_path, width, height); thread threads[jobs]; @@ -149,14 +172,14 @@ int main(int argc, char **argv) { for(unsigned int j = 0; j < jobs - 1; j++) { worker_objects[j] = new mthread(j * width_per_job, (j + 1) * width_per_job, min_cord, max_cord, bailout, m_iters, - image, vmap, histogram, worker_objects, j, jobs, progress); + image, bail_map, histogram, worker_objects, j, jobs, progress); } //last worker thread needs the width to go all the way to the edge of the screen, //regardless of rounding issues worker_objects[jobs - 1] = new mthread((jobs - 1) * width_per_job, width - 1, min_cord, max_cord, bailout, m_iters, - image, vmap, histogram, worker_objects, jobs - 1, jobs, progress); + image, bail_map, histogram, worker_objects, jobs - 1, jobs, progress); for(unsigned int j = 0; j < jobs; j++) worker_objects[j]->dispatch(); @@ -173,36 +196,12 @@ int main(int argc, char **argv) { //now to color the image cout << "Coloring image... (this shouldn't take more then a few seconds)" << endl; - //find the sum of all histogram values, we could ajust this to increase or decrease contrast - for(unsigned int p = 0; p < m_iters; p++) histogram_sum += histogram[p]; - - for(unsigned int i = 0; i < m_iters; i++) { - current_hue += histogram[i] / (double)histogram_sum; - freq_hue[i] = current_hue; - } - - //now to calculate the colors - { - double below, above, hue; - int c; - uint32_t x, y; - int rgb[3]; - for(y = 0; y < height; y++) { - for(x = 0; x < width; x++) { - below = freq_hue[(int)vmap[(y * width) + x]]; - above = freq_hue[(int)ceil(vmap[((y * width) + x) + 1])]; - hue = (((above - below) * fmod(vmap[(y * width) + x], 1.0)) + below); - rgb[0] = 255 * cos((M_PI * hue) - M_PI); - rgb[1] = 255 * cos((M_PI * hue) - ((M_PI) / 2.0)); - rgb[2] = 255 * cos(M_PI * hue); - for(c = 0; c < 3; c++) if(rgb[c] < 0) rgb[c] = 0; - image.set_pixel(x, y, (png_byte)rgb[0], (png_byte)rgb[1], (png_byte)rgb[2]); - } - } - } + //actually writes image as well + calc_colors(bail_map, histogram, image, m_iters); for(unsigned int j = 0; j < jobs; j++) delete worker_objects[j]; + //image will be deleted (and written) upon funciton exit cout << "Image exported to " << img_path << "." << endl; }