From f4f094ff762144d8f192353f92a06201346ed8a8 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Thu, 2 Feb 2023 18:46:37 -0600 Subject: [PATCH] Add assignment 0 info --- assignment-0/ASSIGNMENT.md | 75 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 assignment-0/ASSIGNMENT.md diff --git a/assignment-0/ASSIGNMENT.md b/assignment-0/ASSIGNMENT.md new file mode 100644 index 000000000..41236a3 --- /dev/null +++ b/assignment-0/ASSIGNMENT.md @@ -0,0 +1,75 @@ +In this assignment, you are asked to write a program that creates an image in +ASCII PPM format. + +Your program should accept, as a command line argument, the name of a file +containing an "image description" (consisting of one line of text specifying the +image height and image width, optionally followed other lines of text specifying +any additional parameters your program might use), and it should generate a +valid ASCII PPM file as output. The name of the output file should end with the +suffix .ppm. Your program should be capable of accepting different input files +and producing different output files without needing to be recompiled. + +You are free to use whatever means you like to define the contents of the output +image. If you have time and are so inclined, you can earn extra credit by doing +something creative. Possibilities include: hardcoding an interesting pattern, +generating a [procedural texture][1], generating an image of the [Mandelbrot +set][2], or reading an image from a file and applying an interesting [filter][3] +or function such as [line integral convolution][4]. Whatever approach you +choose, the code you turn in **must** be your own. + +[1]: https://en.wikipedia.org/wiki/Procedural_texture +[2]: https://en.wikipedia.org/wiki/Mandelbrot_set +[3]: https://en.wikipedia.org/wiki/Kernel_(image_processing) +[4]: https://en.wikipedia.org/wiki/Line_integral_convolution + +Detailed instructions: + +1. Please use the following syntax to define the image size in your input file: + + imsize width height + + where imsize is a keyword and width and height are integers. + +2. Please use the following syntax to define your output image: + + P3 + + # any comments you want to include + + width height + + 255 + + r(0,0) g(0,0) b(0,0) r(1,0) g(1,0) b(1,0) r(2,0) g(2,0) b(2,0) ... + +Please note that in an ASCII PPM file, each pixel color is defined as an (r, g, +b) triple, and the provided values are used to fill the image in row major +order. Specifically, the first three entries represent the red, green and blue +components of the color of the upper leftmost pixel in the image, the second +three entries represent the color of the adjacent pixel to the right, and so on. + +Your program will need to specify exactly one color triple for each pixel in +your image. Try to keep the line length under 80 characters, or approximately +4-5 pixels per line. It’s also okay to put each color component on its own line +too. Do not insert any other characters such as commas, etc. between any of the +color values. + +You can use the free program [GIMP] to view your image, to verify that it looks +the way you intend it to. GIMP is a general-purpose image editing tool that can +also be used to convert images from multiple other formats into ASCII PPM format +(and vice versa). + +[gimp]: http://www.gimp.org + +What you should turn in: + +- a readme file that describes your what your program does +- all of your source code, clearly commented +- at least one ascii PPM image created by your program + +We will plan to share the PPM images in class. If you would prefer that we not +show your image, please let us know. + +We will use this rubric: grading-criteria-0.pdf when grading your program. You +are advised to check the rubric before beginning the assignment to fully +understand how credit will be awarded.