#include #include #include #include #include "Image.h" // This allows you to skip the `std::` in front of C++ standard library // functions. You can also say `using std::cout` to be more selective. // You should never do this in a header file. using namespace std; int main(int argc, char **argv) { if(argc < 10) { cout << "Usage: L01 filename width height x1 y1 x2 y2 x3 y3" << endl; return 0; } // Output filename string filename(argv[1]); // Width of image int width = atoi(argv[2]); // Height of image int height = atoi(argv[3]); // Initialize coordinate variables to make things easier float x1 = atoi(argv[4]); float y1 = atoi(argv[5]); float x2 = atoi(argv[6]); float y2 = atoi(argv[7]); float x3 = atoi(argv[8]); float y3 = atoi(argv[9]); // Vertex 1 vertex v1; v1.x = x1; v1.y = y1; v1.z = 0.0; // Vertex 2 vertex v2; v2.x = x2; v2.y = y2; v2.z = 0.0; // Vertex 3 vertex v3; v3.x = x3; v3.y = y3; v3.z = 0.0; // Triangle Tri t(v1, v2, v3); // Find xmin, xmax, ymin, ymax float xmin = x1; float xmax = x1; float ymin = y1; float ymax = y1; if(x2 < xmin) xmin = x2; if(x3 < xmin) xmin = x3; if(x2 > xmax) xmax = x2; if(x3 > xmax) xmax = x3; if(y2 < ymin) ymin = y2; if(y3 < ymin) ymin = y3; if(y2 > ymax) ymax = y2; if(y3 > ymax) ymax = y3; // Create the image. We're using a `shared_ptr`, a C++11 feature. auto image = make_shared(width, height); // Draw a rectangle for(int y = ymin; y < ymax; ++y) { for(int x = xmin; x < xmax; ++x) { unsigned char r = 255; unsigned char g = 0; unsigned char b = 0; image->setPixel(x, y, r, g, b); } } // Write image to file image->writeToFile(filename); return 0; }