From 027aa69c4101d2c3b63cc577f18735ee83562614 Mon Sep 17 00:00:00 2001
From: Lenaic <lenaic.durand@ensiie.fr>
Date: Wed, 8 Jan 2020 17:04:04 +0100
Subject: [PATCH] ajout de libpng

---
 0.png     | Bin 0 -> 9887 bytes
 Makefile  |   2 +-
 main      | Bin 47632 -> 52312 bytes
 main.cpp  |  21 +++++++++-------
 scene.cpp |  70 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 scene.h   |   2 +-
 6 files changed, 82 insertions(+), 13 deletions(-)
 create mode 100644 0.png

diff --git a/0.png b/0.png
new file mode 100644
index 0000000000000000000000000000000000000000..26fd209a570fcbced0554a97d7aec26ec4372ca4
GIT binary patch
literal 9887
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
Ib4q9e00RJkT>t<8

literal 0
HcmV?d00001

diff --git a/Makefile b/Makefile
index 7ba0497..399a995 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ sphere.o: sphere.h
 scene.o: scene.h
 
 main: $(OBJ)
-	$(CC) -o $@ $^
+	$(CC) -o $@ $^ -lpng
 
 clean:
 	rm *.o main
\ No newline at end of file
diff --git a/main b/main
index cb553feecb06412446184a6a9ace4846d0a6dbcf..fb5cbdad93febbdd58074c5002cc95defe2432a6 100644
GIT binary patch
literal 52312
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
DPaRme

delta 16147
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
N2;s^yPX2X74gkaGk+lE-

diff --git a/main.cpp b/main.cpp
index 5eb6249..0acd8a9 100644
--- a/main.cpp
+++ b/main.cpp
@@ -144,6 +144,9 @@ int main()
 		Material red(255, 0, 0, 0);
 		Material green(0, 255, 0, 0);
 		Material blue(0, 0, 255, 0);
+		Material yellow(255, 255, 0, 0);
+		Material magenta(255, 0, 255, 0);
+		Material cyan(0, 255, 255, 0);
 		Material white(255, 255, 255, 0);
 		Material grey(122, 122, 122, 0);
 		Material black(0, 0, 0, 0);
@@ -159,24 +162,24 @@ int main()
 		       |
 		x <----X z*/
 		Shape *shapes[nb_shapes];
-		shapes[0] = new Quad(grey, Vector3f(width/2, height/2, depth), width, height, 0); //mur du fond
-		shapes[1] = new Quad(grey, Vector3f(width, height/2, depth/2), 0, height, depth); //mur gauche
-		shapes[2] = new Quad(grey, Vector3f(width/2, height, depth/2), width, 0, depth); //plafond
-		shapes[3] = new Quad(grey, Vector3f(0, height/2, depth/2), 0, height, depth); //mur droit
+		shapes[0] = new Quad(yellow, Vector3f(width/2, height/2, depth), width, height, 0); //mur du fond
+		shapes[1] = new Quad(magenta, Vector3f(width, height/2, depth/2), 0, height, depth); //mur gauche
+		shapes[2] = new Quad(white, Vector3f(width/2, height, depth/2), width, 0, depth); //plafond
+		shapes[3] = new Quad(cyan, Vector3f(0, height/2, depth/2), 0, height, depth); //mur droit
 		shapes[4] = new Quad(grey, Vector3f(width/2, 0, depth/2), width, 0, depth); //sol
 		shapes[5] = new Quad(red, Vector3f(width/4, 20, depth-20), 40, 40, 40); //cube
 		shapes[6] = new Sphere(blue, Vector3f(3/4*width, 20, depth/2), 40); //sphere
 
-		Camera camera(Vector3f(width/2, height/2, 0), Vector3f(0, 0, 1));
-		Ray3f source(Vector3f(width/2, height, depth/2), Vector3f(0, -1, 0));
+		Camera camera(Vector3f(width/2, height/2, -1), Vector3f(0, 0, 1)); //on met la caméra un peu en recul
+		Ray3f source(Vector3f(width/2, height, depth/2), Vector3f(0, -1, 0)); //lumière au plafonc
 		Scene scene(camera, shapes, source);
 
 
 		//----------CALCUL ET SAUVEGARDE DE L'IMAGE----------
-		std::cout << "Création de l'image..." ;
+		std::cout << "Création de l'image..." << std::endl;
 		std::string filename = "0.png";
-		scene.render(640, 480, filename.c_str());
-		std::cout << " image sauvegardée" << std::endl;
+		scene.render(width, height, 640, 480, nb_shapes, (char *) filename.c_str());
+		std::cout << "Image sauvegardée" << std::endl;
 
 		//----------LIBERATION DE LA MEMOIRE----------
 		for (int i=0; i<nb_shapes; i++)
diff --git a/scene.cpp b/scene.cpp
index 1d237fe..f541ab7 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -1,4 +1,5 @@
 #include "scene.h"
+#include <png.h>
 
 
 
@@ -46,9 +47,74 @@ Ray3f Scene::source() const
 }
 
 
-void Scene::render(int width, int height, const char* filename)
-{
 
+void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, int nb_shapes, char* filename)
+{
+	FILE *f = fopen(filename, "wb");
+	if (!f) throw "Echec de la création du fichier";
+
+	png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+    if (!png_ptr)
+    {
+    	fclose(f);
+    	throw "Echec allocation png_ptr";
+    }
+
+    png_infop info_ptr = png_create_info_struct(png_ptr);
+    if (!info_ptr)
+    {
+       fclose(f);
+       png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+       throw "Echec allocation info_ptr";
+    }
+
+    png_init_io(png_ptr, f);
+
+    //Set header
+    png_set_IHDR(png_ptr, info_ptr, nb_pixel_row, nb_pixel_col, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+    
+    //Set text
+    png_text title_text;
+	title_text.compression = PNG_TEXT_COMPRESSION_NONE;
+	title_text.text = filename;
+	png_set_text(png_ptr, info_ptr, &title_text, 0);
+
+	png_write_info(png_ptr, info_ptr);
+
+	//Mémoire allouée pour une ligne de pixels (rgb => 3 bytes par pixel)
+	png_bytep row = (png_bytep) png_malloc(png_ptr, 3*nb_pixel_row*sizeof(png_byte));
+
+
+	float pw = width / nb_pixel_row;
+	float ph = height / nb_pixel_col;
+	for (int i=0; i<nb_pixel_row; i++)
+	{
+		for (int j=0; j<nb_pixel_col; j++)
+		{
+			Vector3f Pij(i*pw, j*ph, 0); //point de la grille par laquelle on regarde
+			Ray3f camera_to_grid(camera_.position(), Pij-camera_.position());
+
+			row[3*i] = 0;
+			row[3*i + 1] = 0;
+			row[3*i + 2] = 0;
+
+			for (int k=0; k<nb_shapes; k++)
+			{
+				if (shapes_[k]->is_hit(camera_to_grid))
+				{
+					row[3*i] = shapes_[k]->matter().r();
+					row[3*i + 1] = shapes_[k]->matter().g();
+					row[3*i + 2] = shapes_[k]->matter().b();
+				}
+			}
+		}
+
+		png_write_row(png_ptr, row);
+	}
+
+	png_write_end(png_ptr, NULL);
+
+	fclose(f);
 }
 
 
diff --git a/scene.h b/scene.h
index 5762f80..bc4f16d 100644
--- a/scene.h
+++ b/scene.h
@@ -21,7 +21,7 @@ class Scene
 		Shape* *shapes() const;
 		Ray3f source() const;
 
-		void render(int width, int height, const char* filename);
+		void render(int width, int height, int nb_pixel_row, int nb_pixel_col, int nb_shapes, char* filename);
 };
 
 
-- 
GitLab