diff --git a/TP_Geom3D_2018/Projet_modeling/main.cpp b/TP_Geom3D_2018/Projet_modeling/main.cpp index b1abfadd622d8a5f67957ac021850421a200e2ea..a12054f62113f0e04a2768aec17d08f7f1862847 100644 --- a/TP_Geom3D_2018/Projet_modeling/main.cpp +++ b/TP_Geom3D_2018/Projet_modeling/main.cpp @@ -19,7 +19,7 @@ const Vec3 NOIR = {0,0,0}; void draw_repere(const Primitives& prim, const Mat4& tr) { - prim.draw_sphere(tr, BLANC); + prim.draw_sphere(tr, BLANC); prim.draw_cylinder(tr*translate(1,0,0)* scale(2,0.5,0.5) * rotateY(90) , ROUGE); // X prim.draw_cylinder(tr*translate(0,1,0)* scale(0.5,2,0.5) * rotateX(90) , VERT); //Y prim.draw_cylinder(tr*translate(0,0,1) * scale(0.5,0.5,2) , BLEU); //Z @@ -32,73 +32,99 @@ void draw_repere(const Primitives& prim, const Mat4& tr) void star(MeshQuad& m) { - m.create_cube(); - float rot = 0 ; - for (int i = 0 ; i < 10 ; i++) + m.create_cube(); + + float rot = 0. ; + #pragma omp parallel for private(j) + for (int i = 0 ; i < 12 ; i++) for (int j = 0 ; j < 6 ; j++){ rot = 20 + 2*i ; m.extrude_quad(j*4) ; - m.shrink_quad(j*4,0.8) ; + m.shrink_quad(j*4,0.85) ; m.tourne_quad(j*4,rot) ; } - } + void spirale(MeshQuad& m) { + m.create_cube(); + #pragma omp parallel for + for(int i = 0 ; i < 250 ; i++) + { + m.transfo_quad(4,rotateX(10)*translate(0.11,0,0)*scale(0.99)) ; + m.extrude_quad(4) ; + } } +void test(MeshQuad& m ,int q, int n ) +{ + if(n > 0) + { + m.extrude_quad(q) ; + m.extrude_quad(q+16) ; + m.extrude_quad(q+8) ; + m.shrink_quad(q+4,0.85); + test(m,q+4,n-1) ; + } +} + +void shape1(MeshQuad& m ) +{ + m.create_cube() ; + test(m,4,3) ; +} int main(int argc, char *argv[]) { - Primitives prim; - int selected_quad = -1; - glm::mat4 selected_frame; - MeshQuad mesh; - - // init du viewer - QApplication a(argc, argv); - SimpleViewer::init_gl(); - SimpleViewer viewer({0.1,0.1,0.1},5); - - // GL init - viewer.f_init = [&] () - { - prim.gl_init(); - mesh.gl_init(); - }; - - // drawing - viewer.f_draw = [&] () - { - mesh.set_matrices(viewer.getCurrentModelViewMatrix(),viewer.getCurrentProjectionMatrix()); - prim.set_matrices(viewer.getCurrentModelViewMatrix(),viewer.getCurrentProjectionMatrix()); + Primitives prim; + int selected_quad = -1; + glm::mat4 selected_frame; + MeshQuad mesh; + + // init du viewer + QApplication a(argc, argv); + SimpleViewer::init_gl(); + SimpleViewer viewer({0.1,0.1,0.1},5); + + // GL init + viewer.f_init = [&] () + { + prim.gl_init(); + mesh.gl_init(); + }; + + // drawing + viewer.f_draw = [&] () + { + mesh.set_matrices(viewer.getCurrentModelViewMatrix(),viewer.getCurrentProjectionMatrix()); + prim.set_matrices(viewer.getCurrentModelViewMatrix(),viewer.getCurrentProjectionMatrix()); mesh.draw(CYAN); if (selected_quad>=0) { - //draw_repere(prim,selected_frame); - //std::cout << "selected is N° "<< selected_quad << std::endl; + draw_repere(prim,selected_frame); + std::cout << "selected is N° "<< selected_quad << std::endl; } - }; + }; Mat4 transfo =translate(0,1,0) ; - // to do when key pressed - viewer.f_keyPress = [&] (int key, Qt::KeyboardModifiers mod) - { - switch(key) - { - case Qt::Key_C: - if (!(mod & Qt::ControlModifier)) - mesh.create_cube(); - break; - - // e extrusion + // to do when key pressed + viewer.f_keyPress = [&] (int key, Qt::KeyboardModifiers mod) + { + switch(key) + { + case Qt::Key_C: + if (!(mod & Qt::ControlModifier)) + mesh.create_cube(); + break; + + // e extrusion case Qt::Key_E: if (!(mod & Qt::ControlModifier)) if (selected_quad >=0 ) mesh.extrude_quad(selected_quad) ; @@ -113,56 +139,58 @@ int main(int argc, char *argv[]) case Qt::Key_Minus: if (!(mod & Qt::ControlModifier)) - if (selected_quad - >=0 ) mesh.decale_quad(selected_quad,-1) ; + if (selected_quad >=0 ) mesh.decale_quad(selected_quad,-1) ; break ; - // z/Z shrink + // z/Z shrink case Qt::Key_Z: if (!(mod & Qt::ControlModifier)) if (selected_quad >=0 ) mesh.shrink_quad(selected_quad,0.5) ; break ; - // t/T tourne + // t/T tourne case Qt::Key_T: if (!(mod & Qt::ControlModifier)) if (selected_quad >=0 ) mesh.tourne_quad(selected_quad,1) ; break ; - // Attention au cas m_selected_quad == -1 - // generation d'objet - case Qt::Key_S: - star(mesh); - break; + // generation d'objet + case Qt::Key_S: + star(mesh); + break; - case Qt::Key_P: - spirale(mesh) ; - break; + case Qt::Key_P: + spirale(mesh) ; + break; + + case Qt::Key_1: + shape1(mesh) ; + break ; // .... + // Attention au cas m_selected_quad == -1 + default: + break; + } - default: - break; - } - - Vec3 sc; - float r; - mesh.bounding_sphere(sc,r); - viewer.setSceneCenter(qglviewer::Vec(sc[0],sc[1],sc[2])); - viewer.setSceneRadius(r); - viewer.camera()->centerScene(); - viewer.update(); - }; - - // to do when mouse clicked (P + Dir = demi-droite (en espace objet) orthogonale à l'écran passant par le point cliqué - viewer.f_mousePress3D = [&] (Qt::MouseButton /*b*/, const glm::vec3& P, const glm::vec3& Dir) - { - selected_quad = mesh.intersected_closest(P,Dir); - if (selected_quad>=0) - selected_frame = mesh.local_frame(selected_quad); + Vec3 sc; + float r; + mesh.bounding_sphere(sc,r); + viewer.setSceneCenter(qglviewer::Vec(sc[0],sc[1],sc[2])); + viewer.setSceneRadius(r); + viewer.camera()->centerScene(); + viewer.update(); + }; + + // to do when mouse clicked (P + Dir = demi-droite (en espace objet) orthogonale à l'écran passant par le point cliqué + viewer.f_mousePress3D = [&] (Qt::MouseButton /*b*/, const glm::vec3& P, const glm::vec3& Dir) + { + selected_quad = mesh.intersected_closest(P,Dir); + if (selected_quad>=0) + selected_frame = mesh.local_frame(selected_quad); //std::cout << selected_quad << std::endl; - }; + }; - viewer.clearShortcuts(); - viewer.setShortcut(QGLViewer::EXIT_VIEWER,Qt::Key_Escape); - viewer.show(); - return a.exec(); + viewer.clearShortcuts(); + viewer.setShortcut(QGLViewer::EXIT_VIEWER,Qt::Key_Escape); + viewer.show(); + return a.exec(); } diff --git a/TP_Geom3D_2018/Projet_modeling/meshquad.cpp b/TP_Geom3D_2018/Projet_modeling/meshquad.cpp index 449640595f6be4eaf38125cd9d5df9f9812ff535..f603e6987bad2fb8291460bdd4633a9ea207cab5 100644 --- a/TP_Geom3D_2018/Projet_modeling/meshquad.cpp +++ b/TP_Geom3D_2018/Projet_modeling/meshquad.cpp @@ -3,8 +3,10 @@ #include <iostream> #include <vector> #include <algorithm> +#include <omp.h> using namespace std; + void MeshQuad::clear() { m_points.clear(); @@ -25,6 +27,7 @@ void MeshQuad::add_quad(int i1, int i2, int i3, int i4) m_quad_indices.push_back(i2); m_quad_indices.push_back(i3); m_quad_indices.push_back(i4); + m_nb_ind_edges += 4; } @@ -35,7 +38,9 @@ void MeshQuad::convert_quads_to_tris(const std::vector<int>& quads, std::vector< // Pour chaque quad on genere 2 triangles // Attention a repecter l'orientation des triangles - for (size_t i=0; i<quads.size(); i+=4) { + + #pragma omp parallel for + for (size_t i=0; i< quads.size(); i+=4) { int v1 = quads.at(i); int v2 = quads.at(i+1); int v3 = quads.at(i+2); @@ -55,11 +60,15 @@ void MeshQuad::convert_quads_to_edges(const std::vector<int>& quads, std::vector { edges.clear(); edges.reserve(quads.size()); // ( *2 /2 !) + // Pour chaque quad on genere 4 aretes, 1 arete = 2 indices. // Mais chaque arete est commune a 2 quads voisins ! // Comment n'avoir qu'une seule fois chaque arete ? - size_t i, max_quads = quads.size(); - for (i = 0; i < max_quads; i+=4) { + + size_t i, nb_quads = quads.size(); + + #pragma omp parallel for + for (i = 0; i < nb_quads; i+=4) { int i1 = quads.at(i); int i2 = quads.at(i+1); int i3 = quads.at(i+2); @@ -87,16 +96,20 @@ void MeshQuad::convert_quads_to_edges(const std::vector<int>& quads, std::vector void MeshQuad::bounding_sphere(Vec3& C, float& R) { - size_t i; - for (i = 0; i < m_points.size(); i++) { + size_t i , nb_points = m_points.size(); + + #pragma omp parallel for reduction(+:C) + for (i = 0; i < nb_points; i++) { C += m_points.at(i); } - C /= m_points.size(); - float max = glm::length(m_points.at(0) - C); - for (i = 1; i < m_points.size(); i++) { - float tmp = glm::length(m_points.at(i) - C); - if (tmp > max) { - max = tmp; + C /= nb_points; + + float temp ,max = glm::length(m_points.at(0) - C); + + for (i = 1; i < nb_points; i++) { + temp = glm::length(m_points.at(i) - C); + if (temp > max) { + max = temp; } } R = max; @@ -106,23 +119,25 @@ void MeshQuad::bounding_sphere(Vec3& C, float& R) void MeshQuad::create_cube() { clear(); - // ajouter 8 sommets (-0.5 +0.5) - int i1 = add_vertex(Vec3(-0.35,0.35,0.35)); - int i2 = add_vertex(Vec3(-0.35,-0.35,0.35)); - int i3 = add_vertex(Vec3(0.35,-0.35,0.35)); - int i4 = add_vertex(Vec3(0.35,0.35,0.35)); - int i5 = add_vertex(Vec3(-0.35,0.35,-0.35)); - int i6 = add_vertex(Vec3(-0.35,-0.35,-0.35)); - int i7 = add_vertex(Vec3(0.35,-0.35,-0.35)); - int i8 = add_vertex(Vec3(0.35,0.35,-0.35)); + float s = 0.7 ; + + // ajouter 8 sommets (-1 +1) + int i1 = add_vertex(Vec3(-s,s,s)); + int i2 = add_vertex(Vec3(-s,-s,s)); + int i3 = add_vertex(Vec3(s,-s,s)); + int i4 = add_vertex(Vec3(s,s,s)); + int i5 = add_vertex(Vec3(-s,s,-s)); + int i6 = add_vertex(Vec3(-s,-s,-s)); + int i7 = add_vertex(Vec3(s,-s,-s)); + int i8 = add_vertex(Vec3(s,s,-s)); // ajouter 6 faces (sens trigo) - add_quad(i1,i2,i3,i4); - add_quad(i4,i3,i7,i8); - add_quad(i8,i7,i6,i5); add_quad(i5,i6,i2,i1); add_quad(i2,i6,i7,i3); add_quad(i1,i4,i8,i5); + add_quad(i1,i2,i3,i4); + add_quad(i4,i3,i7,i8); + add_quad(i8,i7,i6,i5); gl_update(); } @@ -132,16 +147,12 @@ Vec3 MeshQuad::normal_of(const Vec3& A, const Vec3& B, const Vec3& C) // Attention a l'ordre des points ! // le produit vectoriel n'est pas commutatif U ^ V = - V ^ U // ne pas oublier de normaliser le resultat. - //Produit vectoriel(Vec(AB),Vec(BC)) - Vec3 AB, AC, total, n; - AB = B - A; - AC = C - A; - total = glm::cross(AB, AC); - n = glm::normalize(total); - return n; -} -float MeshQuad::calcul_aire(int q) + Vec3 normal = glm::cross(B - A, C - A); + return glm::normalize(normal); + } + +float MeshQuad::quad_aire(int q) { int v1, v2, v3, v4; v1 = m_quad_indices.at(q); @@ -155,13 +166,15 @@ float MeshQuad::calcul_aire(int q) C = m_points.at(v3); D = m_points.at(v4); - float triAire1, triAire2, aire; - //Aire triangle ABC et Aire triangle ACD - triAire1 = glm::length(glm::cross(B - A, C - A)); - triAire2 = glm::length(glm::cross(C - A, D - A)); - //L'aire du quad est la somme des 2 aires - aire = triAire1 + triAire2; - return aire; + float a1 , a2; + + // Aire triangle ABC + a1 = glm::length(glm::cross(B - A, C - A))/2; + + // Aire triangle ACD + a2 = glm::length(glm::cross(C - A, D - A))/2; + + return a1 + a2; } @@ -170,7 +183,7 @@ bool MeshQuad::is_points_in_quad(const Vec3& P, const Vec3& A, const Vec3& B, co // On sait que P est dans le plan du quad. // P est-il au dessus des 4 plans contenant chacun la normale au quad et une arete AB/BC/CD/DA ? // si oui il est dans le quad - float res = -1, d = 0; + Vec3 n1, n2, n3, n4, n, AB, BC, CD, DA; n = normal_of(A, B, C); AB = B - A; @@ -178,37 +191,26 @@ bool MeshQuad::is_points_in_quad(const Vec3& P, const Vec3& A, const Vec3& B, co CD = D - C; DA = A - D; - //Plan AB + // AB n1 = glm::cross(n, AB); - d = glm::dot(n1, A); - res = glm::dot(n1, P) - d; - if (res < 0) { + if (glm::dot(n1, P) - glm::dot(n1, A) < 0) return false; - } - //Plan BC + // BC n2 = glm::cross(n, BC); - d = glm::dot(n2, B); - res = glm::dot(n2, P) - d; - if (res < 0) { + if ( glm::dot(n2, P) - glm::dot(n2, B) < 0) return false; - } - //Plan CD + // CD n3 = glm::cross(n, CD); - d = glm::dot(n3, C); - res = glm::dot(n3, P) - d; - if (res < 0) { + if (glm::dot(n3, P) - glm::dot(n3, C) < 0) return false; - } - //Plan DA + // DA n4 = glm::cross(n, DA); - d = glm::dot(n4, D); - res = glm::dot(n4, P) - d; - if (res < 0) { + if (glm::dot(n4, P) - glm::dot(n4, D)< 0) return false; - } + return true; } @@ -220,21 +222,25 @@ bool MeshQuad::intersect_ray_quad(const Vec3& P, const Vec3& Dir, int q, Vec3& i i2 = m_quad_indices.at(q+1); i3 = m_quad_indices.at(q+2); i4 = m_quad_indices.at(q+3); + // recuperation des points Vec3 A, B, C, D; A = m_points.at(i1); B = m_points.at(i2); C = m_points.at(i3); D = m_points.at(i4); + // calcul de l'equation du plan (N+d) Vec3 n = normal_of(A, B, C); - float d = glm::dot(n, A); //Produit scalaire normal et p1 pour trouver d + float d = glm::dot(n, A); // calcul de l'intersection rayon plan float alpha = (d - glm::dot(n, P)) / glm::dot(n, Dir); + // I = P + alpha*Dir est dans le plan => calcul de alpha // alpha => calcul de I inter = P + alpha*Dir; + // I dans le quad ? return is_points_in_quad(inter, A, B, C, D); } @@ -245,29 +251,40 @@ int MeshQuad::intersected_closest(const Vec3& P, const Vec3& Dir) // on parcours tous les quads // on teste si il y a intersection avec le rayon // on garde le plus proche (de P) - int inter = -1; - Vec3 intersection = Vec3(); - bool first = true; - float temp; - int i; - int max_quads = static_cast<int>(m_quad_indices.size()); - for (i = 0; i < max_quads; i+=4) { - if (intersect_ray_quad(P, Dir, i, intersection)) { - if (first) { - temp = glm::length(P - intersection); - inter = i; - first = false; + + int i, index = -1; + Vec3 intersector = Vec3(); + bool existe = false; + float min ,temp ; + + int nb_quads = m_quad_indices.size(); + + // Chercher l'indice de la premiere intersection + #pragma omp parallel for + for (i = 0; i < nb_quads; i += 4) { + if (intersect_ray_quad(P, Dir, i, intersector)) { + min = glm::length(P - intersector); + index = i; + existe = true ; } - else { - float test = glm::length(P - intersection); - if (test < temp) { - inter = i; - temp = test; - } + } + // S'il y'a au moins une intersection + if(existe) + { + #pragma omp parallel for + for (i = 0; i < nb_quads; i += 4){ + if (intersect_ray_quad(P, Dir, i, intersector)) + { + temp = glm::length(P - intersector); + if (temp < min) { + index = i; + min = temp; + } } } } - return inter; + + return index; } @@ -289,32 +306,35 @@ Mat4 MeshQuad::local_frame(int q) i4 = m_quad_indices.at(q+3); // recuperation des points - Vec3 A, B, C, D, AB, AC; + Vec3 A, B, C, D, AB; A = m_points.at(i1); B = m_points.at(i2); C = m_points.at(i3); D = m_points.at(i4); AB = B - A; - AC = C - A; // calcul de Z:N / X:AB -> Y - Vec3 X, Y, Z, nTri1, nTri2; - nTri1 = normal_of(A, B, C); - nTri2 = normal_of(A, C, D); - Z = glm::normalize((nTri1+nTri2)/2.0f); - X = glm::normalize(glm::cross(A - B, Z)); + Vec3 X, Y, Z, n; + + n = normal_of(A, B, C) + normal_of(A, C, D); + n /= 2 ; + + Z = glm::normalize(n); + X = glm::normalize(glm::cross(AB, Z)); Y = glm::normalize(glm::cross(X, Z)); // calcul du centre - Vec3 center = (A + B + C + D)/4.0f; + Vec3 center = (A + B + C + D); + center /= 4 ; // calcul de la taille float taille = glm::length(AB)/2; // calcul de la matrice - Mat4 res = Mat4(Vec4(X, 0), Vec4(Y, 0), Vec4(Z, 0), Vec4(center, 1)); - res *= scale(taille); - return res; + Mat4 result = Mat4(Vec4(X, 0), Vec4(Y, 0), Vec4(Z, 0), Vec4(center, 1)); + result *= scale(taille); + + return result; } @@ -328,38 +348,45 @@ void MeshQuad::extrude_quad(int q) i4 = m_quad_indices.at(q+3); // recuperation des points - Vec3 A, B, C, D, AB, AC; + Vec3 A, B, C, D; A = m_points.at(i1); B = m_points.at(i2); C = m_points.at(i3); D = m_points.at(i4); - AB = B - A; - AC = C - A; + + // calcul de la normale Vec3 n = normal_of(A, B, C); + // calcul de la hauteur - float longueur = sqrt(calcul_aire(q)); + float longueur = sqrt(quad_aire(q)); + // calcul et ajout des 4 nouveaux points Vec3 p1, p2, p3, p4; - int v1, v2, v3, v4; p1 = A + n * longueur; p2 = B + n * longueur; p3 = C + n * longueur; p4 = D + n * longueur; + + int v1, v2, v3, v4; v1 = add_vertex(p1); v2 = add_vertex(p2); v3 = add_vertex(p3); v4 = add_vertex(p4); + // on remplace le quad initial par le quad du dessu m_quad_indices.at(q) = v1; m_quad_indices.at(q+1) = v2; m_quad_indices.at(q+2) = v3; m_quad_indices.at(q+3) = v4; + // on ajoute les 4 quads des cotes add_quad(i1, i2, v2, v1); - add_quad(i2, i3, v3, v2); add_quad(i3, i4, v4, v3); add_quad(i4, i1, v1, v4); + add_quad(i2, i3, v3, v2); + + gl_update(); } @@ -381,19 +408,21 @@ void MeshQuad::transfo_quad(int q, const glm::mat4& tr) // generation de la matrice de transfo globale: // indice utilisation de glm::inverse() et de local_frame - Mat4 pos = local_frame(q); + Mat4 local = local_frame(q); - float det = glm::determinant(pos); - if (det == 0) { + if (glm::determinant(local) == 0) { return; } - Mat4 transfo = pos * tr * glm::inverse(pos); + Mat4 transfo = local * tr * glm::inverse(local); + // Application au 4 points du quad Vec4 A_prime, B_prime, C_prime, D_prime; + A = Vec3(transfo * Vec4(A, 1)); B = Vec3(transfo * Vec4(B, 1)); C = Vec3(transfo * Vec4(C, 1)); D = Vec3(transfo * Vec4(D, 1)); + gl_update(); } @@ -401,6 +430,7 @@ void MeshQuad::decale_quad(int q, float d) { Mat4 transfo = translate(0, 0, d); transfo_quad(q, transfo); + gl_update(); } @@ -408,6 +438,7 @@ void MeshQuad::shrink_quad(int q, float s) { Mat4 transfo = scale(s); transfo_quad(q, transfo); + gl_update(); } @@ -415,13 +446,11 @@ void MeshQuad::tourne_quad(int q, float a) { Mat4 transfo = rotateZ(a) ; transfo_quad(q, transfo); + gl_update(); } - - - MeshQuad::MeshQuad(): m_nb_ind_edges(0) {} diff --git a/TP_Geom3D_2018/Projet_modeling/meshquad.h b/TP_Geom3D_2018/Projet_modeling/meshquad.h index 20943fceb174fbb0b285fcf707c544cca8ae9601..c1494dad0c4df7d1d282f6d9ec15faf9af8c1f4c 100644 --- a/TP_Geom3D_2018/Projet_modeling/meshquad.h +++ b/TP_Geom3D_2018/Projet_modeling/meshquad.h @@ -10,7 +10,8 @@ class MeshQuad { -protected: +public: + /// Points std::vector<Vec3> m_points; /// indice de quads @@ -18,7 +19,6 @@ protected: /// nombre d'aretes int m_nb_ind_edges; -public: inline int nb_quads() const { return m_quad_indices.size()/4;} @@ -29,9 +29,8 @@ public: */ void clear(); - float triAire(const Vec3& P, const Vec3& A, const Vec3& B) ; - float calcul_aire(int q) ; -/** + + /** * @brief ajoute un sommet * @param P sommet * @return l'indice du sommet @@ -91,7 +90,7 @@ public: * @return l'aire du quad */ - //float calcul_aire(Vec3 p1,Vec3 p2,Vec3 p3,Vec3 p4); + float quad_aire(int q) ; /** * @brief Determine si P est dans le quad A,B,C,D (P considéré ~ dans le plan ABCD) diff --git a/TP_Geom3D_2018/bin/proj_model.exe b/TP_Geom3D_2018/bin/proj_model.exe index 7185bce1b5d402675a4fe23fada2694ba8843058..73e179ff3626880832142170af7c42c67da42d76 100644 Binary files a/TP_Geom3D_2018/bin/proj_model.exe and b/TP_Geom3D_2018/bin/proj_model.exe differ diff --git a/TP_Geom3D_2018/bin/proj_model.ilk b/TP_Geom3D_2018/bin/proj_model.ilk index 911f7b4df0a72ae7716e96ddce6edb0bf2ce3f4a..3302f40956bbf72742a51da1f267ef076799fb51 100644 Binary files a/TP_Geom3D_2018/bin/proj_model.ilk and b/TP_Geom3D_2018/bin/proj_model.ilk differ diff --git a/TP_Geom3D_2018/bin/proj_model.pdb b/TP_Geom3D_2018/bin/proj_model.pdb index e5bf9da95bbd5ab05b0635c3d3ea4897f82ede7f..0b66bd9af84f080c5e6a2d4bc6252a83a81ea516 100644 Binary files a/TP_Geom3D_2018/bin/proj_model.pdb and b/TP_Geom3D_2018/bin/proj_model.pdb differ diff --git a/TP_Geom3D_2018/geom3D.pro.user b/TP_Geom3D_2018/geom3D.pro.user index ddceba7f6bcdac6e3126c08ece2f4926c155f9de..4d935056bc8477ad8f2dbc0a2193984d3cd3f87c 100644 --- a/TP_Geom3D_2018/geom3D.pro.user +++ b/TP_Geom3D_2018/geom3D.pro.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.11.1, 2020-03-17T00:37:07. --> +<!-- Written by QtCreator 4.11.1, 2020-04-02T14:43:58. --> <qtcreator> <data> <variable>EnvironmentId</variable> diff --git a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/main.obj b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/main.obj index 0140e409764d7fb98b34bd669a727595c14428cd..459e124526787fefe2bd50f490577dee86ab21df 100644 Binary files a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/main.obj and b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/main.obj differ diff --git a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/meshquad.obj b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/meshquad.obj index e2e24ec4cfe52c531d7bc732f29138725c9d577d..4dc4da8bc2be4784409eac6b63dd6a531f3c4621 100644 Binary files a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/meshquad.obj and b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/meshquad.obj differ diff --git a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/primitives.obj b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/primitives.obj index a2ac973988516b8bd606eaa7d8016debe8a1f700..c7cc3e4b9b9cbac13591f7f7b10c840d869e8cad 100644 Binary files a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/primitives.obj and b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/primitives.obj differ diff --git a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/proj_model.vc.pdb b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/proj_model.vc.pdb index 7994324ade10a3efec18c4ec27a30c5e0f9ded5f..0abd5eb4309ecc69004f4c5c40e294e4fefd20dc 100644 Binary files a/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/proj_model.vc.pdb and b/build-geom3D-Desktop_Qt_5_14_1_MSVC2017_32bit-Debug/Projet_modeling/debug/proj_model.vc.pdb differ